Spaces:
Sleeping
Sleeping
File size: 2,363 Bytes
e257575 a802c01 90563da e257575 48a4d7a 90563da e257575 90563da e257575 48a4d7a 90563da a802c01 90563da a802c01 90563da a802c01 d725876 90563da a802c01 90563da d725876 90563da 48a4d7a 90563da 48a4d7a e257575 90563da 48a4d7a e257575 90563da |
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 |
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() |