import gradio as gr from langgraphe_app import app # importe ton graphe déjà compilé 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): # """Fonction helper pour lancer une recherche""" # inputs = {"messages": [("user", user_query)]} # print_stream(app.stream(inputs, stream_mode="values")) 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 # on lit le stream mais on n'affiche pas dans le terminal for s in stream: last_state = s # le message final final_message = last_state["messages"][-1] # Retourne le texte pour l’UI Gradio 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) # demo.launch(debug=True, share=True) demo.launch(debug=True) # p-:8P^AduGVf2hU