File size: 3,917 Bytes
814d355
85e590f
e1c034a
 
f046245
e1c034a
 
 
73f73b3
 
e1c034a
 
 
 
 
 
792ff76
e1c034a
 
154424a
 
e1c034a
 
 
 
7173121
e1c034a
 
 
9c65178
e1c034a
 
 
 
7173121
e1c034a
 
 
9c65178
e1c034a
 
 
 
7173121
e1c034a
 
85e590f
e1c034a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f458dd6
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
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["GEMINI_API_KEY"] = "AIzaSyD6yZxfVOnh63GXBJjakAupk9aP4CZrgrQ"
os.environ["SERPER_API_KEY"] = "9b90a274d9e704ff5b21c0367f9ae1161779b573"

# 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["GEMINI_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["GEMINI_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["GEMINI_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["GEMINI_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,
            manager_llm=ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=os.environ["GEMINI_API_KEY"]),
            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)