AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”

本文主要是介绍AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Agent基本架构

    先谈谈Agent基本架构概念,如果看得云里雾里,等看完本篇之后,再回头看就会豁然开朗的,而我尽量写得更易懂: ) 这里面会穿插着上一篇的内容,请大家记得往回翻翻,传送门:

AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇)

  • AgentAction

    其中,两个重要属性(其实、还有tool_call_id,以后用到再介绍)

    • tool:可理解成“函数名”

    • tool_input:可理解成“函数参数”

    为了好理解,我这样写

func_ret = {"search_article": search_article()}[each.tool].invoke(each.tool_input)

    其实,如果按照更正规的写法应该这样

# 注意,这里我用了observation(“观察”),可参考我的上一篇文章进行回顾
observation = {tool.name: tool for tool in tools}[each.tool].invoke(each.tool_input)
  • AgentFinish

    可以通过这个key:return_values获得结果内容

intermediate_steps = []
while not isinstance(res := agent.invoke({"input": "AI菜鸟向前飞系列文章出自哪里?", "intermediate_steps": intermediate_steps}), AgentFinish):for each in res:observation = {tool.name: tool for tool in tools}[each.tool].invoke(each.tool_input)intermediate_steps.append((each, observation))# 请注意这里:)
print(res.return_values)
  • Intermediate Steps (中间步骤)

    感觉称它为“之前”的步骤,更易懂

    记录之前AgentAction的内容和结果

intermediate_steps.append((each, func_ret.content))

    在下一次调用的时候,一定要带上它

agent.invoke({"input": "AI菜鸟向前飞系列文章出自哪里?", "intermediate_steps": intermediate_steps}
  • AgentInput

    所需要输入的intermediate_steps,上面介绍了👆

  • AgentOutput

    所要采取的下一步行动(Action)或发送给用户的最终响应结果(return_values),即:AgentAction或AgentFinish.

    现在,相信你更懂它了,对吧?

    让我们稍微深入了解它们,官方资料如是说:

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

    但是也是浮于表面,例如:什么时候才真正的AgentFinish?Tool与LLM的交互到底是怎样的?先看这张图吧, 让我们通过源码分析吧。

    不会真的看代码吧,那太复杂了,当然不会,请看图吧: )

Agent运行机制

    抽丝剥茧~ 看以下两张图就懂了,不懂可找我: )

  • 图一:(是不是很熟悉,这就是LCEL,同时也是Agent的创建方式)

图片

请参考:

AI菜鸟向前飞 — LangChain系列之六 - 深入浅出LCEL与Chain(上篇)

AI菜鸟向前飞 — LangChain系列之七 - 深入浅出LCEL与Chain(中篇)

AI菜鸟向前飞 — LangChain系列之八 - 深入浅出LCEL与Chain(下篇)

  • 图二:(重点来了,一个Agent的“旅行”)

图片

    看完之后是不是清晰多了,但还不够,例如:

    • tool_calls是如何与Agent执行结果以及和LLM交互之后,可以找到正确的结果的

    • 这里面没提到的ToolCall、ToolMessage 以及它们之间的关系

    • 过程对象,如:ChatResult、LLMResult,它们各是指什么?

    • 还有,各种XXChunks是什么?各代表什么含义?

    • additional_kwargs的用处是什么?

    • …………

    若大家对这方面感兴趣,可持续关注我,有需要我还会“娓娓道来”,再给大家做深入介绍:)

这篇关于AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012862

相关文章

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制