Ein guter CrewAI-Agent ist wie ein guter Mitarbeiter: klare Rolle, klares Ziel, die richtigen Werkzeuge. In dieser Lektion lernen Sie, Agents präzise zu definieren und mit Custom Tools auszustatten.
Die Rolle bestimmt, wie sich der Agent verhält. Seien Sie spezifisch:
| Schlecht | Gut |
|---|---|
| "Researcher" | "Senior Market Research Analyst spezialisiert auf B2B SaaS" |
| "Writer" | "Technical Content Writer mit SEO-Expertise" |
| "Analyst" | "Financial Analyst mit Fokus auf Startup-Bewertungen" |
Das Ziel definiert den Erfolgsmaßstab des Agents:
analyst = Agent(
role="Senior Data Analyst",
goal="Erstelle präzise, datengestützte Analysen mit klaren "
"Handlungsempfehlungen für das Management",
backstory="Du hast 10 Jahre Erfahrung in der Datenanalyse für "
"Fortune-500-Unternehmen. Du kommunizierst komplex "
"Erkenntnisse verständlich und actionable."
)
Die Backstory gibt dem Agent Kontext und Persönlichkeit. Sie beeinflusst den Kommunikationsstil und die Entscheidungsfindung.
from crewai.tools import tool
@tool("Web Search")
def web_search(query: str) -> str:
"""Durchsucht das Web nach aktuellen Informationen.
Nutze dieses Tool für Recherchen zu aktuellen Themen."""
results = search_api.search(query, num_results=5)
return format_results(results)
from crewai.tools import BaseTool
from pydantic import BaseModel, Field
class DatabaseQueryInput(BaseModel):
query: str = Field(description="SQL-Query für die Datenbank")
database: str = Field(default="analytics", description="Datenbank-Name")
class DatabaseQueryTool(BaseTool):
name: str = "Database Query"
description: str = "Führt SQL-Abfragen auf der Analytics-Datenbank aus"
args_schema: type[BaseModel] = DatabaseQueryInput
def _run(self, query: str, database: str = "analytics") -> str:
return db.execute(query, database)
Wenn allow_delegation=True, kann ein Agent Aufgaben an andere Agents delegieren:
manager = Agent(
role="Project Manager",
goal="Koordiniere das Team für optimale Ergebnisse",
allow_delegation=True, # Kann an andere Agents delegieren
tools=[project_tracker, communication_tool]
)
specialist = Agent(
role="Domain Expert",
goal="Liefere tiefgehende Fachexpertise",
allow_delegation=False, # Führt Aufgaben selbst aus
tools=[knowledge_base, calculation_tool]
)
CrewAI bietet drei Memory-Typen:
| Memory-Typ | Beschreibung | Konfiguration |
|---|---|---|
| Short-Term | Aktuelle Crew-Execution | Automatisch aktiv |
| Long-Term | Über mehrere Runs hinweg | memory=True in Crew |
| Entity | Wissen über Entitäten | memory=True in Crew |
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
memory=True, # Aktiviert Long-Term und Entity Memory
embedder={
"provider": "openai",
"config": {"model": "text-embedding-3-small"}
}
)
Praxis-Tipp: Investieren Sie Zeit in präzise Rollen und Backstories. Ein Agent mit "Research Analyst" als Rolle liefert generische Ergebnisse. Ein Agent mit "Senior B2B SaaS Market Research Analyst mit Fokus auf DACH-Region" liefert relevante Ergebnisse.