Skip to main content

Coordinate Team

Leader picks members and synthesizes their responses.
import asyncio
from definable.agent import Agent
from definable.agent.team import Team, TeamMode

researcher = Agent(model="gpt-4o", instructions="Research specialist. Find facts and data.")
writer = Agent(model="gpt-4o", instructions="Technical writer. Write clear content.")

team = Team(
    name="content-team",
    model="gpt-4o",
    members=[researcher, writer],
    mode=TeamMode.coordinate,
    instructions="Produce well-researched technical content.",
)

async def main():
    result = await team.arun("Write about the state of AI agents in 2026.")
    print(result.content)

asyncio.run(main())

Route Team

Leader classifies and dispatches to a single specialist.
tech_support = Agent(model="gpt-4o", instructions="Technical support specialist.")
billing_support = Agent(model="gpt-4o", instructions="Billing specialist.")
general_support = Agent(model="gpt-4o", instructions="General support agent.")

team = Team(
    name="support-router",
    model="gpt-4o",
    members=[tech_support, billing_support, general_support],
    mode=TeamMode.route,
)

result = await team.arun("I'm getting a 500 error on login.")
# Routed to tech_support

Collaborate Team

All members work in parallel, leader synthesizes.
optimist = Agent(model="gpt-4o", instructions="Optimistic analyst. Focus on opportunities.")
pessimist = Agent(model="gpt-4o", instructions="Cautious analyst. Focus on risks.")
realist = Agent(model="gpt-4o", instructions="Balanced analyst. Weigh both sides.")

team = Team(
    name="analysis-team",
    model="gpt-4o",
    members=[optimist, pessimist, realist],
    mode=TeamMode.collaborate,
)

result = await team.arun("Analyze the impact of AI on jobs.")

Tasks Team

Leader decomposes into tasks and delegates autonomously.
researcher = Agent(model="gpt-4o", instructions="Research specialist.")
designer = Agent(model="gpt-4o", instructions="UX designer.")
developer = Agent(model="gpt-4o", instructions="Developer.")

team = Team(
    name="product-team",
    model="gpt-4o",
    members=[researcher, designer, developer],
    mode=TeamMode.tasks,
    max_iterations=10,
)

result = await team.arun("Design a user onboarding flow.")

Nested Teams

Teams can contain other teams.
research_team = Team(
    name="research",
    model="gpt-4o",
    members=[web_researcher, paper_reader],
    mode=TeamMode.collaborate,
)

content_team = Team(
    name="content",
    model="gpt-4o",
    members=[research_team, writer, editor],
    mode=TeamMode.coordinate,
)

Structured Output

from pydantic import BaseModel

class Report(BaseModel):
    title: str
    summary: str
    recommendations: list[str]

result = await team.arun("Analyze market trends", output_schema=Report)
report = result.parsed  # Report instance