camel.agents 包

本页内容

camel.agents 包#

子包#

子模块#

camel.agents.base 模块#

class camel.agents.base.BaseAgent[来源]#

基类: ABC

所有CAMEL代理的抽象基类。

abstract reset(*args: Any, **kwargs: Any) Any[来源]#

将代理重置到初始状态。

abstract step(*args: Any, **kwargs: Any) Any[来源]#

执行代理的单个步骤。

camel.agents.chat_agent 模块#

class camel.agents.chat_agent.ChatAgent(system_message: BaseMessage | str | None = None, model: BaseModelBackend | List[BaseModelBackend] | None = None, memory: AgentMemory | None = None, message_window_size: int | None = None, token_limit: int | None = None, output_language: str | None = None, tools: List[FunctionTool | Callable] | None = None, external_tools: List[FunctionTool | Callable | Dict[str, Any]] | None = None, response_terminators: List[ResponseTerminator] | None = None, scheduling_strategy: str = 'round_robin', single_iteration: bool = False, agent_id: str | None = None)[来源]#

基础类: BaseAgent

用于管理CAMEL聊天代理对话的类。

Parameters:
  • system_message (Union[BaseMessage, str], optional) - 聊天代理的系统消息

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: ModelPlatformType.DEFAULT with ModelType.DEFAULT)

  • memory (AgentMemory, optional) – 用于管理聊天消息的代理内存。如果为None,将使用ChatHistoryMemory。 (默认值: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • token_limit (int, optional) – 上下文中的最大token数量。 上下文将自动修剪以满足此限制。 如果为None,将根据后端模型进行设置。 (默认值: None)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • 工具 (可选[列表[联合类型[FunctionTool, 可调用对象]]], 可选) – 可用的FunctionToolCallable列表。(默认值:None)

  • (可选[列表[联合类型[函数工具 (external_tools) – 字典[str, Any]]]], 可选): 外部工具列表 (FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将 直接返回请求而不是处理它。 (默认: None)

  • Callable – Dict[str, Any]]]], 可选): 外部工具列表 (FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将 直接返回请求而不是处理它。 (默认: None)

:paramDict[str, Any]]]], optional): List of external tools

(FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将直接返回请求而不是处理它。 (默认: None)

Parameters:
  • response_terminators (List[ResponseTerminator], optional) – 绑定到一个聊天代理的ResponseTerminator列表。 (默认: None)

  • scheduling_strategy (str) - 定义如何在ModelManager中选择下一个模型的函数名称。(默认: :str:`round_robin`)

  • single_iteration (bool) - 是否让代理在每一步只执行一次模型调用。(默认: False)

  • agent_id (str, optional) – 代理的ID。如果未提供,将生成一个随机UUID。(默认值: None)

add_external_tool(tool: FunctionTool | Callable | Dict[str, Any]) None[来源]#
add_model_scheduling_strategy(name: str, strategy_fn: Callable)[来源]#

向ModelManger添加一个由用户提供的调度策略方法。

Parameters:
  • name (str) – 策略的名称。

  • strategy_fn (Callable) – 调度策略函数。

add_tool(tool: FunctionTool | Callable) None[来源]#

向代理添加一个工具。

async astep(input_message: BaseMessage | str, response_format: Type[BaseModel] | None = None) ChatAgentResponse[来源]#

通过生成对输入消息的响应来执行聊天会话中的单一步骤。此代理步骤可以调用异步函数。

Parameters:
  • input_message (Union[BaseMessage, str]) – 发送给agent的输入消息。对于BaseMessage类型的输入,其指定后端角色的role字段可以是userassistant,但无论如何都会被设置为user,因为对于自身agent来说任何传入消息都是外部的。对于str类型的输入,role_name将会是User

  • response_format (可选[Type[BaseModel]], optional) - 一个pydantic模型类,包含用于LLM生成结构化响应的值类型和字段描述。该模式有助于定义预期的输出格式。(默认: None)

Returns:

包含输出消息的结构体,

一个布尔值表示聊天会话是否已终止, 以及关于聊天会话的信息。

Return type:

ChatAgentResponse

property chat_history: List[ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam]#
clear_memory() None[来源]#

清除代理的内存并重置到初始状态。

Returns:

get_usage_dict(output_messages: List[BaseMessage], prompt_tokens: int) Dict[str, int][来源]#

在使用流模式时获取使用情况字典。

Parameters:
  • output_messages (list) - 输出消息列表。

  • prompt_tokens (int) - 输入提示词的数量。

Returns:

使用字典。

Return type:

字典

init_messages() None[来源]#

使用当前系统消息初始化存储的消息列表。

load_memory(memory: AgentMemory) None[来源]#

将提供的内存加载到agent中。

Parameters:

memory (AgentMemory) – 要加载到agent中的内存。

Returns:

load_memory_from_path(path: str) None[来源]#

从JSON文件中加载按此代理ID筛选的内存记录。

Parameters:

path (str) – 使用JsonStorage的JSON内存文件的文件路径。

Raises:

ValueError – 如果找不到与agent_id匹配的记录 (可选检查;下方已注释掉)。

property output_language: str | None#

返回代理的输出语言。

record_message(message: BaseMessage) None[来源]#

将外部提供的消息记录到代理内存中,就好像它是后端ChatAgent的答案一样。目前,评论者的选择是通过此方法提交的。

Parameters:

消息 (BaseMessage) – 需要记录在内存中的外部消息。

remove_external_tool(tool_name: str) bool[来源]#

按名称从代理中移除一个外部工具。

Parameters:

tool_name (str) – 要移除的工具名称。

Returns:

该工具是否已成功移除。

Return type:

布尔值

remove_tool(tool_name: str) bool[来源]#

根据名称从代理中移除一个工具。

Parameters:

tool_name (str) – 要移除的工具名称。

Returns:

该工具是否已成功移除。

Return type:

布尔值

reset()[来源]#

ChatAgent重置到初始状态。

save_memory(path: str) None[来源]#

从内存中检索当前对话数据,并使用JsonStorage将其写入JSON文件。

Parameters:

path (str) – 存储JSON数据的目标文件路径。

step(input_message: BaseMessage | str, response_format: Type[BaseModel] | None = None) ChatAgentResponse[来源]#

在聊天会话中执行单一步骤,生成对输入消息的响应。

Parameters:
  • input_message (Union[BaseMessage, str]) - 代理的输入消息。如果以BaseMessage形式提供,role会被调整为user以表示外部消息。

  • response_format (可选[类型[BaseModel]], 可选) – 一个Pydantic模型,用于定义响应的预期结构。如果提供,将用于生成结构化响应。(默认值:None)

Returns:

包含输出消息、终止状态

标志和会话信息。

Return type:

ChatAgentResponse

property system_message: BaseMessage | None#

返回该代理的系统消息。

property tool_dict: Dict[str, FunctionTool]#

返回内部工具的字典。

update_memory(message: BaseMessage, role: OpenAIBackendRole, timestamp: float | None = None) None[来源]#

使用新消息更新代理内存。

Parameters:
  • message (BaseMessage) – 要添加到存储消息中的新消息。

  • role (OpenAIBackendRole) – 后端角色类型。

  • timestamp (Optional[float], optional) – 内存记录的自定义时间戳。如果为None,将使用当前时间戳。 (default: None)

camel.agents.critic_agent 模块#

class camel.agents.critic_agent.CriticAgent(system_message: BaseMessage, model: BaseModelBackend | None = None, memory: AgentMemory | None = None, message_window_size: int = 6, retry_attempts: int = 2, verbose: bool = False, logger_color: Any = '\x1b[35m')[来源]#

基类:ChatAgent

一个用于辅助选择选项的critic代理类。

Parameters:
  • system_message (BaseMessage) – 评论代理的系统消息。

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • message_window_size (int, optional) – 上下文窗口中包含的最大历史消息数量。如果为None,则不执行窗口化操作。(默认值: 6)

  • retry_attempts (int, optional) – 如果critic未能返回有效选项时的重试次数。(默认值: 2)

  • verbose (bool, optional) – 是否打印critic的消息。

  • logger_color (Any) – 显示给用户的菜单选项的颜色。(默认: Fore.MAGENTA)

flatten_options(messages: Sequence[BaseMessage]) str[来源]#

将选项扁平化传递给critic。

Parameters:

messages (Sequence[BaseMessage]) – 一个BaseMessage对象的列表。

Returns:

一个包含传递给critic的扁平化选项的字符串。

Return type:

字符串

get_option(input_message: BaseMessage) str[来源]#

获取评论者选择的选项。

Parameters:

input_message (BaseMessage) – 一个表示输入消息的BaseMessage对象。

Returns:

评论者选择的选项。

Return type:

字符串

parse_critic(critic_msg: BaseMessage) str | None[来源]#

解析评论者的消息并提取选择。

Parameters:

critic_msg (BaseMessage) – 一个表示评论者响应的BaseMessage对象。

Returns:

评论者选择的字符串,如果无法解析消息则为None

消息无法被解析。

Return type:

可选[str]

reduce_step(input_messages: Sequence[BaseMessage]) ChatAgentResponse[来源]#

通过将选项扁平化传递给评论者、获取选项并解析选择,来执行对话的一个步骤。

Parameters:

input_messages (Sequence[BaseMessage]) – BaseMessage对象的列表。

Returns:

一个ChatAgentResponse对象包含

评论家的选择。

Return type:

ChatAgentResponse

camel.agents.deductive_reasoner_agent 模块#

class camel.agents.deductive_reasoner_agent.DeductiveReasonerAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个负责演绎推理的代理。演绎推理模型:

  • L: A ⊕ C -> q * B

  • A 代表已知的起始状态。

  • B 代表已知的目标状态。

  • C代表从A过渡到B所需的条件。

  • Q代表从某种状态过渡到另一种状态的质量或效果

A到B。 - L代表从A到B的路径或过程。

Parameters:

model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

deduce_conditions_and_quality(starting_state: str, target_state: str, role_descriptions_dict: Dict[str, str] | None = None) Dict[str, List[str] | Dict[str, str]][来源]#

根据演绎推理模型和知识库,从起始状态和目标状态推导出条件和质量。它可以选择性地考虑场景中涉及的角色,从而更紧密地根据AI代理的环境定制输出。

Parameters:
  • starting_state (str) - 从中推导条件的初始或起始状态。

  • target_state (str) - 任务的目标状态。

  • role_descriptions_dict (Optional[Dict[str, str]], optional) – 角色描述字典。(默认值: None)

  • role_descriptions_dict – 一个描述场景中涉及角色的字典。这是可选的,可用于为CAMEL的角色扮演提供上下文,从而生成更相关和定制化的条件与质量评估。这可以通过RoleAssignmentAgent()生成或由用户手动定义。

Returns:

一个包含

从消息中提取数据的字典。该字典包含三个键: - 'conditions':一个列表,其中每个键是条件ID,

每个值是对应的条件文本。

  • 'labels':从消息中提取的标签字符串列表。

  • 'quality':从消息中提取的

    质量评估字符串。

Return type:

Dict[str, Union[List[str], Dict[str, str]]]

camel.agents.embodied_agent 模块#

class camel.agents.embodied_agent.EmbodiedAgent(system_message: BaseMessage, model: BaseModelBackend | None = None, message_window_size: int | None = None, tool_agents: List[BaseToolAgent] | None = None, code_interpreter: BaseInterpreter | None = None, verbose: bool = False, logger_color: Any = '\x1b[35m')[来源]#

基类:ChatAgent

用于管理CAMEL实体代理对话的类。

Parameters:
  • system_message (BaseMessage) - 聊天代理的系统消息。

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • tool_agents (List[BaseToolAgent], optional) – 在具身代理中使用的工具代理。(默认: None)

  • code_interpreter (BaseInterpreter, optional) – 用于执行代码的代码解释器。如果code_interpretertool_agent都为None,则默认为SubProcessInterpreter。如果code_interpreterNonetool_agents不为None,则默认为InternalPythonInterpreter。(默认值: None)

  • verbose (bool, optional) – 是否打印critic的消息。

  • logger_color (Any) – 显示给用户的日志记录器颜色。 (默认: Fore.MAGENTA)

get_tool_agent_names() List[str][来源]#

返回工具代理的名称。

Returns:

工具代理的名称。

Return type:

List[str]

step(input_message: BaseMessage) ChatAgentResponse[来源]#

执行对话中的一个步骤。

Parameters:

input_message (BaseMessage) – 输入消息。

Returns:

包含输出消息的结构体,

一个布尔值表示聊天会话是否已终止, 以及关于聊天会话的信息。

Return type:

ChatAgentResponse

camel.agents.knowledge_graph_agent 模块#

class camel.agents.knowledge_graph_agent.KnowledgeGraphAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个能够从给定的Element内容中提取不同实体的节点和关系信息的代理。

task_prompt#

一个提示,用于让代理提取不同实体的节点和关系信息。

Type:

TextPrompt

run(element: Element, parse_graph_elements: bool = False, prompt: str | None = None) str | GraphElement[来源]#

运行代理程序以提取节点和关系信息。

Parameters:
  • element (Element) – 输入元素。

  • parse_graph_elements (bool, optional) – 是否解析为GraphElement。默认为False

  • prompt (str, optional) – 要使用的自定义提示词。 默认为 None

Returns:

提取的节点和关系

信息。如果parse_graph_elementsTrue则返回 GraphElement,否则返回str

Return type:

Union[str, GraphElement]

camel.agents.role_assignment_agent 模块#

class camel.agents.role_assignment_agent.RoleAssignmentAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个根据任务提示生成角色名称的agent。

Parameters:

model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

role_assignment_prompt#

供代理生成提示的提示词

Type:

TextPrompt

role names.
run(task_prompt: str | TextPrompt, num_roles: int = 2) Dict[str, str][来源]#

根据输入的任务提示生成角色名称。

Parameters:
  • task_prompt (Union[str, TextPrompt]) – 用于生成角色任务的基础提示。

  • num_roles (int, optional) – 要生成的角色数量。 (默认值: 2)

Returns:

一个字典,将角色名称映射到它们的

描述。

Return type:

字典[字符串, 字符串]

camel.agents.search_agent 模块#

class camel.agents.search_agent.SearchAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个根据查询总结文本并评估答案相关性的代理。

Parameters:

model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

根据提供的答案询问是否继续搜索。

Parameters:
  • query (str) – 问题内容。

  • answer (str) – 问题的答案。

Returns:

True 如果用户希望继续搜索,False 则表示不继续。

Return type:

布尔值

summarize_text(text: str, query: str) str[来源]#

根据查询总结文本中的信息。

Parameters:
  • text (str) – 需要总结的文本。

  • query (str) – 您想要查询的信息。

Returns:

包含信息的字符串。

Return type:

字符串

camel.agents.task_agent 模块#

class camel.agents.task_agent.TaskCreationAgent(role_name: str, objective: str | TextPrompt, model: BaseModelBackend | None = None, output_language: str | None = None, message_window_size: int | None = None, max_task_num: int | None = 3)[来源]#

基类:ChatAgent

一个帮助根据目标和最后完成的任务创建新任务的代理。与TaskPlannerAgent相比,它仍然是一个任务规划器,但具有更多上下文信息,如最后任务和未完成任务列表。修改自BabyAGI

task_creation_prompt#

一个提示,用于让代理创建新任务。

Type:

TextPrompt

Parameters:
  • role_name (str) - 要创建任务的Agent的角色名称。

  • objective (Union[str, TextPrompt]) - Agent执行任务的目标。

  • model (BaseModelBackend, optional) – 用于生成响应的LLM后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • max_task_num (int, optional) – 每轮计划任务的最大数量。(默认: :obj:3)

run(task_list: List[str]) List[str][来源]#

根据之前的任务结果和未完成任务列表生成子任务。

Parameters:

task_list (List[str]) – 已完成或进行中的任务列表,这些任务不应与新创建的任务重叠。

Returns:

由Agent生成的新任务列表。

Return type:

List[str]

class camel.agents.task_agent.TaskPlannerAgent(model: BaseModelBackend | None = None, output_language: str | None = None)[来源]#

基类:ChatAgent

一个帮助根据输入任务提示将任务划分为子任务的代理。

task_planner_prompt#

一个提示,让代理将任务分解为子任务。

Type:

TextPrompt

Parameters:
  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

run(task_prompt: str | TextPrompt) TextPrompt[来源]#

根据输入的任务提示生成子任务。

Parameters:

task_prompt (Union[str, TextPrompt]) – 用于将任务划分为子任务的提示。

Returns:

由代理生成的子任务提示。

Return type:

TextPrompt

class camel.agents.task_agent.TaskPrioritizationAgent(objective: str | TextPrompt, model: BaseModelBackend | None = None, output_language: str | None = None, message_window_size: int | None = None)[来源]#

基类:ChatAgent

一个帮助重新确定任务列表优先级并返回带编号的优先级列表的代理。修改自BabyAGI

task_prioritization_prompt#

一个提示,让代理优先处理任务。

Type:

TextPrompt

Parameters:
  • 目标 (Union[str, TextPrompt]) - Agent执行任务的目标。

  • model (BaseModelBackend, optional) – 用于生成响应的LLM后端。(默认: OpenAIModel 配合 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

run(task_list: List[str]) List[str][来源]#

根据代理目标对任务列表进行优先级排序。

Parameters:

task_list (List[str]) – 代理未优先处理的任务列表。

Returns:

由Agent生成的新优先级任务列表。

Return type:

List[str]

class camel.agents.task_agent.TaskSpecifyAgent(model: BaseModelBackend | None = None, task_type: TaskType = TaskType.AI_SOCIETY, task_specify_prompt: str | TextPrompt | None = None, word_limit: int = 50, output_language: str | None = None)[来源]#

基类:ChatAgent

一个通过提示用户提供更多细节来指定给定任务提示的代理。

DEFAULT_WORD_LIMIT#

任务提示的默认字数限制。

Type:

int

task_specify_prompt#

用于指定任务的提示。

Type:

TextPrompt

Parameters:
  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • task_type (TaskType, optional) – 生成提示的任务类型。(默认: TaskType.AI_SOCIETY)

  • task_specify_prompt (Union[str, TextPrompt], optional) – 用于指定任务的提示语。(默认: None)

  • word_limit (int, optional) – 任务提示的字数限制。 (默认值: 50)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

DEFAULT_WORD_LIMIT = 50#
run(task_prompt: str | TextPrompt, meta_dict: Dict[str, Any] | None = None) TextPrompt[来源]#

通过提供更多细节来指定给定的任务提示。

Parameters:
  • task_prompt (Union[str, TextPrompt]) - 原始任务提示。

  • meta_dict (Dict[str, Any], optional) - 一个包含要包含在提示中的附加信息的字典。 (默认: None)

Returns:

指定的任务提示。

Return type:

TextPrompt

模块内容#

class camel.agents.BaseAgent[来源]#

基类: ABC

所有CAMEL代理的抽象基类。

abstract reset(*args: Any, **kwargs: Any) Any[来源]#

将代理重置到初始状态。

abstract step(*args: Any, **kwargs: Any) Any[来源]#

执行代理的单个步骤。

class camel.agents.BaseToolAgent(name: str, description: str)[来源]#

基础类: BaseAgent

Creates a BaseToolAgent object with the specified name and

描述。

Parameters:
  • name (str) – 工具代理的名称。

  • description (str) – 工具代理的描述。

reset() None[来源]#

将代理重置到初始状态。

step() None[来源]#

执行代理的单个步骤。

class camel.agents.ChatAgent(system_message: BaseMessage | str | None = None, model: BaseModelBackend | List[BaseModelBackend] | None = None, memory: AgentMemory | None = None, message_window_size: int | None = None, token_limit: int | None = None, output_language: str | None = None, tools: List[FunctionTool | Callable] | None = None, external_tools: List[FunctionTool | Callable | Dict[str, Any]] | None = None, response_terminators: List[ResponseTerminator] | None = None, scheduling_strategy: str = 'round_robin', single_iteration: bool = False, agent_id: str | None = None)[来源]#

基础类: BaseAgent

用于管理CAMEL聊天代理对话的类。

Parameters:
  • system_message (Union[BaseMessage, str], optional) - 聊天代理的系统消息

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: ModelPlatformType.DEFAULT with ModelType.DEFAULT)

  • memory (AgentMemory, optional) – 用于管理聊天消息的代理内存。如果为None,将使用ChatHistoryMemory。 (默认值: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • token_limit (int, optional) – 上下文中的最大token数量。 上下文将自动修剪以满足此限制。 如果为None,将根据后端模型进行设置。 (默认值: None)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • 工具 (可选[列表[联合类型[FunctionTool, 可调用对象]]], 可选) – 可用的FunctionToolCallable列表。(默认值:None)

  • (可选[列表[联合类型[函数工具 (external_tools) – 字典[str, Any]]]], 可选): 外部工具列表 (FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将 直接返回请求而不是处理它。 (默认: None)

  • Callable – Dict[str, Any]]]], 可选): 外部工具列表 (FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将 直接返回请求而不是处理它。 (默认: None)

:paramDict[str, Any]]]], optional): List of external tools

