Spaces:
Sleeping
Sleeping
File size: 2,649 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 2915431 7382d6a 48a4d7a 30e0ca1 48a4d7a e257575 90563da 48a4d7a e257575 7382d6a 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 74 75 76 77 78 79 80 |
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 uma, seus critérios de julgamento são:
1. Pertinência
2. Objetividade
3. Veracidade
Pergunta: {user_input}
Resposta 1: {response1}
Resposta 2: {response2}
Indique qual resposta é melhor (Resposta 1 ou Resposta 2) e explique brevemente sua escolha, tambêm faça um breve resumo bem objetivo da resposta selecionada
Use linguagem clara e objetiva.
Não utilize negrito, itálico ou qualquer formatação como **asteriscos** ou _sublinhados_.
Apenas texto puro.
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() |