File size: 2,825 Bytes
66ff3e9
 
8658e51
b944409
 
991d86a
2a864c8
66ff3e9
991d86a
 
 
2a23908
 
 
 
 
c1a4bd7
 
 
 
 
991d86a
 
33d5d58
305a1a4
 
 
e2cb2fa
4cb67db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4394f5b
4cb67db
 
6af8cf1
4cb67db
e2cb2fa
4cb67db
 
33d5d58
4cb67db
33d5d58
 
e2cb2fa
 
33d5d58
6af8cf1
b3c9596
e2cb2fa
 
 
 
 
 
a3e401d
e2cb2fa
 
 
a3e401d
 
e2cb2fa
 
 
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
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

# 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"),
        gr.Textbox(label="History", placeholder="Interaction history will be shown here", lines=10, interactive=False),
        gr.State()  # History needs to be output as well
    ],
    title="Chat with OpenRouter Models"
)

iface.launch()