跳转到内容

自定义代理

构建高效的 CrewAI 团队,关键在于能够根据不同项目的独特需求动态调整 AI agents。本节介绍你可以自定义的基础属性。

属性说明
Role指定 agent 在 crew 中的职责,例如“Analyst”或“Customer Service Rep”。
Goal定义 agent 的目标,与其角色和 crew 的总体使命保持一致。
Backstory为 agent 的人格提供深度,增强其在 crew 中的动机与参与感。
Tools (可选)表示 agent 用来完成任务的能力或方法,从简单函数到复杂集成都可以。
Cache (可选)决定 agent 是否在工具使用时启用缓存。
Max RPM设置每分钟最大请求数(max_rpm)。可以设为 None 以便对外部服务发起无限请求。
Verbose (可选)启用详细日志,便于调试和优化,提供执行过程的洞察。
Allow Delegation (可选)控制是否将任务委派给其他 agent,默认值为 False
Max Iter (可选)限制单个任务允许的最大迭代次数(max_iter),以防止无限循环,默认值为 25。
Max Execution Time (可选)设置 agent 完成任务允许的最长时间。
System Template (可选)定义 agent 的系统格式。
Prompt Template (可选)定义 agent 的提示词格式。
Response Template (可选)定义 agent 的回复格式。
Use System Prompt (可选)控制 agent 在任务执行期间是否使用系统提示词。
Respect Context Window默认启用滑动上下文窗口,以维持上下文大小。
Max Retry Limit设置 agent 出错时的最大重试次数(max_retry_limit)。

除了基础属性之外,CrewAI 还支持更深层的自定义,以显著增强 agent 的行为 与能力。

你可以为 agents 指定特定的语言模型(llm)和函数调用语言模型 (function_calling_llm),从而更精细地控制其处理和决策能力。需要注意的是, 设置 function_calling_llm 会覆盖 crew 的默认函数调用语言模型,从而提供更高 程度的可定制性。

调整 agent 的性能和监控其运行,对于高效执行任务至关重要。

  • Verbose Mode:启用 agent 行为的详细日志,便于调试和优化。它会提供 对 agent 执行过程的洞察,有助于性能优化。
  • RPM Limit:设置每分钟最大请求数(max_rpm)。该属性为可选项, 可以设为 None 以取消限制,在需要时允许对外部服务发起无限查询。

max_iter 属性允许用户定义 agent 在单个任务中可执行的最大迭代次数,以防 止无限循环或耗时过长的执行。默认值为 25,在充分性和效率之间取得平衡。 当 agent 接近该次数时,它会尽最大努力给出一个好的答案。

在初始化期间通过定义属性和工具来定制 agents。工具对 agent 的功能至关 重要,使其能够执行专门任务。tools 属性应为 agent 可使用的工具数组, 默认初始化为空列表。你可以在 agent 初始化后添加或修改工具,以适应新的 需求。

Terminal window
pip install 'crewai[tools]'
import os
from crewai import Agent
from crewai_tools import SerperDevTool
# Set API keys for tool initialization
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key"
# Initialize a search tool
search_tool = SerperDevTool()
# Initialize the agent with advanced options
agent = Agent(
role='Research Analyst',
goal='Provide up-to-date market analysis',
backstory='An expert analyst with a keen eye for market trends.',
tools=[search_tool],
memory=True, # Enable memory
verbose=True,
max_rpm=None, # No limit on requests per minute
max_iter=25, # Default value for maximum iterations
)

控制 agent 是否可以委派任务或提出问题,对于调节其自主性和协作行为至关 重要。默认情况下,allow_delegation 属性现在设为 False,这会禁止 agents 按需寻求帮助或委派任务。你可以修改这一默认行为,以提升 CrewAI 生态中的协作式问题解决与效率。如有需要,可以启用委派以满足特定操作需求。

agent = Agent(
role='Content Writer',
goal='Write engaging content on market trends',
backstory='A seasoned writer with expertise in market analysis.',
allow_delegation=True # Enabling delegation
)

通过设置角色、目标、背景故事和工具,并结合语言模型自定义、记忆、性能设 置与委派偏好,CrewAI 中的 agent 可以得到精细化定制,形成一个能够应对复杂 挑战的细致且强大的 AI 团队。