(FunctionToolCallableDict[str, Any]) 绑定到一个聊天代理。当这些工具被调用时,代理将直接返回请求而不是处理它。 (默认: None)

Parameters:
  • response_terminators (List[ResponseTerminator], optional) – 绑定到一个聊天代理的ResponseTerminator列表。 (默认: None)

  • scheduling_strategy (str) - 定义如何在ModelManager中选择下一个模型的函数名称。(默认: :str:`round_robin`)

  • single_iteration (bool) - 是否让代理在每一步只执行一次模型调用。(默认: False)

  • agent_id (str, optional) – 代理的ID。如果未提供,将生成一个随机UUID。(默认值: None)

add_external_tool(tool: FunctionTool | Callable | Dict[str, Any]) None[来源]#
add_model_scheduling_strategy(name: str, strategy_fn: Callable)[来源]#

向ModelManger添加一个由用户提供的调度策略方法。

Parameters:
  • name (str) – 策略的名称。

  • strategy_fn (Callable) – 调度策略函数。

add_tool(tool: FunctionTool | Callable) None[来源]#

向代理添加一个工具。

async astep(input_message: BaseMessage | str, response_format: Type[BaseModel] | None = None) ChatAgentResponse[来源]#

通过生成对输入消息的响应来执行聊天会话中的单一步骤。此代理步骤可以调用异步函数。

