Spaces:
Sleeping
Sleeping
Update crew_utils.py
Browse files- crew_utils.py +19 -9
crew_utils.py
CHANGED
@@ -1,9 +1,20 @@
|
|
1 |
# crew_utils.py
|
|
|
|
|
|
|
2 |
from crewai import Agent, Crew, Process, Task
|
3 |
from crewai_tools import SerperDevTool
|
4 |
from crewai import LLM
|
5 |
from pydantic import BaseModel, Field
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
from pdf_tool import PDFTool
|
8 |
|
9 |
# --- Définition des outils ---
|
@@ -12,8 +23,6 @@ pdf_tool = PDFTool()
|
|
12 |
|
13 |
# --- Définition du LLM (Gemini) ---
|
14 |
# Remplace par ta clé API
|
15 |
-
|
16 |
-
|
17 |
GEMINI_API_KEY = "AIzaSyD6yZxfVOnh63GXBJjakAupk9aP4CZrgrQ"
|
18 |
llm = LLM(
|
19 |
model="gemini/gemini-1.5-flash",
|
@@ -100,7 +109,7 @@ class SectionContent(BaseModel):
|
|
100 |
|
101 |
# Tâches pour les Rédacteurs (exemple pour 3 sections, à adapter)
|
102 |
async def write_section_task(
|
103 |
-
researcher: Agent, section_title: str, context: List[
|
104 |
) -> Task:
|
105 |
return Task(
|
106 |
description=f"""
|
@@ -159,7 +168,7 @@ class ExposeCrew(Crew):
|
|
159 |
async def kickoff(self, inputs: dict = {}) -> str:
|
160 |
# Exécuter la tâche de création du plan
|
161 |
plan = await create_plan_task.execute(context=inputs)
|
162 |
-
|
163 |
|
164 |
# Créer et exécuter les tâches de rédaction de section en parallèle
|
165 |
section_tasks = await process_section_tasks(
|
@@ -167,10 +176,11 @@ class ExposeCrew(Crew):
|
|
167 |
plan=plan,
|
168 |
researchers=[researcher_intro, researcher_dev, researcher_conclusion],
|
169 |
)
|
|
|
|
|
|
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
print(f"Sections rédigées : {section_outputs}")
|
174 |
|
175 |
# Mettre à jour la description de la tâche de compilation avec les sections rédigées
|
176 |
compile_report_task.description = f"""
|
@@ -184,5 +194,5 @@ class ExposeCrew(Crew):
|
|
184 |
compile_report_task.context = section_tasks
|
185 |
|
186 |
# Exécuter la tâche de compilation
|
187 |
-
result = await compile_report_task.execute(
|
188 |
return result
|
|
|
1 |
# crew_utils.py
|
2 |
+
import asyncio
|
3 |
+
from typing import Any, List
|
4 |
+
|
5 |
from crewai import Agent, Crew, Process, Task
|
6 |
from crewai_tools import SerperDevTool
|
7 |
from crewai import LLM
|
8 |
from pydantic import BaseModel, Field
|
9 |
+
|
10 |
+
# --- Installation des dépendances (si nécessaire) ---
|
11 |
+
# Assure-toi que les packages nécessaires sont installés.
|
12 |
+
# Tu peux exécuter `crewai install` si tu as utilisé le CLI de CrewAI pour initialiser le projet.
|
13 |
+
# Sinon, installe-les manuellement avec :
|
14 |
+
# pip install crewai crewai-tools langchain-google-genai reportlab
|
15 |
+
|
16 |
+
# --- Outil de génération de PDF (exemple avec reportlab) ---
|
17 |
+
# Crée un fichier `pdf_tool.py` dans le même répertoire que ce script, par exemple.
|
18 |
from pdf_tool import PDFTool
|
19 |
|
20 |
# --- Définition des outils ---
|
|
|
23 |
|
24 |
# --- Définition du LLM (Gemini) ---
|
25 |
# Remplace par ta clé API
|
|
|
|
|
26 |
GEMINI_API_KEY = "AIzaSyD6yZxfVOnh63GXBJjakAupk9aP4CZrgrQ"
|
27 |
llm = LLM(
|
28 |
model="gemini/gemini-1.5-flash",
|
|
|
109 |
|
110 |
# Tâches pour les Rédacteurs (exemple pour 3 sections, à adapter)
|
111 |
async def write_section_task(
|
112 |
+
researcher: Agent, section_title: str, context: List[Task]
|
113 |
) -> Task:
|
114 |
return Task(
|
115 |
description=f"""
|
|
|
168 |
async def kickoff(self, inputs: dict = {}) -> str:
|
169 |
# Exécuter la tâche de création du plan
|
170 |
plan = await create_plan_task.execute(context=inputs)
|
171 |
+
self.log.info(f"Plan de l'exposé : {plan}")
|
172 |
|
173 |
# Créer et exécuter les tâches de rédaction de section en parallèle
|
174 |
section_tasks = await process_section_tasks(
|
|
|
176 |
plan=plan,
|
177 |
researchers=[researcher_intro, researcher_dev, researcher_conclusion],
|
178 |
)
|
179 |
+
|
180 |
+
sections_results = await asyncio.gather(*[task.execute(context=[create_plan_task]) for task in section_tasks])
|
181 |
+
section_outputs = [result.content for result in sections_results]
|
182 |
|
183 |
+
self.log.info(f"Sections rédigées : {section_outputs}")
|
|
|
|
|
184 |
|
185 |
# Mettre à jour la description de la tâche de compilation avec les sections rédigées
|
186 |
compile_report_task.description = f"""
|
|
|
194 |
compile_report_task.context = section_tasks
|
195 |
|
196 |
# Exécuter la tâche de compilation
|
197 |
+
result = await compile_report_task.execute()
|
198 |
return result
|