Spaces:
Sleeping
Sleeping
File size: 3,266 Bytes
66ff3e9 8658e51 b944409 991d86a 2a864c8 66ff3e9 991d86a 2a23908 c1a4bd7 991d86a 33d5d58 305a1a4 c482a7c 4cb67db 4394f5b 4cb67db c482a7c 4cb67db c482a7c 4cb67db 33d5d58 4cb67db 33d5d58 c482a7c 33d5d58 c482a7c b3c9596 dbe50a2 c482a7c dbe50a2 c482a7c dbe50a2 c482a7c 1ce6b5d b3c9596 |
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
import gradio as gr
import requests
import json
import os
# Retrieve the OpenRouter API Key from the Space secrets
API_KEY = os.getenv("OpenRouter_API_KEY")
# Define available models for selection
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 = "" # Initialize history if it's None
# Call the API to get the model response
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, # Use 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,
})
)
# Handle errors
if response.status_code != 200:
return f"Error: {response.status_code}, {response.text}", history, history
# Parse and generate the response
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."
# Append the new conversation to the history
history += f"User: {input_text}\nModel: {selected_model}\nResponse: {generated_response}\n\n"
return generated_response, history, history # Return three values
# Inject custom CSS directly into the Gradio interface for scrollbars
css = """
#response-output {
height: 150px;
overflow: auto;
border: 1px solid #ddd;
padding: 10px;
}
#history-output {
height: 300px;
overflow: auto;
border: 1px solid #ddd;
padding: 10px;
}
"""
# Create Gradio interface with a dropdown for model selection
iface = gr.Interface(
fn=generate_text,
inputs=[
gr.Textbox(lines=2, label="Input Text", placeholder="Enter your query here"),
gr.Dropdown(choices=MODEL_OPTIONS, label="Select Model", value=MODEL_OPTIONS[0]),
gr.State() # This is where we maintain the history state (input)
],
outputs=[
gr.Textbox(label="Response", placeholder="Response will be shown here", elem_id="response-output"),
gr.Textbox(label="History", placeholder="Interaction history will be shown here", lines=10, interactive=False, elem_id="history-output"),
gr.State() # History needs to be output as well
],
title="Chat with OpenRouter Models",
css=css # Apply the custom CSS here
)
iface.launch()
|