Files
crewAI/lib/crewai/scripts/structured_output_with_tools_runner.py
2026-05-21 16:11:15 -07:00

47 lines
1.2 KiB
Python

#!/usr/bin/env python
"""Minimal Flow runner: Agent.kickoff() + response_format + tool.
cd lib/crewai
uv run python scripts/structured_output_with_tools_runner.py
"""
from pydantic import BaseModel, Field
from crewai import Agent
from crewai.flow import Flow, start
from crewai.tools import tool
class CalculationResult(BaseModel):
operation: str = Field(description="Operation performed")
result: int = Field(description="Numeric result")
explanation: str = Field(description="Short explanation")
@tool
def add_numbers(a: int, b: int) -> int:
"""Add two integers."""
return a + b
class StructuredOutputFlow(Flow):
@start()
def run(self):
agent = Agent(
role="Calculator",
goal="Use tools and return structured results",
backstory="Compute with tools, then answer in the required schema.",
tools=[add_numbers],
verbose=True,
llm='anthropic/claude-sonnet-4-6'
)
return agent.kickoff(
"Use add_numbers to compute 15 + 27.",
response_format=CalculationResult,
)
if __name__ == "__main__":
result = StructuredOutputFlow().kickoff()
print(result.pydantic)