|
import ollama |
|
import gradio as gr |
|
from utils.rag_retriever import inicializar_rag, buscar_contexto |
|
|
|
print("Inicializando...") |
|
|
|
|
|
def gerar_resposta_custom(frase_entrada, prompt_custom, documentos, index, embedder): |
|
"""Gera uma resposta baseada no contexto recuperado e um prompt customizável.""" |
|
contextos_com_distancia = buscar_contexto(frase_entrada, documentos, index, embedder) |
|
|
|
contexto = [texto for _, texto, _ in contextos_com_distancia] |
|
contexto_str = "\n".join(contexto) |
|
|
|
|
|
prompt = prompt_custom.replace("{{context}}", contexto_str).replace("{{frase_entrada}}", frase_entrada) |
|
|
|
|
|
print("\n--- Prompt Gerado ---") |
|
print(prompt) |
|
print("--- Fim do Prompt ---") |
|
|
|
resposta = ollama.generate(model='gemma3:1b', prompt=prompt) |
|
return contexto_str, resposta['response'] |
|
|
|
|
|
def interface_rag_alternativa(frase_entrada, prompt_custom): |
|
"""Função chamada pela interface Gradio alternativa.""" |
|
contexto, resposta = gerar_resposta_custom(frase_entrada, prompt_custom, documentos, index, embedder) |
|
return contexto, resposta |
|
|
|
|
|
print("Inicializando RAG...") |
|
documentos, index, embedder = inicializar_rag() |
|
|
|
|
|
prompt_padrao = """ |
|
Com base no seguinte contexto: |
|
{{context}} |
|
|
|
Responda à seguinte pergunta: |
|
{{frase_entrada}} |
|
""" |
|
|
|
|
|
with gr.Blocks() as interface_alternativa: |
|
with gr.Column(scale=1): |
|
frase_entrada_input = gr.Textbox(label="Frase de Entrada", placeholder="Ex.: O que é função puberal?") |
|
prompt_input = gr.Textbox(label="Prompt Customizado", value=prompt_padrao, lines=10) |
|
botao_enviar = gr.Button("Enviar") |
|
with gr.Column(scale=1): |
|
contexto_output = gr.Textbox(label="Contexto Recuperado") |
|
resposta_output = gr.Textbox(label="Resposta da LLM") |
|
|
|
botao_enviar.click( |
|
fn=interface_rag_alternativa, |
|
inputs=[frase_entrada_input, prompt_input], |
|
outputs=[contexto_output, resposta_output] |
|
) |
|
|
|
|
|
print("Gerando Interface Alternativa...") |
|
interface_alternativa.launch(share=True) |
|
|