Skip to content

专家们:精通 Agent

智能体是你操作的核心(大脑)。在 CrewAI 中,一个 Agent 是一个自主单元,可以执行任务、做出决策并与其他智能体通信。在本章中,我们将深入探讨如何创建有效的智能体。

智能体输出的质量与你定义其属性的优劣直接相关。有三个关键支柱:

  • 角色(Role):这是智能体的职位。它告诉 LLM 应该采取何种视角(例如,“金融分析师”与“创意作家”)。
  • 目标(Goal):这定义了智能体的成功标准。它指导 LLM 的关注点(例如,“最大程度地减少税务责任”与“写一首爆款诗歌”)。
  • 背景故事(Backstory):这通常是被忽视但却非常强大的属性。它提供了上下文、个性和约束条件。背景故事创造了响应的“风味”。

这是一个 Python 定义的例子(如果你不使用 YAML):

from crewai import Agent
analyst = Agent(
role='Senior QA Engineer',
goal='Find all bugs in the code',
backstory=(
"You have 20 years of experience in software testing. "
"You are extremely detail-oriented and pessimistic about "
"code quality. You never assume code works."
),
verbose=True # 启用智能体思维过程的日志记录
)

并非所有智能体都需要最昂贵的模型。你可能希望“经理”智能体使用 GPT-4o 进行复杂推理,而“摘要”智能体使用 GPT-4o-mini 来节省成本。CrewAI 允许你为特定智能体分配特定的 LLM。

CrewAI 集成了 LiteLLM,支持 100 多个提供商。

默认情况下,CrewAI 会查找 OPENAI_API_KEY 环境变量并使用 GPT-4。

要在本地运行智能体(为了隐私或成本),你可以使用 Ollama。你必须更改 OPENAI_API_BASE 和模型名称。

from crewai import Agent, LLM
# 配置 LLM
local_llm = LLM(
model="ollama/llama3.1",
base_url="http://localhost:11434"
)
local_agent = Agent(
role='Local Assistant',
goal='Answer quickly',
backstory='You are running locally.',
llm=local_llm
)

除了角色(persona)之外,还有一些技术设置可以微调行为:

  • allow_delegation:(默认值:False)如果设置为 True,智能体可以将工作委派给其他智能体。注意:这通常需要更强大的模型。
  • max_iter:限制智能体在强制给出答案之前可以执行的“思考循环”次数,防止无限循环。
  • verbose:对于调试至关重要。它会向你展示智能体的“思考(Thought)”、“行动(Action)”和“观察(Observation)”循环。