team
创建一个team
python
from utils import new_openai_model
from agno.agent import Agent
from agno.team import Team
from agno.tools.duckduckgo import DuckDuckGoTools
def test():
researcher = Agent(
name="研究员",
role="研究员",
tools=[DuckDuckGoTools()],
model=new_openai_model("gpt-4o-mini"),
)
writer = Agent(
name="作家",
role="作家",
model=new_openai_model("gpt-4o-mini"),
)
team = Team(
name="团队",
mode="coordinate",
members=[researcher, writer],
instructions="你是一个由研究员和作家组成的队伍, 负责生产高质量的博客文章",
model=new_openai_model("gpt-4o-mini"),
markdown=True,
)
# 使用stream=True会报错, 输出不了
# False也会报错, 但是不影响输出
team.print_response("请生成一篇关于AI的文章")
# response_stream = team.run(
# "请生成一篇关于AI的文章", stream=True, stream_intermediate_steps=True
# )
# for event in response_stream:
# if event.event == "TeamRunResponseContent":
# print(f"Content: {event.content}")
# elif event.event == "TeamToolCallStarted":
# print(f"Tool call started: {event.tool}")
# elif event.event == "ToolCallStarted":
# print(f"Member tool call started: {event.tool}")
# elif event.event == "ToolCallCompleted":
# print(f"Member tool call completed: {event.tool}")
# elif event.event == "TeamReasoningStep":
# print(f"Reasoning step: {event.content}")
team的模式
route
由领导者决定下一个应该是结束还是哪一个agent.
Coordinate
领导者分析并将其分解成子任务, 将特定任务交给合适的agent. 最后整合答案, 形成最终结果.
可以定义成功标准success_criteria
, 是一个字符串.
Collaborate
所有成员都处理信息, 领导者审查输出并并整合成最终结果.
同样可以定义成功标准.
结构化输出
python
class CompanyAnalysis(BaseModel):
company_name: str
analysis: str
team = Team(
# ...
response_model=CompanyAnalysis,
)
team的状态
- team_session_state 所有成员都可以访问的状态
- session_state 只有领导者才可以访问的状态
- session_state 这是agent的私有状态
python
team = Team(
members=[agent1, agent2, agent3],
team_session_state={"shopping_list": []},
)
在tool中, 可以通过访问agent.team_session_state来访问.
python
def add_item(agent: Agent, item: str) -> str:
"""
...
"""
agent.team_session_state["shopping_list"].append(item)
return f"add {item} successfully"
enable_agentic_context=True
让领导者可以维护上下文share_member_interactions=True
共享成员之间的交互