自定义代理
可自定义属性
Section titled “可自定义属性”构建高效的 CrewAI 团队,关键在于能够根据不同项目的独特需求动态调整 AI agents。本节介绍你可以自定义的基础属性。
关键自定义属性
Section titled “关键自定义属性”| 属性 | 说明 |
|---|---|
| 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)。 |
高级自定义选项
Section titled “高级自定义选项”除了基础属性之外,CrewAI 还支持更深层的自定义,以显著增强 agent 的行为 与能力。
语言模型自定义
Section titled “语言模型自定义”你可以为 agents 指定特定的语言模型(llm)和函数调用语言模型
(function_calling_llm),从而更精细地控制其处理和决策能力。需要注意的是,
设置 function_calling_llm 会覆盖 crew 的默认函数调用语言模型,从而提供更高
程度的可定制性。
性能与调试设置
Section titled “性能与调试设置”调整 agent 的性能和监控其运行,对于高效执行任务至关重要。
详细模式与 RPM 限制
Section titled “详细模式与 RPM 限制”- Verbose Mode:启用 agent 行为的详细日志,便于调试和优化。它会提供 对 agent 执行过程的洞察,有助于性能优化。
- RPM Limit:设置每分钟最大请求数(
max_rpm)。该属性为可选项, 可以设为None以取消限制,在需要时允许对外部服务发起无限查询。
任务执行的最大迭代次数
Section titled “任务执行的最大迭代次数”max_iter 属性允许用户定义 agent 在单个任务中可执行的最大迭代次数,以防
止无限循环或耗时过长的执行。默认值为 25,在充分性和效率之间取得平衡。
当 agent 接近该次数时,它会尽最大努力给出一个好的答案。
自定义代理和工具
Section titled “自定义代理和工具”在初始化期间通过定义属性和工具来定制 agents。工具对 agent 的功能至关
重要,使其能够执行专门任务。tools 属性应为 agent 可使用的工具数组,
默认初始化为空列表。你可以在 agent 初始化后添加或修改工具,以适应新的
需求。
pip install 'crewai[tools]'示例:为 agent 分配工具
Section titled “示例:为 agent 分配工具”import osfrom crewai import Agentfrom crewai_tools import SerperDevTool
# Set API keys for tool initializationos.environ["OPENAI_API_KEY"] = "Your Key"os.environ["SERPER_API_KEY"] = "Your Key"
# Initialize a search toolsearch_tool = SerperDevTool()
# Initialize the agent with advanced optionsagent = 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)委派与自主性
Section titled “委派与自主性”控制 agent 是否可以委派任务或提出问题,对于调节其自主性和协作行为至关
重要。默认情况下,allow_delegation 属性现在设为 False,这会禁止
agents 按需寻求帮助或委派任务。你可以修改这一默认行为,以提升 CrewAI
生态中的协作式问题解决与效率。如有需要,可以启用委派以满足特定操作需求。
示例:禁用 agent 委派
Section titled “示例:禁用 agent 委派”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 团队。