| import gradio as gr |
| from langgraphe_app import app |
|
|
|
|
|
|
| def print_stream(stream): |
| """Affiche le flux de messages de manière lisible""" |
| print("\n" + "="*60) |
| for s in stream: |
| message = s["messages"][-1] |
| if hasattr(message, 'pretty_print'): |
| message.pretty_print() |
| else: |
| print(message) |
| print("-"*60) |
|
|
| |
| |
| |
| |
|
|
| def run_research(user_query: str) -> str: |
| """Exécute le graphe et renvoie le texte final pour Gradio.""" |
| |
| inputs = {"messages": [("user", user_query)]} |
| stream = app.stream(inputs, stream_mode="values") |
|
|
| last_state = None |
|
|
| |
| for s in stream: |
| last_state = s |
|
|
| |
| final_message = last_state["messages"][-1] |
|
|
| |
| try: |
| return final_message.content |
| except: |
| return str(final_message) |
|
|
|
|
| with gr.Blocks(title="AI Research Assistant") as demo: |
| gr.Markdown("# 🔍 AI Research Assistant\nPipeline LangGraph pour la recherche automatisée") |
| |
| input_box = gr.Textbox( |
| label="Votre sujet de recherche", |
| placeholder="Ex : Impact de l'IA sur le marché du travail" |
| ) |
| |
| output_box = gr.TextArea( |
| label="Rapport généré", |
| lines=20 |
| ) |
| |
| run_button = gr.Button("Lancer la recherche") |
| run_button.click(run_research, inputs=input_box, outputs=output_box) |
|
|
| if __name__ == "__main__": |
| demo.launch(server_name="0.0.0.0", server_port=8000) |
|
|
| |