# main.py import streamlit as st import asyncio from crew_utils import ( ExposeCrew, project_manager, planner, researcher_intro, researcher_dev, researcher_conclusion, assembler, create_plan_task, compile_report_task, llm, ) from crewai import Agent, Crew, Process, Task async def run_crew(topic): """Exécute le crew pour générer l'exposé.""" crew = ExposeCrew( agents=[project_manager, planner, researcher_intro, researcher_dev, researcher_conclusion, assembler], tasks=[create_plan_task, compile_report_task], process=Process.hierarchical, manager_llm=llm, verbose=True, ) result = await crew.kickoff(inputs={"topic": topic}) return result # Interface Streamlit st.title("Générateur d'Exposés avec CrewAI") topic = st.text_input("Entrez le thème de l'exposé :") if st.button("Générer l'exposé"): if not topic: st.error("Veuillez entrer un thème pour l'exposé.") else: with st.spinner("Création de l'exposé en cours..."): try: # Exécuter le crew de manière asynchrone result = asyncio.run(run_crew(topic)) st.success("Exposé généré avec succès!") # Téléchargement du fichier PDF with open("expose.pdf", "rb") as file: st.download_button( label="Télécharger l'exposé en PDF", data=file, file_name="expose.pdf", mime="application/pdf" ) except Exception as e: st.error(f"Une erreur s'est produite : {e}")