智能体(Agent):理解其核心思想与组件

概要

在人工智能领域,智能体(Agent)是一种能够自主做出决策并执行一系列动作的软件实体。特别是当结合了语言模型之后,智能体不仅能够根据预定义的规则行动,还能通过推理来选择最佳的操作路径。本文将深入探讨智能体的核心思想,以及构成智能体的关键组件。
智能体的核心思想
智能体的核心思想是利用语言模型作为推理引擎,来决定执行的操作序列以及执行的顺序。与传统的链式操作不同,智能体的操作不是硬编码在程序中的,而是动态生成的。这意味着智能体可以根据当前的情境和之前的经验来做出决策。

整体架构流程

提示:这里可以添加技术整体架构

例如:
在语言模型中,编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。

关键组件

要全面理解智能体的工作原理,我们需要了解以下几个关键组件:

AgentAction 代理操作
代理操作表示智能体应执行的动作。它包含两个属性:tool(应调用的工具名称)和tool_input(该工具的输入)。

AgentFinish 代理完成
当智能体准备好向用户返回结果时,它会发出一个AgentFinish信号。该信号包含一个键值映射return_values,其中包含了最终的输出。通常情况下,这个映射会包含一个output键,该键对应的值是一个字符串,代表智能体的响应。

Intermediate Steps 中间步骤
中间步骤表示智能体在此前运行期间执行的操作以及相应的输出。这些步骤对于未来的迭代至关重要,因为它们告诉智能体已经完成了哪些工作。中间步骤通常表示为一个List[Tuple[AgentAction, Any]]的列表。

Agent 代理
代理是决定下一步要采取什么措施的逻辑单元。这一逻辑通常由语言模型、提示(Prompt)和输出解析器共同支持。不同的智能体有不同的推理提示风格、不同的输入编码方式以及不同的输出解析方式。

Agent Inputs 代理输入
代理的输入是一个键值映射。其中一个必需的键是intermediate_steps,它包含了之前的操作及其输出。通常情况下,PromptTemplate负责将这些键值对转换为最适合传递给语言模型的形式。

Agent Outputs 代理输出
代理输出是要执行的下一个操作或要发送给用户的最终响应(AgentAction或AgentFinish)。具体来说,它可以被定义为Union[AgentAction, List[AgentAction], AgentFinish]类型。输出解析器负责将原始的语言模型输出转换为这三种类型之一。

AgentExecutor 代理执行器
代理执行器是智能体的运行时环境。它负责调用智能体,执行智能体选择的操作,并将操作的输出传递回智能体,然后重复这一过程。在伪代码中,这一过程大致如下:

next_action = agent.get_action(...)
while next_action != AgentFinish:
    observation = run(next_action)
    next_action = agent.get_action(..., next_action, observation)
return next_action

尽管看似简单,但这个运行时环境处理了一些复杂性,包括:

处理智能体选择不存在的工具的情况。
处理工具执行失败的情况。
处理智能体生成无法解析为工具调用的输出的情况。
对所有级别的代理决策和工具调用进行日志记录和监控(stdout 和/或 LangSmith)。

Tools 工具
工具是智能体可以调用的功能。工具抽象由两部分组成:

  • 输入方案:定义了语言模型调用工具所需的参数。合理的命名和描述使得语言模型知道正确的输入形式。

  • 执行函数:通常是一个被调用的Python函数。

如果智能体没有正确的工具集,它将无法完成既定目标。而如果没有恰当地描述这些工具,智能体也无法正确使用它们。LangChain提供了广泛的内置工具,并支持自定义工具的定义。

代理类型

代理类型可以从多个维度进行分类:

预期型号类型
此代理是用于聊天模型(接收消息并输出消息)还是LLMs(接收字符串并输出字符串)。这主要影响的是所使用的提示策略。使用与预期模型类型不同的代理可能会导致结果质量下降。

支持聊天记录
代理类型是否支持聊天记录。支持聊天记录意味着它可以用于聊天机器人。如果不支持,则更适合单次任务。支持聊天记录通常需要更好的模型支持。

支持多输入工具
代理类型是否支持具有多个输入的工具。如果一个工具只需要一个输入,通常LLM更容易知道如何调用它。因此,针对较弱模型的早期代理类型可能不支持多输入工具。

支持并行函数调用
是否支持同时调用多个工具。并行调用可以加快代理的速度,但需要更强的语言模型支持。

必需的模型参数
此代理是否要求模型支持任何其他参数。某些代理类型利用了如OpenAI函数调用等功能,这需要额外的模型参数支持。

小结

通过本文,我们介绍了智能体(Agent)的核心思想及其关键组件。理解这些概念对于设计和实现能够自主决策并执行任务的智能体至关重要。希望这篇博客能够帮助你更好地理解和应用智能体技术,以提升你的项目或产品的智能化水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值