mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-01 13:18:10 +00:00
47 lines
1.2 KiB
Python
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)
|