|
|
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) |
|
|
|
|
|
|