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

本文主要是介绍AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中间步骤“的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系列就此结束,大家期待下一篇吧:)

这篇关于AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中间步骤“的Agent的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学