Spaces:
Sleeping
Sleeping
File size: 3,777 Bytes
814d355 85e590f e1c034a 154424a e1c034a 9c65178 e1c034a 9c65178 e1c034a 85e590f e1c034a 85e590f e1c034a 85e590f e1c034a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
import os
import streamlit as st
from crewai import Agent, Crew, Process, Task
from crewai.tools import SerperDevTool
from langchain_google_genai import ChatGoogleGenerativeAI
# Assurez-vous que vos clés API sont définies dans les variables d'environnement
os.environ["OPENAI_API_KEY"] = st.secrets["OPENAI_API_KEY"]
os.environ["SERPER_API_KEY"] = st.secrets["SERPER_API_KEY"]
# Définition des agents
project_manager = Agent(
role="Chef de Projet",
goal="Coordonner les autres agents pour assurer la cohérence et la qualité de l'exposé.",
backstory="Un chef de projet expérimenté avec une expertise dans la gestion d'équipes et la coordination de projets complexes.",
llm=ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=os.environ["GOOGLE_API_KEY"]),
verbose=True,
allow_delegation=True,
)
topic_analyst = Agent(
role="Analyste de Thème",
goal="Analyser le thème de l'exposé et générer un plan détaillé.",
backstory="Un expert en recherche et en structuration de contenu, capable de décomposer des sujets complexes en plans clairs et concis.",
llm=ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=os.environ["GOOGLE_API_KEY"]),
verbose=True,
tools=[SerperDevTool()],
)
content_writer = Agent(
role="Rédacteur de Contenu",
goal="Rédiger les sections de l'exposé en se basant sur le plan et les recherches.",
backstory="Un rédacteur spécialisé dans la création de contenu clair, concis et engageant.",
llm=ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=os.environ["GOOGLE_API_KEY"]),
verbose=True,
tools=[SerperDevTool()],
)
editor = Agent(
role="Éditeur/Réviseur",
goal="Réviser et peaufiner le contenu, assurer la cohérence du style et du ton, corriger les erreurs.",
backstory="Un éditeur expérimenté avec un souci du détail et une excellente maîtrise de la langue.",
llm=ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=os.environ["GOOGLE_API_KEY"]),
verbose=True,
)
# Définition des tâches
def assign_tasks(topic):
analyze_topic_task = Task(
description=f"Analyser le thème '{topic}' et générer un plan détaillé pour l'exposé, divisé en sections claires.",
expected_output="Un plan détaillé de l'exposé au format markdown.",
agent=topic_analyst,
)
write_content_task = Task(
description=f"Rédiger les sections de l'exposé en se basant sur le plan généré par l'analyste de thème et sur des recherches approfondies.",
expected_output="Contenu des sections au format markdown.",
agent=content_writer,
context=[analyze_topic_task],
)
edit_content_task = Task(
description="Réviser et corriger l'ensemble du contenu de l'exposé, en s'assurant de la cohérence, de la clarté et de l'absence d'erreurs.",
expected_output="Contenu de l'exposé révisé et corrigé au format markdown.",
agent=editor,
context=[write_content_task],
)
return [analyze_topic_task, write_content_task, edit_content_task]
# Configuration de l'interface Streamlit
st.title("🤖 Générateur d'Exposés avec CrewAI")
topic = st.text_input("Entrez le thème de l'exposé:", "L'Intelligence Artificielle en 2024")
if st.button("Générer l'exposé"):
with st.spinner("Création de l'équipe d'agents..."):
crew = Crew(
agents=[project_manager, topic_analyst, content_writer, editor],
tasks=assign_tasks(topic),
process=Process.hierarchical,
verbose=True,
)
with st.spinner("Génération de l'exposé..."):
result = crew.kickoff()
st.success("Exposé généré avec succès!")
st.markdown(result) |