Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from src.utils.search_docs_utils import search_relevant_documents | |
| from src.rag.documents_rag_pipeline import RAGPipeline | |
| # Charger les 25 questions depuis le fichier texte | |
| with open("docs/questions_rag_test.txt", encoding="utf-8") as f: | |
| questions_list = f.read() | |
| def rag_answer(query, top_k_docs=5, top_k_chunks=5): | |
| result = search_relevant_documents(query, top_k=top_k_docs) | |
| docs = result.get('documents', []) if 'documents' in result else result.get('results', []) | |
| rag_pipeline = RAGPipeline() | |
| print(f'docs : {docs}') | |
| top_chunks = rag_pipeline.get_top_docs_chunks_for_query(query, docs) | |
| answer = rag_pipeline.generate(query, top_chunks) | |
| # Format docs and chunks for display | |
| docs_str = '\n\n'.join([f"- {doc.get('Nom du document', doc.get('pdf_title', ''))} ({doc.get('Lien', doc.get('pdf_link', ''))})" for doc in docs]) | |
| chunks_str = '\n---\n'.join([chunk['text'] for chunk in top_chunks]) | |
| return answer, docs_str, chunks_str | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# RAG QA Demo\nPosez votre question sur les documents marocains !") | |
| with gr.Row(): | |
| with gr.Column(scale=3): | |
| question = gr.Textbox(label="Votre question", lines=2) | |
| with gr.Row(): | |
| top_k_docs = gr.Slider(1, 10, value=5, step=1, label="Top K Documents") | |
| top_k_chunks = gr.Slider(1, 20, value=10, step=1, label="Top K Chunks") | |
| submit = gr.Button("Générer la réponse") | |
| answer = gr.Textbox(label="Réponse générée", lines=5) | |
| docs = gr.Textbox(label="Documents pertinents", lines=5) | |
| chunks = gr.Textbox(label="Chunks utilisés", lines=5) | |
| submit.click(rag_answer, inputs=[question, top_k_docs, top_k_chunks], outputs=[answer, docs, chunks]) | |
| with gr.Column(scale=2): | |
| gr.Markdown("""### Questions de test (copier-coller) | |
| ```text | |
| """ + questions_list + """ | |
| ``` | |
| """) | |
| demo.launch(share=True) |