首页 > 其他分享 >AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中间步骤“的Agent

AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中间步骤“的Agent

时间:2024-06-05 17:29:14浏览次数:12  
标签:系列 Song 菜鸟 agent intermediate steps Agent 榆钱儿

前言

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

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

    回顾前两篇文章,大家会发现一个问题

    为什么每次Agent在invoke的时候需要多加一个intermediate_steps(即:中间步骤),例如:

    预先准备一个Tool

# 一款Agent的诞生
from langchain.agents import create_react_agent
agent = create_react_agent(llm=model, tools=tools, prompt=prompt)

intermediate_steps = []
agent.invoke(
            {
                "input": "我是你的好朋友——Song榆钱儿",
                "intermediate_steps": intermediate_steps,
            }
        )

    多传一个空的列表,只是为了agent_scratchpad,那不然呢?:( 

   不传还不行,例如:

agent.invoke({"input": "我是你的好朋友——Song榆钱儿"})

结果

……(此处省略)
agent_scratchpad=lambda x: format_log_to_str(x["intermediate_steps"]),
KeyError: 'intermediate_steps'

解决办法

  • 常规方法

    有没有一种不需要传这个“多余”的参数方式,很多资料推荐你直接用AgentExecutor……  *_*

agent_executor = AgentExecutor(agent=agent, tools=tools)
agent_executor.invoke({"input": "我是你的好朋友——Song榆钱儿"})

结果

{'input': '我是你的好朋友——Song榆钱儿', 
 'output': '你好,Song榆钱儿!很高兴见到你。'}

    这么做没毛病,也倒是一种解法(很多资料也会这么讲)但当前这系列讲的是Agent呢:)

    我们来看看另一种、你没见过的解法:

  • 终极解法

# 一款“新”Agent的诞生
from langgraph.prebuilt import create_react_agent
agent = create_react_agent(llm=model, tools=tools, messages_modifier=some_prompt)

agent.invoke(**{"input": {"messages": "我是你的好朋友——Song榆钱儿"}})

结果

{'messages': 
 [HumanMessage(content='我是你的好朋友——Song榆钱儿' …… )
  AIMessage(content='', …… , tool_calls=[{'name': 'greeting', 'args': {'string': 'Song榆钱儿'}, 'id': ''}])
  ToolMessage(content='你好啊,Song榆钱儿', name='greeting' …… ),AIMessage(content='哇,Song榆钱儿!很高兴见到你!有什么好玩的事儿或者问题想和我分享吗?' ……)
  ]
}

请注意:上面结果,省略了一些 当前看上去“多余”的元素

是不是很有意思,这样Agent在invoke的时候,就不需要带intermediate_steps中间步骤了,其中的运行机制,在介绍LangGraph的时候再跟大家说哈(因为无需传递中间步骤,只是从调用者角度来看的)

大家可自行结合我之前发的文章,看看这两类Agent在使用方面有何不同

那么,Agent系列就此结束,大家期待下一篇吧:)

标签:系列,Song,菜鸟,agent,intermediate,steps,Agent,榆钱儿
From: https://blog.csdn.net/soukingang/article/details/139477459

相关文章

  • docker使用Open Policy Agent(OPA)进行访问控制
    目录一.系统环境二.前言三.OpenPolicyAgent简介四.Rego语言简介五.配置基本环境六.docker安装OPA插件6.1安装docker6.2docker安装OPA插件6.3启用OPA七.OPA规则7.1允许docker所有操作7.2禁止docker所有操作7.3禁止创建允许所有系统调用的docker容器7.4根据Authz-User判......
  • stm32系列--同一定时器双通道捕获
     voidTIM3_Cap_Init(u16arr,u16psc)//定时器3通道2输入捕获配置{TIM_ICInitTypeDefTIM_ICInitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;R......
  • 赛博斗地主——使用大语言模型扮演Agent智能体玩牌类游戏。
    通过大模型来实现多个智能体进行游戏对局这个想对已经比较成熟了无论是去年惊艳的斯坦福小镇还是比如metaGPT或者类似的框架都是使用智能体技术让大模型来操控,从而让大模型跳出自身“预测下一个token”的文字功能去探索更多的应用落地可能性。不过一直没有真正操作过,直到前段时间......
  • Redis 常用的数据结构简介与实例测试【Redis 系列二】
    〇、都有哪些数据结构?Redis提供了较为丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stream(5.0版新增)。本文将对以上数据类型,通......
  • stm32系列--低电平时间的测量
     TIM_ICInitTypeDefTIM2_ICInitStructure;voidTIM2_CH1_Cap_Init(u16arr,u16psc){GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1Peri......
  • 【LLaVA系列】CLIP/LLaVA/LLaVA1.5/VILA 模型全面梳理!
    节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。合集:持续火爆!!!《AIGC面试宝典》已圈粉无......
  • python系列:一文读懂FastAPI:Python 开发者的福音
    一文读懂FastAPI:Python开发者的福音一文读懂FastAPI:Python开发者的福音第一步:安装FastAPI第二步:创建一个FastAPI应用第三步:定义接口第四步:运行应用第五步:查看接口文档总结一文读懂FastAPI:Python开发者的福音FastAPI是一个基于Python的现代化Web框架,它提供了快......
  • 前端工程化工具系列
    所有和前端工程化工具的系列合集,快速提升开发效率。文档持续更新中,敬请期待~感兴趣的可收藏前端工程化这个专栏已完成  前端工程化工具系列(一)——ESLint(v9.4.0):代码质量守护者基础篇  前端工程化工具系列(二)——ESLint(v9.4.0):代码质量守护者进阶篇  前端工......
  • 【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解
    SVG生成系列论文(一)和SVG生成系列论文(二)分别介绍了StarVector的大致背景和详细的模型细节。SVG生成系列论文(三)和SVG生成系列论文(四)则分别介绍实验、数据集和数据增强细节。SVG生成系列论文(五)介绍了从光栅图像(如PNG、JPG格式)转换为矢量图形(如SVG、EPS格式)的关......
  • 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(四)---- C语言与计算机架构(Programmin
    系列文章目录操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)----操作系统介绍与接口示例操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建(wsl2+ubuntu+quem+xv6)操作系统入门系列-MIT6.828(操作系统工程)学习笔记(三)----xv6初探与实验一(Lab:Xv6and......