协作
CrewAI 中的协作让 agents 能够通过委派任务和提问来协同工作,并利用彼此的专长。只要设置 allow_delegation=True,agents 就会自动获得强大的协作工具。
快速开始:启用协作
Section titled “快速开始:启用协作”from crewai import Agent, Crew, Task
# 为 agents 启用协作researcher = Agent( role="Research Specialist", goal="Conduct thorough research on any topic", backstory="Expert researcher with access to various sources", allow_delegation=True, # 🔑 Key setting for collaboration verbose=True)
writer = Agent( role="Content Writer", goal="Create engaging content based on research", backstory="Skilled writer who transforms research into compelling content", allow_delegation=True, # 🔑 Enables asking questions to other agents verbose=True)
# Agents 现在可以自动协作crew = Crew( agents=[researcher, writer], tasks=[...], verbose=True)Agent 协作如何运作
Section titled “Agent 协作如何运作”当 allow_delegation=True 时,CrewAI 会自动为 agents 提供两个强大的工具:
1. Delegate Work Tool
Section titled “1. Delegate Work Tool”允许 agents 将任务分派给具有特定专长的队友。
# Agent 会自动获得这个工具:# Delegate work to coworker(task: str, context: str, coworker: str)2. Ask Question Tool
Section titled “2. Ask Question Tool”让 agents 能够提出具体问题,从同事那里获取信息。
# Agent 会自动获得这个工具:# Ask question to coworker(question: str, context: str, coworker: str)下面是一个完整示例,展示 agents 如何在内容创建任务中协作:
from crewai import Agent, Crew, Task, Process
# 创建协作型 agentsresearcher = Agent( role="Research Specialist", goal="Find accurate, up-to-date information on any topic", backstory="""You're a meticulous researcher with expertise in finding reliable sources and fact-checking information across various domains.""", allow_delegation=True, verbose=True)
writer = Agent( role="Content Writer", goal="Create engaging, well-structured content", backstory="""You're a skilled content writer who excels at transforming research into compelling, readable content for different audiences.""", allow_delegation=True, verbose=True)
editor = Agent( role="Content Editor", goal="Ensure content quality and consistency", backstory="""You're an experienced editor with an eye for detail, ensuring content meets high standards for clarity and accuracy.""", allow_delegation=True, verbose=True)
# 创建一个鼓励协作的任务article_task = Task( description="""Write a comprehensive 1000-word article about 'The Future of AI in Healthcare'.
The article should include: - Current AI applications in healthcare - Emerging trends and technologies - Potential challenges and ethical considerations - Expert predictions for the next 5 years
Collaborate with your teammates to ensure accuracy and quality.""", expected_output="A well-researched, engaging 1000-word article with proper structure and citations", agent=writer # Writer leads, but can delegate research to researcher)
# 创建协作型 crewcrew = Crew( agents=[researcher, writer, editor], tasks=[article_task], process=Process.sequential, verbose=True)
result = crew.kickoff()模式 1:研究 → 写作 → 编辑
Section titled “模式 1:研究 → 写作 → 编辑”research_task = Task( description="Research the latest developments in quantum computing", expected_output="Comprehensive research summary with key findings and sources", agent=researcher)
writing_task = Task( description="Write an article based on the research findings", expected_output="Engaging 800-word article about quantum computing", agent=writer, context=[research_task] # Gets research output as context)
editing_task = Task( description="Edit and polish the article for publication", expected_output="Publication-ready article with improved clarity and flow", agent=editor, context=[writing_task] # Gets article draft as context)模式 2:协作式单任务
Section titled “模式 2:协作式单任务”collaborative_task = Task( description="""Create a marketing strategy for a new AI product.
Writer: Focus on messaging and content strategy Researcher: Provide market analysis and competitor insights
Work together to create a comprehensive strategy.""", expected_output="Complete marketing strategy with research backing", agent=writer # Lead agent, but can delegate to researcher)对于复杂项目,可以使用带有 manager agent 的层级流程:
from crewai import Agent, Crew, Task, Process
# Manager agent 协调整个团队manager = Agent( role="Project Manager", goal="Coordinate team efforts and ensure project success", backstory="Experienced project manager skilled at delegation and quality control", allow_delegation=True, verbose=True)
# Specialist agentsresearcher = Agent( role="Researcher", goal="Provide accurate research and analysis", backstory="Expert researcher with deep analytical skills", allow_delegation=False, # Specialists focus on their expertise verbose=True)
writer = Agent( role="Writer", goal="Create compelling content", backstory="Skilled writer who creates engaging content", allow_delegation=False, verbose=True)
# Manager-led taskproject_task = Task( description="Create a comprehensive market analysis report with recommendations", expected_output="Executive summary, detailed analysis, and strategic recommendations", agent=manager # Manager will delegate to specialists)
# Hierarchical crewcrew = Crew( agents=[manager, researcher, writer], tasks=[project_task], process=Process.hierarchical, # Manager coordinates everything manager_llm="gpt-4o", # Specify LLM for manager verbose=True)协作最佳实践
Section titled “协作最佳实践”1. 清晰定义角色
Section titled “1. 清晰定义角色”# ✅ Good: Specific, complementary rolesresearcher = Agent(role="Market Research Analyst", ...)writer = Agent(role="Technical Content Writer", ...)
# ❌ Avoid: Overlapping or vague rolesagent1 = Agent(role="General Assistant", ...)agent2 = Agent(role="Helper", ...)2. 有策略地启用委派
Section titled “2. 有策略地启用委派”# ✅ Enable delegation for coordinators and generalistslead_agent = Agent( role="Content Lead", allow_delegation=True, # Can delegate to specialists ...)
# ✅ Disable for focused specialists (optional)specialist_agent = Agent( role="Data Analyst", allow_delegation=False, # Focuses on core expertise ...)3. 共享上下文
Section titled “3. 共享上下文”# ✅ Use context parameter for task dependencieswriting_task = Task( description="Write article based on research", agent=writer, context=[research_task], # Shares research results ...)4. 清晰的任务描述
Section titled “4. 清晰的任务描述”# ✅ Specific, actionable descriptionsTask( description="""Research competitors in the AI chatbot space. Focus on: pricing models, key features, target markets. Provide data in a structured format.""", ...)
# ❌ Vague descriptions that don't guide collaborationTask(description="Do some research about chatbots", ...)问题:Agents 没有协作
Section titled “问题:Agents 没有协作”症状: Agents 各自独立工作,没有发生委派
# ✅ Solution: Ensure delegation is enabledagent = Agent( role="...", allow_delegation=True, # This is required! ...)问题:来回沟通过多
Section titled “问题:来回沟通过多”症状: Agents 反复提问,进度变慢
# ✅ Solution: Provide better context and specific rolesTask( description="""Write a technical blog post about machine learning.
Context: Target audience is software developers with basic ML knowledge. Length: 1200 words Include: code examples, practical applications, best practices
If you need specific technical details, delegate research to the researcher.""", ...)问题:委派循环
Section titled “问题:委派循环”症状: Agents 之间无限相互委派
# ✅ Solution: Clear hierarchy and responsibilitiesmanager = Agent(role="Manager", allow_delegation=True)specialist1 = Agent(role="Specialist A", allow_delegation=False) # No re-delegationspecialist2 = Agent(role="Specialist B", allow_delegation=False)高级协作功能
Section titled “高级协作功能”自定义协作规则
Section titled “自定义协作规则”# Set specific collaboration guidelines in agent backstoryagent = Agent( role="Senior Developer", backstory="""You lead development projects and coordinate with team members.
Collaboration guidelines: - Delegate research tasks to the Research Analyst - Ask the Designer for UI/UX guidance - Consult the QA Engineer for testing strategies - Only escalate blocking issues to the Project Manager""", allow_delegation=True)def track_collaboration(output): """Track collaboration patterns""" if "Delegate work to coworker" in output.raw: print("🤝 Delegation occurred") if "Ask question to coworker" in output.raw: print("❓ Question asked")
crew = Crew( agents=[...], tasks=[...], step_callback=track_collaboration, # Monitor collaboration verbose=True)启用 agents 记住过去的协作:
agent = Agent( role="Content Lead", memory=True, # Remembers past interactions allow_delegation=True, verbose=True)启用 memory 后,agents 会从之前的协作中学习,并随着时间推移改进委派决策。
- 试试这些示例:先从基础协作示例开始
- 尝试不同角色:测试不同的 agent 角色组合
- 监控交互:使用
verbose=True查看协作过程 - 优化任务描述:清晰的任务会带来更好的协作效果
- 逐步扩展:复杂项目可以尝试层级流程
协作会把单个 AI agents 变成强大的团队,让它们能够一起应对复杂、多面的挑战。