Parameters:
  • input_message (Union[BaseMessage, str]) – 发送给agent的输入消息。对于BaseMessage类型的输入,其指定后端角色的role字段可以是userassistant,但无论如何都会被设置为user,因为对于自身agent来说任何传入消息都是外部的。对于str类型的输入,role_name将会是User

  • response_format (可选[Type[BaseModel]], optional) - 一个pydantic模型类,包含用于LLM生成结构化响应的值类型和字段描述。该模式有助于定义预期的输出格式。(默认: None)

Returns:

包含输出消息的结构体,

一个布尔值表示聊天会话是否已终止, 以及关于聊天会话的信息。

Return type:

ChatAgentResponse

property chat_history: List[ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam]#
clear_memory() None[来源]#

清除代理的内存并重置到初始状态。

Returns:

get_usage_dict(output_messages: List[BaseMessage], prompt_tokens: int) Dict[str, int][来源]#

在使用流模式时获取使用情况字典。

Parameters:
  • output_messages (list) - 输出消息列表。

  • prompt_tokens (int) - 输入提示词的数量。

Returns:

使用字典。

Return type:

字典

init_messages() None[来源]#

使用当前系统消息初始化存储的消息列表。

load_memory(memory: AgentMemory) None[来源]#

将提供的内存加载到agent中。

