Agent的概念

概念:

在AI领域,AI是一种能够感知环境(通过传感器接受用户的文本、语音、文件等信息和问题)进行自主理解,进行决策和执行动作的智能实体。

原理

Agent = 大脑(LLM)+记忆(memory)+任务规划(planner)+工具使用(MCP)+行动(Action)

Agent本质上翻译过来是代理的意思,所以它能代表你处理任务,所以它要有人的记忆和大脑,有规划能力和处理的工具和实际行动。

AI agent工作流程

prompt提示词

提示词是Agent接受到的初始输入,描述了Agent需要完成的任务或解决的问题

LLM大模型

大模型是agent进行任务规划和知识推理的重要工具,利用LLM大模型对提示词进行深入分析,生成可能的解决方案。

Memory记忆

可以保留当前用户输入内容,上下文内容,外部向量存储的知识库,网页信息等。

planning规划

定义:

任务规划是agent根据提示词、大模型以及知识库进行决策和规划的过程。它涉及对任务的分解、目标的设定、路径的规划等

实现方式:

图中“规划”这一步,在目前绝大多数基于大模型的Agent系统中,正是通过精心设计的提示词来驱动和实现的。提示词是“规划”这一步的剧本和指令手册。当用户的复杂请求进入系统后,并不是直接交给工具,而是先交给LLM理解意图。

例子:

假设用户输入是:“我周末想去公园散步,不知道天气怎么样,去的时候给我放点轻松的音乐吧。”,提示词应该如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
角色与目标:
你是一个智能任务规划助手。你的唯一任务是将用户的自然语言请求,精确地分解为一个结构化的、可执行的行动计划。该计划由一系列顺序或并行的子任务组成。

可用工具库:
在你进行规划时,只能从以下工具中选择。请确保用户的请求确实需要调用工具,如果不需要,则输出一个空列表。
weather_query (天气查询):用于查询当前或未来某个时间、地点的天气情况。
map_search (地图搜索):用于搜索地点、查询路线、查找附近设施(如公园、餐厅)。
music_play (音乐播放):用于根据风格、歌手、心情或特定名称播放音乐或歌单。

输出格式指令:
你必须严格使用以下JSON数组格式模版输出,且不能包含任何其他解释性文字。每个JSON对象代表一个原子任务。
模版如下:
[
{
"step_number": 1,
"description": "简要描述这个步骤要做什么",
"tool": "工具名称",
"parameters": {
"参数1": "值1",
"参数2": "值2"
}
},
...
]

参数说明:
对于 weather_query,参数包括:location (地点), time (时间,如“本周末”)。
对于 map_search,参数包括:query (搜索内容,如“附近的公园”)。
对于 music_play,参数包括:genre (音乐风格,如“轻松”)。

思考过程(这部分在心中进行,无需输出):
理解意图: 用户的核心诉求是什么?隐含的需求是什么?
任务分解: 完成这个诉求需要哪几个独立的步骤?
工具匹配: 每个步骤最适合用哪个工具来完成?
参数提取: 从用户输入中提取出调用工具所需的关键参数。
示例演示

用户输入:
“我周末想去公园散步,不知道天气怎么样,去的时候给我放点轻松的音乐吧。”

期望的LLM输出(Planning结果):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[
{
"step_number": 1,
"description": "查询用户所在地本周末的天气情况,以判断是否适合散步。",
"tool": "weather_query",
"parameters": {
"location": "用户当前位置",
"time": "周末"
}
},
{
"step_number": 2,
"description": "搜索用户附近适合散步的公园。",
"tool": "map_search",
"parameters": {
"query": "附近的公园"
}
},
{
"step_number": 3,
"description": "准备一个轻松风格的音乐播放列表。",
"tool": "music_play",
"parameters": {
"genre": "轻松"
}
}
]
提示词设计解析:

角色定位明确: “任务规划助手”让LLM聚焦于分解,而非直接回答。

工具库限定: 防止LLM“幻想”出不存在的工具,确保计划的可行性。

输出格式强制化: 使用严格的JSON格式,这使得后续的程序能够自动解析这个输出,并准确地触发相应的工具节点。这是连接“规划”与“行动”的关键桥梁。

