|
import gradio as gr |
|
import requests |
|
import json |
|
import os |
|
|
|
|
|
API_KEY = os.getenv("OpenRouter_API_KEY") |
|
|
|
|
|
MODEL_OPTIONS = [ |
|
"openai/gpt-4o-mini-2024-07-18", |
|
"meta-llama/llama-3.1-405b-instruct", |
|
"nvidia/llama-3.1-nemotron-70b-instruct", |
|
"qwen/qwen-2.5-7b-instruct", |
|
"mistralai/mistral-large-2411", |
|
"microsoft/phi-3-medium-128k-instruct", |
|
"meta-llama/llama-3.1-405b-instruct:free", |
|
"nousresearch/hermes-3-llama-3.1-405b:free", |
|
"mistralai/mistral-7b-instruct:free", |
|
"microsoft/phi-3-medium-128k-instruct:free", |
|
"liquid/lfm-40b:free" |
|
] |
|
|
|
def generate_text(input_text, selected_model, history): |
|
if history is None: |
|
history = "" |
|
|
|
response = requests.post( |
|
url="https://openrouter.ai/api/v1/chat/completions", |
|
headers={ |
|
"Authorization": f"Bearer {API_KEY}", |
|
"Content-Type": "application/json" |
|
}, |
|
data=json.dumps({ |
|
"model": selected_model, |
|
"messages": [{"role": "user", "content": input_text}], |
|
"top_p": 1, |
|
"temperature": 1, |
|
"frequency_penalty": 0, |
|
"presence_penalty": 0, |
|
"repetition_penalty": 1, |
|
"top_k": 0, |
|
}) |
|
) |
|
|
|
|
|
if response.status_code != 200: |
|
return f"Error: {response.status_code}, {response.text}", history |
|
|
|
|
|
try: |
|
response_json = response.json() |
|
generated_response = response_json.get("choices", [{}])[0].get("message", {}).get("content", "No content returned.") |
|
except json.JSONDecodeError: |
|
generated_response = "Error: Unable to parse response." |
|
|
|
|
|
history += f"Model: {selected_model}\nUser: {input_text}\nResponse: {generated_response}\n\n" |
|
|
|
return generated_response, history |
|
|
|
|
|
with gr.Blocks() as iface: |
|
|
|
gr.HTML(""" |
|
<style> |
|
#output-response, #output-history { |
|
height: 300px; |
|
overflow: auto; |
|
border: 1px solid #ddd; |
|
padding: 10px; |
|
} |
|
</style> |
|
""") |
|
|
|
input_text = gr.Textbox(lines=2, label="Input Text", placeholder="Enter your query here") |
|
selected_model = gr.Dropdown(choices=MODEL_OPTIONS, label="Select Model", value=MODEL_OPTIONS[0]) |
|
|
|
|
|
generate_button = gr.Button("Generate") |
|
|
|
output_response = gr.Textbox(label="Response", placeholder="Response will be shown here") |
|
output_history = gr.Textbox(label="History", placeholder="Interaction history will be shown here", lines=10, interactive=False) |
|
|
|
|
|
generate_button.click(generate_text, inputs=[input_text, selected_model, gr.State()], outputs=[output_response, output_history]) |
|
|
|
|
|
iface.launch() |
|
|