Spaces:
Sleeping
Sleeping
File size: 3,709 Bytes
814d355 85e590f e1c034a f046245 e1c034a d34d5e9 e1c034a 73f73b3 e1c034a d34d5e9 e1c034a d34d5e9 e1c034a 154424a e1c034a d34d5e9 e1c034a 9c65178 e1c034a d34d5e9 e1c034a 9c65178 e1c034a d34d5e9 e1c034a 85e590f e1c034a 88f982a e1c034a 88f982a e1c034a 88f982a e1c034a 88f982a e1c034a d34d5e9 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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import os
import streamlit as st
from crewai import Agent, Crew, Process, Task
from crewai_tools import SerperDevTool
from langchain_google_genai import ChatGoogleGenerativeAI
from crewai import LLM
# Assurez-vous que vos clés API sont définies dans les variables d'environnement
os.environ["GEMINI_API_KEY"] = "AIzaSyD6yZxfVOnh63GXBJjakAupk9aP4CZrgrQ"
os.environ["SERPER_API_KEY"] = "9b90a274d9e704ff5b21c0367f9ae1161779b573"
llm = LLM(
model="gemini/gemini-1.5-flash",
temperature=0.7,
timeout=120,
max_tokens=8000,
)
# 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=llm,
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=llm,
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=llm,
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=llm,
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é list en python. renvoie juste la liste et rien dautre",
agent=topic_analyst,
)
r = list(analyze_topic_task)
cc = []
for i in r:
write_content_task = Task(
description=f"Rédiger cette sections {i} en te basant sur des recherches approfondies.",
expected_output="Contenu des sections au format markdown.",
agent=content_writer,
context=[analyze_topic_task],)
cc.append(write_content_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=[cc],
)
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,
manager_llm=llm,
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) |