参数引导: 提示词中给出了关键参数的例子,引导LLM正确地从用户输入中提取和映射信息。

Action 行动

定义:

行动执行是agent根据任务规划结果执行具体操作的过程,包含工具:计算器、代码解释器、搜索、API等。

大模型输出JSON之后,正确的做法是:将其交给工具节点去执行。

标准且高效的工作流设计:

1、Planning LLM节点: 接收用户输入,输出结构化的JSON计划(正如我们之前设计的)。

2、代码节点(解析与分发): 这个JSON输出会被下一个代码节点 接收。这个代码节点的职责是:

解析 JSON。

按顺序或并行地 调用 weather_query、map_search、music_play 等工具节点。

收集 所有工具节点的返回结果。

3、工具节点们: 被代码节点调用,执行具体任务并返回数据。

天气查询节点 返回天气数据。

地图搜索节点 返回公园列表。

音乐播放节点 返回一个播放链接或确认信息。

4、合成LLM节点: 最后,将原始用户问题和所有工具的执行结果,一并输入给一个新的、专门的LLM节点。

为什么要在最后加入一个LLM?

这最后一个LLM节点至关重要,它的角色是 “合成官” 。它的系统提示词大概是这样的:

1
“你是一个回答合成助手。你将收到用户的原始请求和一系列工具的执行结果。你的任务是根据这些结果,组织一段自然、友好、信息完整的最终回复给用户。请直接给出回复,不要提及你收到了JSON数据或工具结果。”

好处:

用户体验好: 最终回复是流畅的自然语言,而不是生硬的数据堆砌。

容错性强: 如果某个工具调用失败或返回空结果,这个LLM可以灵活处理,比如告诉用户“暂时没找到附近的公园,但天气很好,您可以选择一个熟悉的地方去散步。”

信息整合: 它可以将多个工具的信息编织成一个连贯的答案。

完整工作流图示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
用户输入
|
v
[Planning LLM] -> 输出JSON计划
|
v
[代码节点] -> 解析JSON,按序调用工具
|-------------> [天气工具] -> 返回天气数据
|-------------> [地图工具] -> 返回公园列表
|-------------> [音乐工具] -> 返回播放链接
|
v (收集所有结果)
[合成LLM] -> 接收“用户输入”和“所有工具结果”
|
v
最终回复给用户
结论

核心原则: 一个LLM负责规划,另一个LLM负责合成,中间是纯粹的工具执行。 这是一种高效的“思考-行动-总结”的流水线模式。

在Coze平台上的实现: 可以利用“代码节点”来充当那个解析和分发的中枢,然后最后连接一个“LLM节点”来生成优雅的最终答案。

例子介绍

任务:调用agent处理客户的退货请求

prompt:我想退货订单编号为#12345的商品,原因是商品有缺陷。

LLM:大语言模型解析请求,确定客户想退货,并识别出订单号和退货原因

memory:agent检查到有这个订单,然后检索订单编号为#12345的订单信息,基于订单信息核对商品是否符合退货条件,并检查库存状态。

planning:agent首先验证订单和退货条件,然后生成退货标签,再通知仓库处理退货,最后反馈给客户。

tools:调用中通快递,形成揽件订单。调用账户工具,给用户退费等等

action:agent按照计划执行各项任务,处理客户的退货请求。

常见的Agent开发平台

百度AgentBuilder:https://agents.baidu.com/center

字节扣子平台:https://www.coze.cn/home

昆仑万维天工SkyAgents平台:https://model-platform-skyagents.tiangong.cn/home/agent

AgentGPT:https://agentgpt.reworkd.ai/zh

LangChain:https://github.com/langchain-ai/langchain

AutoGen:https://github.com/microsoft/autogen

ChatDev:https://github.com/OpenBMB/ChatDev

CrewAI:https://github.com/joaomdmoura/crewAI

Coze平台

Coze是由字节跳动推出的一个Ai聊天机器人和应用程序编辑开发平台

Coze提供了多种插件、知识、工作流、长期记忆和定时任务等功能,来增强聊天机器人的能力和交互性,而且可以将搭建的Bot发布到各类社交平台和通讯软件,让更多用户和你搭建的bot聊天