Parameters:

memory (AgentMemory) – 要加载到agent中的内存。

Returns:

load_memory_from_path(path: str) None[来源]#

从JSON文件中加载按此代理ID筛选的内存记录。

Parameters:

path (str) – 使用JsonStorage的JSON内存文件的文件路径。

Raises:

ValueError – 如果找不到与agent_id匹配的记录 (可选检查;下方已注释掉)。

property output_language: str | None#

返回代理的输出语言。

record_message(message: BaseMessage) None[来源]#

将外部提供的消息记录到代理内存中,就好像它是后端ChatAgent的答案一样。目前,评论者的选择是通过此方法提交的。

Parameters:

消息 (BaseMessage) – 需要记录在内存中的外部消息。

remove_external_tool(tool_name: str) bool[来源]#

按名称从代理中移除一个外部工具。

Parameters:

tool_name (str) – 要移除的工具名称。

Returns:

该工具是否已成功移除。

Return type:

布尔值

remove_tool(tool_name: str) bool[来源]#

根据名称从代理中移除一个工具。

Parameters:

tool_name (str) – 要移除的工具名称。

Returns:

该工具是否已成功移除。

Return type:

布尔值

reset()[来源]#

ChatAgent重置到初始状态。

save_memory(path: str) None[来源]#

从内存中检索当前对话数据,并使用JsonStorage将其写入JSON文件。

Parameters:

path (str) – 存储JSON数据的目标文件路径。

step(input_message: BaseMessage | str, response_format: Type[BaseModel] | None = None) ChatAgentResponse[来源]#

在聊天会话中执行单一步骤,生成对输入消息的响应。

Parameters:
  • input_message (Union[BaseMessage, str]) - 代理的输入消息。如果以BaseMessage形式提供,role会被调整为user以表示外部消息。

  • response_format (可选[类型[BaseModel]], 可选) – 一个Pydantic模型,用于定义响应的预期结构。如果提供,将用于生成结构化响应。(默认值:None)

Returns:

包含输出消息、终止状态

标志和会话信息。

Return type:

ChatAgentResponse

property system_message: BaseMessage | None#

返回该代理的系统消息。

property tool_dict: Dict[str, FunctionTool]#

返回内部工具的字典。

update_memory(message: BaseMessage, role: OpenAIBackendRole, timestamp: float | None = None) None[来源]#

使用新消息更新代理内存。

Parameters:
  • message (BaseMessage) – 要添加到存储消息中的新消息。

  • role (OpenAIBackendRole) – 后端角色类型。

  • timestamp (Optional[float], optional) – 内存记录的自定义时间戳。如果为None,将使用当前时间戳。 (default: None)

class camel.agents.CriticAgent(system_message: BaseMessage, model: BaseModelBackend | None = None, memory: AgentMemory | None = None, message_window_size: int = 6, retry_attempts: int = 2, verbose: bool = False, logger_color: Any = '\x1b[35m')[来源]#

