CrewAI 多角色 Agent 协作与任务编排框架。
CrewAI 用 Agent(角色、目标、背景)、Task(描述、预期输出)和 Crew(执行顺序)组织多 Agent 工作流。常见模式是研究员检索、写作者成稿、审查者把关,按 Process.sequential 或层级流程执行。
它偏向“角色协作”而不是底层图控制。需要细粒度分支、循环和人工中断时,LangGraph 更合适;CrewAI 的优势是快速搭起可运行的角色团队。
pip install -U crewai crewai-tools
export OPENAI_API_KEY="sk-..."
创建官方脚手架项目,包含 agents/tasks 的 YAML 配置:
crewai create crew ops_crew --skip-provider
cd ops_crew
crewai install
crewai run
用两个角色顺序完成一份排障报告:
python - <<'PY'
from crewai import Agent, Task, Crew, Process, LLM
llm = LLM(model="openai/gpt-4o-mini", temperature=0)
researcher = Agent(
role="SRE 检索员",
goal="找出 Pod OOMKilled 的根因",
backstory="熟悉 Kubernetes 资源限制和容器排障。",
llm=llm, verbose=True, allow_delegation=False, max_iter=3,
)
writer = Agent(
role="技术写作",
goal="把根因整理成可执行的修复步骤",
backstory="擅长把排障过程写成简洁的操作手册。",
llm=llm, verbose=True, allow_delegation=False,
)
research = Task(
description="分析 {symptom} 的可能根因,给出排查命令。",
expected_output="按可能性排序的根因列表,附命令。",
agent=researcher,
)
report = Task(
description="基于上一任务输出一份修复清单。",
expected_output="包含验证与回滚步骤的 Markdown。",
agent=writer, context=[research],
)
crew = Crew(agents=[researcher, writer], tasks=[research, report],
process=Process.sequential, verbose=True)
print(crew.kickoff(inputs={"symptom": "Pod 反复 OOMKilled"}).raw)
PY
让 CrewAI 使用本地 vLLM 的 OpenAI 兼容接口:
python - <<'PY'
from crewai import LLM
llm = LLM(model="openai/Qwen/Qwen2.5-7B-Instruct",
base_url="http://localhost:8000/v1", api_key="EMPTY", temperature=0.2)
print(llm.call("用一句话解释 OOMKilled"))
PY
allow_delegation=True 会引入额外的委派调用,成本和延迟上升;流程固定时关掉委派。max_iter,模型可能反复调用同一工具;为每个 Agent 设置迭代上限并检查工具返回。config/agents.yaml 和 config/tasks.yaml,只改 Python 文件不会生效;先确认配置来源。Process.hierarchical 需要 manager_llm 或 manager_agent,缺失会直接报错;顺序流程不要滥用层级模式。合上页面,先回答,再展开对照。
LLM(model="openai/<模型名>", base_url="http://localhost:8000/v1", api_key="EMPTY"),并确认模型支持工具调用;否则需要改用不依赖工具的流程。max_iter。