简介

文章介绍了大模型Agent的定义与分级体系,从简单处理器到多Agent系统。重点阐述了多步Agent基于ReAct框架的实现原理,即通过"推理-行动"循环,结合提示词与代码工程,让大模型逐步解决问题。文章通过dify平台的实例展示了Agent的实际工作流程,并提供了源码解析,帮助读者理解Agent如何通过循环调用工具来解决复杂任务。


一、Agent定义

Agent一般翻译为智能体,但不同的公司、不同的人对Agent的理解不一样,有些人觉得系统足够智能,能自主解决问题才叫Agent,有些人觉得只要有大模型参与的都算Agent。

我这里采用与smolagents项目一致的观点,只要是用到了大模型的应用,都算Agent,只不过不同Agent其智能程度有分级:

Agent的分级:

Agent 能力级别 描述 名称 示例模式
☆☆☆ LLM 输出对程序流程没有影响 简单处理器 process_llm_output(llm_response)
★☆☆ LLM 输出决定 if/else 分支 路由 if llm_decision(): path_a() else: path_b()
★★☆ LLM 输出决定函数执行 工具调用者 run_function(llm_chosen_tool, llm_chosen_args)
★★★ LLM 输出控制迭代和程序继续 多步 Agent while llm_should_continue(): execute_next_step()
★★★ 一个 agent 工作流可以启动另一个 agent 工作流 多 Agent if llm_trigger(): execute_agent()

用dify流程示例不同分级

☆☆☆

★☆☆

★★☆

★★★

二、多步Agent原理

只要底层是大模型驱动的产品,不管功能看起来多高级,只要记住一件事:大模型只是token预测器,或者说是文本生成器,它没有执行代码的能力,也没有调用接口的能力,一切的AI产品都是基于工程化的能力来实现的

基本上现在所有的多步Agent都是基于ReAct 框架实现的:
该名称基于两个词的组合:“Reason” (推理)和 “Act” (行动)。遵循此架构的 agent 将根据需要尽可能多的步骤来解决其任务,每个步骤包括一个推理步骤,然后是一个行动步骤,在每一个步骤中,决定工具的调用,每一次循环解决一部分问题,通过一次次循环,使其更接近解决手头的任务。

如何实现ReAct框架?

总结一句话就是,提示词与代码工程的结合:通过工程代码,循环执行同一个llm节点,但每一次执行时,提示词都多出上一轮的结果

基本上所有Agent工程的代码的核心都是这段:

memory = [user_defined_task]

三、实例

以dify的Agent节点为例

在此流程中我的问题是 :现在是几点,今天星期几,明天星期几

以下是执行过程日志(删除了无关紧要的部分),注意观察Action部分:

[

通过以上日志,可以看到模型为了回答我的问题:现在几点了,今天星期几,明天星期几(实际上包含了三个子问题),进行了三轮循环,调用了三次模型,每次模型为了解决一个子问题提出了要调用某个工具,并给出了参数。

查看dify的agent节点源码来了解原理

提示词部分:

ENGLISH_REACT_COMPLETION_PROMPT_TEMPLATES = """Respond to the human as helpfully and accurately as possible.
{{instruction}}
You have access to the following tools:
## 这里指定了可以用的方法,实际上mcp的作用之一就是获取工具列表填充到这个变量中{{tools}}
## 这里告诉模型,用action格式给出要执行的工具,或者给出Final Answer来告诉智能体,不需要再循环了Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).Valid "action" values: "Final Answer" or {{tool_names}}
Provide only ONE action per $JSON_BLOB, as shown:
```{  "action": $TOOL_NAME,  "action_input": $ACTION_INPUT}```
## 这里提出让模型遵循action块的格式循环输出Follow this format:
Question: input question to answerThought: consider previous and subsequent stepsAction:```$JSON_BLOB```Observation: action result... (repeat Thought/Action/Observation N times)Thought: I know what to respondAction:```{  "action": "Final Answer",  "action_input": "Final response to human"}```
Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.{{historic_messages}}Question: {{query}}
## 这里就是追加每轮得到的结果的变量{{agent_scratchpad}}Thought:"""# noqa: E501

dify-Agent关键源码

# 循环while function_call_state and iteration_step <= max_iteration_steps:# 1. 创建agent思考记录    agent_thought_id = self.create_agent_thought(...)
# 2. 组织提示消息,这里会把第 5 步得到的工具调用结果追加到提示词中    prompt_messages = self._organize_prompt_messages()
# 3. 调用LLM    chunks = model_instance.invoke_llm(        prompt_messages=prompt_messages,        tools=prompt_messages_tools,        stream=True    )
# 4. 解析输出if strategy == "cot":# 使用CoT解析器        react_chunks = CotAgentOutputParser.handle_react_stream_output(chunks)else:# 使用函数调用解析器        tool_calls = self.extract_tool_calls(chunks)
# 5. 执行工具调用if tool_calls:        tool_responses = self._handle_invoke_action(...)
# 6. 更新状态    iteration_step += 1

通过dify普通节点手动实现一个Agent

代码看起来不直观,这里在dify中使用普通节点模拟了一个Agent

四、AI大模型学习和面试资源

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
在这里插入图片描述

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

更多推荐