File size: 2,899 Bytes
b7f426b 7e42f7f b7f426b 7e42f7f 9176bca 016c388 725f763 7e42f7f 016c388 042d9eb 016c388 9176bca 016c388 9176bca 016c388 b7f426b 9176bca 016c388 9176bca 725f763 016c388 042d9eb a2dcfac 9176bca b7f426b 9176bca a2dcfac 9176bca 725f763 9176bca b7f426b 9176bca b7f426b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import os
import gradio as gr
from huggingface_hub import InferenceClient
# Setup clients for each provider
llama_client = InferenceClient(provider="sambanova", api_key=os.environ["HF_TOKEN"])
minimax_client = InferenceClient(provider="novita", api_key=os.environ["HF_TOKEN"])
mistral_client = InferenceClient(provider="together", api_key=os.environ["HF_TOKEN"])
def chat_with_model(model_choice, prompt, image_url):
if not prompt:
return "Please enter a text prompt."
try:
# LLaMA 4 supports optional image input
if model_choice == "LLaMA 4 (SambaNova)":
content = [{"type": "text", "text": prompt}]
if image_url:
content.append({
"type": "image_url",
"image_url": {"url": image_url}
})
messages = [{"role": "user", "content": content}]
completion = llama_client.chat.completions.create(
model="meta-llama/Llama-4-Maverick-17B-128E-Instruct",
messages=messages
)
return completion.choices[0].message.content
# MiniMax: Text only
elif model_choice == "MiniMax M1 (Novita)":
messages = [{"role": "user", "content": prompt}]
completion = minimax_client.chat.completions.create(
model="MiniMaxAI/MiniMax-M1-80k",
messages=messages
)
return completion.choices[0].message.content
# Mistral: Text only
elif model_choice == "Mistral Mixtral-8x7B (Together)":
messages = [{"role": "user", "content": prompt}]
completion = mistral_client.chat.completions.create(
model="mistralai/Mixtral-8x7B-Instruct-v0.1",
messages=messages
)
return completion.choices[0].message.content
else:
return "Unsupported model selected."
except Exception as e:
return f"Error: {e}"
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## 🤖 Unified Chatbot Interface")
gr.Markdown("Supports LLaMA 4 (with optional image), MiniMax, and Mistral.")
model_dropdown = gr.Dropdown(
choices=[
"LLaMA 4 (SambaNova)",
"MiniMax M1 (Novita)",
"Mistral Mixtral-8x7B (Together)"
],
value="LLaMA 4 (SambaNova)",
label="Select Model"
)
prompt_input = gr.Textbox(label="Text Prompt", placeholder="Ask something...", lines=2)
image_url_input = gr.Textbox(label="Optional Image URL (for LLaMA only)", placeholder="https://example.com/image.jpg")
submit_btn = gr.Button("Generate Response")
output_box = gr.Textbox(label="Response", lines=8)
submit_btn.click(
fn=chat_with_model,
inputs=[model_dropdown, prompt_input, image_url_input],
outputs=output_box
)
demo.launch()
|