基类:ChatAgent

一个用于辅助选择选项的critic代理类。

Parameters:
  • system_message (BaseMessage) – 评论代理的系统消息。

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • message_window_size (int, optional) – 上下文窗口中包含的最大历史消息数量。如果为None,则不执行窗口化操作。(默认值: 6)

  • retry_attempts (int, optional) – 如果critic未能返回有效选项时的重试次数。(默认值: 2)

  • verbose (bool, optional) – 是否打印critic的消息。

  • logger_color (Any) – 显示给用户的菜单选项的颜色。(默认: Fore.MAGENTA)

flatten_options(messages: Sequence[BaseMessage]) str[来源]#

将选项扁平化传递给critic。

Parameters:

messages (Sequence[BaseMessage]) – 一个BaseMessage对象的列表。

Returns:

一个包含传递给critic的扁平化选项的字符串。

Return type:

字符串

get_option(input_message: BaseMessage) str[来源]#

获取评论者选择的选项。

Parameters:

input_message (BaseMessage) – 一个表示输入消息的BaseMessage对象。

Returns:

评论者选择的选项。

Return type:

字符串

parse_critic(critic_msg: BaseMessage) str | None[来源]#

解析评论者的消息并提取选择。

Parameters:

critic_msg (BaseMessage) – 一个表示评论者响应的BaseMessage对象。

Returns:

评论者选择的字符串,如果无法解析消息则为None

消息无法被解析。

Return type:

可选[str]

reduce_step(input_messages: Sequence[BaseMessage]) ChatAgentResponse[来源]#

通过将选项扁平化传递给评论者、获取选项并解析选择,来执行对话的一个步骤。

Parameters:

input_messages (Sequence[BaseMessage]) – BaseMessage对象的列表。

Returns:

一个ChatAgentResponse对象包含

评论家的选择。

Return type:

ChatAgentResponse

class camel.agents.EmbodiedAgent(system_message: BaseMessage, model: BaseModelBackend | None = None, message_window_size: int | None = None, tool_agents: List[BaseToolAgent] | None = None, code_interpreter: BaseInterpreter | None = None, verbose: bool = False, logger_color: Any = '\x1b[35m')[来源]#

基类:ChatAgent

用于管理CAMEL实体代理对话的类。

Parameters:
  • system_message (BaseMessage) - 聊天代理的系统消息。

  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • tool_agents (List[BaseToolAgent], optional) – 在具身代理中使用的工具代理。(默认: None)

  • code_interpreter (BaseInterpreter, optional) – 用于执行代码的代码解释器。如果code_interpretertool_agent都为None,则默认为SubProcessInterpreter。如果code_interpreterNonetool_agents不为None,则默认为InternalPythonInterpreter。(默认值: None)

  • verbose (bool, optional) – 是否打印critic的消息。

  • logger_color (Any) – 显示给用户的日志记录器颜色。 (默认: Fore.MAGENTA)

get_tool_agent_names() List[str][来源]#

返回工具代理的名称。

Returns:

工具代理的名称。

Return type:

List[str]

step(input_message: BaseMessage) ChatAgentResponse[来源]#

执行对话中的一个步骤。

Parameters:

input_message (BaseMessage) – 输入消息。

Returns:

包含输出消息的结构体,

一个布尔值表示聊天会话是否已终止, 以及关于聊天会话的信息。

Return type:

ChatAgentResponse

class camel.agents.HuggingFaceToolAgent(name: str, *args: Any, remote: bool = True, **kwargs: Any)[来源]#

基础类: BaseToolAgent

Tool agent for calling HuggingFace models. This agent is a wrapper

围绕来自transformers库的代理。有关可用模型的更多信息,请参阅transformers文档,网址为https://huggingface.co/docs/transformers/transformers_agents

Parameters:
  • name (str) – 代理的名称。

  • *args (Any) – 传递给底层Agent类的额外位置参数。

  • remote (bool, optional) – 标识是否远程运行agent的标志。(默认: True)

  • **kwargs (Any) – 传递给底层Agent类的额外关键字参数。

chat(*args: Any, remote: bool | None = None, **kwargs: Any) Any[来源]#

在聊天对话模式下运行agent。

Parameters:
  • *args (Any) – 传递给代理的位置参数。

  • remote (bool, optional) - 标志位,指示是否远程运行代理。会覆盖默认设置。(默认: None)

  • **kwargs (Any) – 传递给代理的关键字参数。

Returns:

来自代理的响应。

Return type:

字符串

reset() None[来源]#

重置代理的聊天历史记录。

step(*args: Any, remote: bool | None = None, **kwargs: Any) Any[来源]#

以单次执行模式运行代理。

Parameters:
  • *args (Any) – 传递给代理的位置参数。

  • remote (bool, optional) - 标志位,指示是否远程运行agent。会覆盖默认设置。(默认: None)

  • **kwargs (Any) - 传递给代理的关键字参数。

Returns:

来自代理的响应。

Return type:

字符串

class camel.agents.KnowledgeGraphAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个能够从给定的Element内容中提取不同实体的节点和关系信息的代理。

task_prompt#

一个提示,用于让代理提取不同实体的节点和关系信息。

Type:

TextPrompt

run(element: Element, parse_graph_elements: bool = False, prompt: str | None = None) str | GraphElement[来源]#

运行代理程序以提取节点和关系信息。

