CachoeiraBot / app.py
EduuGomes's picture
Update app.py
90563da verified
raw
history blame
2.36 kB
import os
import requests
import gradio as gr
API_KEY = os.environ.get("OPENROUTER_API_KEY")
if not API_KEY:
raise ValueError("OPENROUTER_API_KEY não definida nos secrets!")
API_URL = "https://openrouter.ai/api/v1/chat/completions"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
MODEL_1 = "meta-llama/llama-3.2-1b-instruct:free"
MODEL_2 = "mistralai/mistral-7b-instruct:free"
MODEL_3 = "google/gemma-2-9b-it:free"
def call_model(model_name, messages):
payload = {
"model": model_name,
"messages": messages,
"max_tokens": 512,
"temperature": 0.7,
"top_p": 0.95
}
try:
response = requests.post(API_URL, headers=HEADERS, json=payload)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"].strip()
except Exception as e:
return f"Erro no modelo {model_name}: {str(e)}"
def generate_and_judge(user_input):
system_prompt = {"role": "system", "content": "Você é um assistente útil e objetivo."}
user_msg = {"role": "user", "content": user_input}
messages = [system_prompt, user_msg]
response1 = call_model(MODEL_1, messages)
response2 = call_model(MODEL_2, messages)
judge_prompt = f"""
Você é um avaliador imparcial. Dadas duas respostas para a mesma pergunta, escolha a melhor.
Pergunta: {user_input}
Resposta 1: {response1}
Resposta 2: {response2}
Indique qual resposta é melhor (Resposta 1 ou Resposta 2) e explique brevemente sua escolha.
Resposta:
"""
judgment_msg = [{"role": "system", "content": "Você é um avaliador objetivo."},
{"role": "user", "content": judge_prompt}]
judgment = call_model(MODEL_3, judgment_msg)
return response1, response2, judgment
with gr.Blocks() as demo:
gr.Markdown("## 💡 Comparador de Respostas com 3 LLMs")
user_input = gr.Textbox(label="Digite sua pergunta")
generate_button = gr.Button("Gerar e Avaliar")
with gr.Row():
response1_out = gr.Textbox(label="Resposta LLM 1")
response2_out = gr.Textbox(label="Resposta LLM 2")
judgment_out = gr.Textbox(label="🔎 Julgamento Final")
generate_button.click(generate_and_judge, inputs=user_input,
outputs=[response1_out, response2_out, judgment_out])
demo.launch()