Lektion 2 von 5·11 Min Lesezeit

Agents & Tools definieren

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.

Agent-Konfiguration im Detail

Role (Rolle)

Die Rolle bestimmt, wie sich der Agent verhält. Seien Sie spezifisch:

SchlechtGut
"Researcher""Senior Market Research Analyst spezialisiert auf B2B SaaS"
"Writer""Technical Content Writer mit SEO-Expertise"
"Analyst""Financial Analyst mit Fokus auf Startup-Bewertungen"

Goal (Ziel)

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."
)

Backstory

Die Backstory gibt dem Agent Kontext und Persönlichkeit. Sie beeinflusst den Kommunikationsstil und die Entscheidungsfindung.

Custom Tools erstellen

Tool mit dem @tool Decorator

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)

Tool-Klasse für komplexere Logik

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)

Tool Delegation

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]
)

Memory-Konfiguration

CrewAI bietet drei Memory-Typen:

Memory-TypBeschreibungKonfiguration
Short-TermAktuelle Crew-ExecutionAutomatisch aktiv
Long-TermÜber mehrere Runs hinwegmemory=True in Crew
EntityWissen über Entitätenmemory=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.