Parameters:
  • element (Element) – 输入元素。

  • parse_graph_elements (bool, optional) – 是否解析为GraphElement。默认为False

  • prompt (str, optional) – 要使用的自定义提示词。 默认为 None

Returns:

提取的节点和关系

信息。如果parse_graph_elementsTrue则返回 GraphElement,否则返回str

Return type:

Union[str, GraphElement]

class camel.agents.RepoAgent(vector_retriever: VectorRetriever, system_message: str | None = 'You are a code assistant with repo context.', repo_paths: List[str] | None = None, model: BaseModelBackend | None = None, max_context_tokens: int = 2000, github_auth_token: str | None = None, chunk_size: int | None = 8192, top_k: int | None = 5, similarity: float | None = 0.6, collection_name: str | None = None, **kwargs)[来源]#

基类:ChatAgent

一个专门设计的代理程序,用于与GitHub仓库交互以完成代码生成任务。 RepoAgent通过集成一个或多个GitHub仓库的上下文来增强基础ChatAgent。它支持两种处理模式: - FULL_CONTEXT:加载并将完整仓库内容注入

提示。

  • RAG (检索增强生成): 检索相关

    当上下文长度超过指定的token限制时,使用向量存储获取代码/文档片段。

vector_retriever#

用于在RAG模式下执行语义搜索的检索器。当仓库内容超出上下文限制时需要。

Type:

VectorRetriever

system_message#

聊天代理的系统消息。(默认: :str:`"You are a code assistant with repo context."`)

Type:

可选[str]

repo_paths#

初始化期间要加载的GitHub仓库URL列表。(默认: None)

Type:

可选[List[str]]

model#

用于生成响应的模型后端。(默认: ModelPlatformType.DEFAULT 使用 ModelType.DEFAULT)

Type:

BaseModelBackend

max_context_tokens#

切换到RAG模式前允许的最大token数。(默认值: 2000)

Type:

可选[int]

github_auth_token#

GitHub个人访问令牌 用于访问私有或受速率限制的代码库。(默认值: None)

Type:

可选[str]

chunk_size#

为RAG索引文件时每个代码块的最大字符数。(默认: 8192)

Type:

可选[int]

top_k#

在RAG模式下从向量存储中检索的顶部匹配块的数量。(默认: 5)

Type:

int

similarity#

将块包含在RAG上下文中所需的最低相似度分数。(默认值: 0.6)

Type:

可选[浮点数]

collection_name#

用于存储和检索分块的向量数据库集合名称。(默认值:None)

Type:

可选[str]

\*\*kwargs

继承自ChatAgent

注意

当前RAG模式的实现需要使用Qdrant作为向量存储后端。如果未明确提供存储,VectorRetriever默认使用QdrantStorage。目前RepoAgent的RAG功能不支持其他向量存储后端。

add_repositories(repo_urls: List[str])[来源]#

将GitHub仓库添加到仓库列表中。

Parameters:

repo_urls (str) – 要添加的仓库URL。

check_switch_mode() bool[来源]#

检查当前上下文是否超出上下文窗口;如果超出,则切换到RAG模式。

Returns:

如果模式已切换则为True,否则为False。

Return type:

布尔值

construct_full_text()[来源]#

通过连接存储库构建完整的上下文文本。

count_tokens() int[来源]#

统计当前内存中的令牌数量

Returns:

令牌数量

Return type:

int

load_repositories(repo_urls: List[str]) List[RepositoryInfo][来源]#

加载GitHub仓库的内容。

Parameters:

repo_urls (str) – Repo URL列表。

Returns:

包含所有仓库信息的对象列表

包括内容信息。

Return type:

列表[仓库信息]

load_repository(repo_url: str, github_client: Github) RepositoryInfo[来源]#

加载GitHub仓库的内容。

Parameters:
  • repo_urls (str) - 要加载的仓库URL。

  • github_client (GitHub) – 已建立的GitHub客户端。

Returns:

包含信息的对象

关于仓库的信息,包括内容。

Return type:

RepositoryInfo

parse_url(url: str) Tuple[str, str][来源]#

解析GitHub URL并返回(owner, repo_name)元组。

Parameters:

url (str) – 要解析的URL。

Returns:

(owner, repo_name) 元组。

Return type:

元组[str, str]

reset()[来源]#

ChatAgent重置到初始状态。

search_by_file_path(file_path: str) str[来源]#

在向量数据库中搜索所有file_path匹配给定值(同一文件)的payload,然后按piece_num排序并拼接文本字段以返回完整结果。

Parameters:

file_path (str) – 用于过滤payload的file_path值。

Returns:

piece_num排序后的text字段连接字符串

piece_num

Return type:

字符串

step(input_message: BaseMessage | str, *args, **kwargs) ChatAgentResponse[来源]#

重写ChatAgent.step()方法,在将输入传递给语言模型之前,先从向量存储中检索相关上下文。

class camel.agents.RoleAssignmentAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个根据任务提示生成角色名称的agent。

Parameters:

model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

role_assignment_prompt#

供代理生成提示的提示词

Type:

TextPrompt

role names.
run(task_prompt: str | TextPrompt, num_roles: int = 2) Dict[str, str][来源]#

根据输入的任务提示生成角色名称。

Parameters:
  • task_prompt (Union[str, TextPrompt]) – 用于生成角色任务的基础提示。

  • num_roles (int, optional) – 要生成的角色数量。 (默认值: 2)

Returns:

