giseldo's picture
Update app.py
98005d7 verified
from dotenv import load_dotenv
import gradio as gr
from openai import OpenAI
import os
load_dotenv() # Carregar variáveis de ambiente do arquivo .env
USUARIO = os.environ.get("USUARIO")
SENHA = os.environ.get("SENHA")
client = OpenAI()
def process_message(message, history, temperature=1.0, max_tokens=2048, top_p=1.0, model="gpt-4.1", system_prompt="", usuario_value="", senha_value=""):
if usuario_value == USUARIO and senha_value == SENHA:
# Verificar se já existe uma mensagem do sistema no início do histórico
system_message_exists = any(msg.get("role") == "system" for msg in history)
# Se não existir e o system_prompt não estiver vazio, adicionar no início do histórico
if not system_message_exists and system_prompt.strip():
history.insert(0, {"role": "system", "content": system_prompt})
history.append({"role": "user", "content": message})
# Filtrar o histórico e remover metadata e options
filtered_history = []
for msg in history:
if msg.get("role") in ["user", "system", "assistant"]:
# Criar novo dicionário apenas com role e content
filtered_msg = {
"role": msg["role"],
"content": msg["content"]
}
filtered_history.append(filtered_msg)
print(history)
response = client.responses.create(
model=model,
input=filtered_history, # Usando o histórico filtrado
text={
"format": {
"type": "text"
}
},
reasoning={},
tools=[
{
"type": "file_search",
"vector_store_ids": [
"vs_680171e31fcc8191937768624f4f4a18"
]
}
],
temperature=temperature, # Use as variáveis de parâmetros
max_output_tokens=max_tokens, # Corrigido de max_output_tokens para max_tokens
top_p=top_p,
store=True
)
# Atualize para obter o texto da resposta do objeto de resposta corretamente
history.append({"role": "assistant", "content": response.output_text})
return "", history
return "", history
with gr.Blocks() as interface:
with gr.Row():
with gr.Column():
history = gr.Chatbot(type='messages')
msg = gr.Textbox(label="Mensagem")
# clear = gr.Button("Limpar")
with gr.Column():
gr.Markdown("Para usar necessário digitar o usuário e senha")
usuario_txt = gr.Textbox(label="Usuario")
senha_txt = gr.Textbox(label="Senha", type="password")
system_prompt = gr.Textbox(
label="Prompt do Sistema",
value="Você é um assistente inteligente treinado para responder exclusivamente com base nas informações fornecidas nos documentos anexados (armazenados na base vetorial).\nNunca forneça respostas baseadas em conhecimento próprio, conhecimento geral, ou treinamento anterior.\nSe a resposta à pergunta não estiver clara ou presente nos documentos fornecidos, responda educadamente que você não tem essa informação.\n",
lines=3,
info="Define o comportamento base do assistente"
)
model = gr.Dropdown(
choices=["gpt-4.1"],
value="gpt-4.1",
label="Modelo",
info="Selecione o modelo de linguagem"
)
temperature = gr.Slider(
minimum=0.0,
maximum=2.0,
value=1.0,
step=0.1,
label="Temperatura",
info="Controla a aleatoriedade das respostas (0=focado, 2=criativo)"
)
max_tokens = gr.Slider(
minimum=256,
maximum=4096,
value=4096,
step=256,
label="Tokens máximos",
info="Limite máximo de tokens na resposta"
)
top_p = gr.Slider(
minimum=0.0,
maximum=1.0,
value=1.0,
step=0.1,
label="Top P",
info="Controla a diversidade das respostas"
)
msg.submit(process_message,
[msg, history, temperature, max_tokens, top_p, model, system_prompt, usuario_txt, senha_txt],
[msg, history])
# clear.click(lambda: None, None, history, queue=False)
if __name__ == "__main__":
interface.launch()