Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from rag import ingest_document | |
| from utils.rag_search import search_document | |
| from utils.llm import ask_llm | |
| from utils.vector_store import reset_collection | |
| document_loaded = False | |
| def upload_document(file): | |
| global document_loaded | |
| reset_collection() | |
| chunks = ingest_document(file.name) | |
| document_loaded = True | |
| return f"Documento indexado com {chunks} chunks" | |
| def chat(message, history): | |
| if not document_loaded: | |
| return "Primeiro faz upload de um documento." | |
| sources = search_document(message) | |
| answer = ask_llm(message, sources, history) | |
| # formatar resposta com fontes | |
| formatted_sources = "\n".join([ | |
| f"- {s['source']} (chunk {s['chunk_id']}) | score: {s['score']}" | |
| for s in sources | |
| ]) | |
| return f"""{answer} | |
| --- | |
| 📚 Fontes: | |
| {formatted_sources} | |
| """ | |
| with gr.Blocks() as app: | |
| gr.Markdown("# Local RAG Agent") | |
| upload = gr.File() | |
| upload_button = gr.Button("Indexar Documento") | |
| upload_status = gr.Textbox() | |
| upload_button.click( | |
| upload_document, | |
| inputs=upload, | |
| outputs=upload_status | |
| ) | |
| chatbot = gr.ChatInterface( | |
| fn=chat | |
| ) | |
| app.launch() |