一个字典,将角色名称映射到它们的

描述。

Return type:

字典[字符串, 字符串]

class camel.agents.SearchAgent(model: BaseModelBackend | None = None)[来源]#

基类:ChatAgent

一个根据查询总结文本并评估答案相关性的代理。

Parameters:

model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

根据提供的答案询问是否继续搜索。

Parameters:
  • query (str) – 问题内容。

  • answer (str) – 问题的答案。

Returns:

True 如果用户希望继续搜索,False 则表示不继续。

Return type:

布尔值

summarize_text(text: str, query: str) str[来源]#

根据查询总结文本中的信息。

Parameters:
  • text (str) – 需要总结的文本。

  • query (str) – 您想要查询的信息。

Returns:

包含信息的字符串。

Return type:

字符串

class camel.agents.TaskCreationAgent(role_name: str, objective: str | TextPrompt, model: BaseModelBackend | None = None, output_language: str | None = None, message_window_size: int | None = None, max_task_num: int | None = 3)[来源]#

基类:ChatAgent

一个帮助根据目标和最后完成的任务创建新任务的代理。与TaskPlannerAgent相比,它仍然是一个任务规划器,但具有更多上下文信息,如最后任务和未完成任务列表。修改自BabyAGI

task_creation_prompt#

一个提示,用于让代理创建新任务。

Type:

TextPrompt

Parameters:
  • role_name (str) - 要创建任务的Agent的角色名称。

  • 目标 (Union[str, TextPrompt]) - Agent执行任务的目标。

  • model (BaseModelBackend, optional) – 用于生成响应的LLM后端。(默认: OpenAIModel 配合 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

  • max_task_num (int, optional) – 每轮计划任务的最大数量。(默认: :obj:3)

run(task_list: List[str]) List[str][来源]#

根据之前的任务结果和未完成任务列表生成子任务。

Parameters:

task_list (List[str]) – 已完成或进行中的任务列表,这些任务不应与新创建的任务重叠。

Returns:

由Agent生成的新任务列表。

Return type:

List[str]

class camel.agents.TaskPlannerAgent(model: BaseModelBackend | None = None, output_language: str | None = None)[来源]#

基类:ChatAgent

一个帮助根据输入任务提示将任务划分为子任务的代理。

task_planner_prompt#

一个提示,让代理将任务分解为子任务。

Type:

TextPrompt

Parameters:
  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

run(task_prompt: str | TextPrompt) TextPrompt[来源]#

根据输入的任务提示生成子任务。

Parameters:

task_prompt (Union[str, TextPrompt]) – 用于将任务划分为子任务的提示。

Returns:

由代理生成的子任务提示。

Return type:

TextPrompt

class camel.agents.TaskPrioritizationAgent(objective: str | TextPrompt, model: BaseModelBackend | None = None, output_language: str | None = None, message_window_size: int | None = None)[来源]#

基类:ChatAgent

一个帮助重新确定任务列表优先级并返回带编号的优先级列表的代理。修改自BabyAGI

task_prioritization_prompt#

一个提示,让代理优先处理任务。

Type:

TextPrompt

Parameters:
  • 目标 (Union[str, TextPrompt]) - Agent执行任务的目标。

  • model (BaseModelBackend, optional) – 用于生成响应的LLM后端。(默认: OpenAIModel 配合 GPT_4O_MINI)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

  • message_window_size (int, optional) – 上下文窗口中包含的先前消息的最大数量。如果为None,则不执行窗口化操作。(默认值: None)

run(task_list: List[str]) List[str][来源]#

根据代理目标对任务列表进行优先级排序。

Parameters:

task_list (List[str]) – 代理未优先处理的任务列表。

Returns:

由Agent生成的新优先级任务列表。

Return type:

List[str]

class camel.agents.TaskSpecifyAgent(model: BaseModelBackend | None = None, task_type: 任务类型 = TaskType.AI_SOCIETY, task_specify_prompt: str | TextPrompt | None = None, word_limit: int = 50, output_language: str | None = None)[来源]#

基类:ChatAgent

一个通过提示用户提供更多细节来指定给定任务提示的代理。

DEFAULT_WORD_LIMIT#

任务提示的默认字数限制。

Type:

int

task_specify_prompt#

用于指定任务的提示。

Type:

TextPrompt

Parameters:
  • model (BaseModelBackend, optional) – 用于生成响应的模型后端。(默认: OpenAIModel 使用 GPT_4O_MINI)

  • task_type (TaskType, optional) – 生成提示的任务类型。(默认: TaskType.AI_SOCIETY)

  • task_specify_prompt (Union[str, TextPrompt], optional) – 用于指定任务的提示语。(默认: None)

  • word_limit (int, optional) – 任务提示的字数限制。 (默认值: 50)

  • output_language (str, optional) – 代理输出的语言。(默认: None)

DEFAULT_WORD_LIMIT = 50#
memory: AgentMemory#
role_name: str#
role_type: 角色类型#
run(task_prompt: str | TextPrompt, meta_dict: Dict[str, Any] | None = None) TextPrompt[来源]#

通过提供更多细节来指定给定的任务提示。

Parameters:
  • task_prompt (Union[str, TextPrompt]) - 原始任务提示。

  • meta_dict (Dict[str, Any], optional) - 一个包含要包含在提示中的附加信息的字典。 (默认: None)

Returns:

指定的任务提示。

Return type:

TextPrompt

task_specify_prompt: str | TextPrompt#