跳转至

自定义智能体

可定制属性

打造一个高效的CrewAI团队,关键在于能够动态调整AI代理以满足任何项目的独特需求。本节涵盖您可以定制的基础属性。

定制的关键属性

  • 角色:指定代理在团队中的工作,例如“分析师”或“客户服务代表”。
  • 目标:定义代理的目标,与其角色和团队的整体目标保持一致。
  • 背景故事:为代理的人物设定深度,丰富其在团队中的动机和参与度。
  • 工具 (可选):代表代理执行任务的能力或方法,从简单功能到复杂集成。
  • 缓存 (可选):确定代理是否应使用缓存进行工具使用。
  • 最大RPM:设置每分钟最大请求次数(max_rpm)。此属性可选,可设置为None以无限制,允许在需要时对外部服务进行无限查询。
  • 详细模式 (可选):启用代理操作的详细日志记录,有助于调试和优化。具体来说,它提供对代理执行过程的洞察,帮助优化性能。
  • 允许委派 (可选)allow_delegation控制代理是否允许将任务委派给其他代理。此属性现在默认设置为False
  • 最大迭代次数 (可选)max_iter属性允许用户定义代理为单个任务执行的最大迭代次数,防止无限循环或执行时间过长。默认值设置为25,在彻底性和效率之间取得平衡。
  • 最大执行时间 (可选)max_execution_time设置代理完成任务的最大执行时间。
  • 系统模板 (可选)system_template定义代理的系统格式。
  • 提示模板 (可选)prompt_template定义代理的提示格式。
  • 响应模板 (可选)response_template定义代理的响应格式。
  • 使用系统提示 (可选)use_system_prompt控制代理是否将使用系统提示执行任务。代理现在可以不使用系统提示运行。
  • 尊重上下文窗口respect_context_window重命名滑动上下文窗口属性,并默认启用以保持上下文大小。
  • 最大重试限制max_retry_limit定义代理在执行任务时发生错误的最大重试次数。

高级定制选项

除了基本属性外,CrewAI还允许进行更深入的定制,以显著增强代理的行为和能力。

语言模型定制

代理可以定制特定的语言模型(llm)和函数调用语言模型(function_calling_llm),提供对其处理和决策能力的先进控制。需要注意的是,设置function_calling_llm允许覆盖默认的团队函数调用语言模型,提供更大程度的定制。

性能和调试设置

调整代理的性能并监控其操作对于高效任务执行至关重要。

详细模式和RPM限制

  • 详细模式:启用代理操作的详细日志记录,有助于调试和优化。具体来说,它提供对代理执行过程的洞察,帮助优化性能。
  • RPM限制:设置每分钟最大请求次数(max_rpm)。此属性可选,可设置为None以无限制,允许在需要时对外部服务进行无限查询。

任务执行的最大迭代次数

max_iter属性允许用户定义代理为单个任务执行的最大迭代次数,防止无限循环或执行时间过长。默认值设置为25,在彻底性和效率之间取得平衡。一旦代理接近这个数值,它将尽力给出一个好的答案。

定制代理和工具

代理通过在初始化时定义其属性和工具来进行定制。工具对代理的功能至关重要,使它们能够执行专业任务。tools属性应该是代理可以使用的工具数组,默认初始化为空列表。工具可以在代理初始化后添加或修改,以适应新需求。

pip install 'crewai[tools]'

示例:为代理分配工具

import os
from crewai import Agent
from crewai_tools import SerperDevTool

# 设置工具初始化的API密钥
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key"

# 初始化搜索工具
search_tool = SerperDevTool()

# 使用高级选项初始化代理
agent = Agent(
  role='研究分析师',
  goal='提供最新的市场分析',
  backstory='一位具有敏锐市场趋势洞察力的专家分析师。',
  tools=[search_tool],
  memory=True, # 启用记忆
  verbose=True,
  max_rpm=None, # 不限制每分钟请求次数
  max_iter=25, # 默认最大迭代次数
)

委派和自主性

控制代理委派任务或提问的能力,对于在CrewAI框架内定制其自主性和协作动态至关重要。默认情况下,allow_delegation属性现在设置为False,禁止代理在需要时寻求帮助或委派任务。这种默认行为可以更改,以促进CrewAI生态系统内的协作问题解决和效率。如果需要,可以启用委派以满足特定的操作要求。

示例:为代理禁用委派

agent = Agent(
  role='内容撰写员',
  goal='撰写有关市场趋势的吸引人内容',
  backstory='一位经验丰富的撰写员,擅长市场分析。',
  allow_delegation=True # 启用委派
)

结论

通过设置代理的角色、目标、背景故事和工具,以及高级选项如语言模型定制、记忆、性能设置和委派偏好,定制CrewAI中的代理,打造一个细腻且能干的AI团队,准备好应对复杂挑战。