位置: IT常识 - 正文

LangChain Agent 执行过程解析 OpenAI

编辑:rootadmin
LangChain Agent 执行过程解析 OpenAI LangChain Agent 执行过程解析什么是LangChain Agent例子工作原理什么是LangChain Agent

推荐整理分享LangChain Agent 执行过程解析 OpenAI,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

简单来说,用户像LangChain输入的内容未知。此时可以有一套工具集合(也可以自定义工具),将这套自定义工具托管给LLM,让其自己决定使用工具中的某一个(如果存在的话)

例子

首先,这里自定义了两个简单的工具

from langchain.tools import BaseTool# 天气查询工具 ,无论查询什么都返回Sunnyclass WeatherTool(BaseTool): name = "Weather" description = "useful for When you want to know about the weather" def _run(self, query: str) -> str: return "Sunny^_^" async def _arun(self, query: str) -> str: """Use the tool asynchronously.""" raise NotImplementedError("BingSearchRun does not support async")# 计算工具,暂且写死返回3class CustomCalculatorTool(BaseTool): name = "Calculator" description = "useful for when you need to answer questions about math." def _run(self, query: str) -> str: return "3" async def _arun(self, query: str) -> str: raise NotImplementedError("BingSearchRun does not support async")

接下来是针对于工具的简单调用:注意,这里使用OpenAI temperature=0需要限定为0

from langchain.agents import initialize_agentfrom langchain.llms import OpenAIfrom CustomTools import WeatherToolfrom CustomTools import CustomCalculatorToolllm = OpenAI(temperature=0)tools = [WeatherTool(), CustomCalculatorTool()]agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)agent.run("Query the weather of this week,And How old will I be in ten years? This year I am 28")

看一下完整的响应过程:

I need to use two different tools to answer this questionAction: WeatherAction Input: This weekObservation: Sunny^_^Thought: I need to use a calculator to answer the second part of the questionAction: CalculatorAction Input: 28 + 10Observation: 3Thought: I now know the final answerFinal Answer: This week will be sunny and in ten years I will be 38.

可以看到LangChain Agent 详细分析了每一个步骤,并且正确的调用了每一个可用的方法,拿到了相应的返回值,甚至在最后还修复了28+10=3这个错误。 下面看看LangChain Agent是如何做到这点的

工作原理

首先看看我输入的问题是什么: Query the weather of this week,And How old will I be in ten years? This year I am 28 查询本周天气,以及十年后我多少岁,今年我28

LangChain Agent中,有一套模板可以套用:

PREFIX = """Answer the following questions as best you can. You have access to the following tools:"""FORMAT_INSTRUCTIONS = """Use the following format:Question: the input question you must answerThought: you should always think about what to doAction: the action to take, should be one of [{tool_names}]Action Input: the input to the actionObservation: the result of the action... (this Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original input question"""SUFFIX = """Begin!Question: {input}Thought:{agent_scratchpad}"""LangChain Agent 执行过程解析 OpenAI

通过这个模板,加上我们的问题以及自定义的工具,会变成下面这个样子,并且附带解释:

Answer the following questions as best you can. You have access to the following tools: # 尽可能的去回答以下问题,你可以使用以下的工具:Calculator: Useful for when you need to answer questions about math. # 计算器:当你需要回答数学计算的时候可以用到Weather: useful for When you want to know about the weather # 天气:当你想知道天气相关的问题时可以用到Use the following format: # 请使用以下格式(回答)Question: the input question you must answer # 你必须回答输入的问题Thought: you should always think about what to do # 你应该一直保持思考,思考要怎么解决问题Action: the action to take, should be one of [Calculator, Weather] # 你应该采取[计算器,天气]之一Action Input: the input to the action # 动作的输入Observation: the result of the action # 动作的结果... (this Thought/Action/Action Input/Observation can repeat N times) # 思考-行动-输入-输出 的循环可以重复N次Thought: I now know the final answer # 最后,你应该知道最终结果了Final Answer: the final answer to the original input question # 针对于原始问题,输出最终结果Begin! # 开始Question: Query the weather of this week,And How old will I be in ten years? This year I am 28 # 问输入的问题Thought:

通过这个模板向openai规定了一系列的规范,包括目前现有哪些工具集,你需要思考回答什么问题,你需要用到哪些工具,你对工具需要输入什么内容,等等。

如果仅仅是这样,openAI会完全补完你的回答,中间无法插入任何内容。因此LangChain使用OpenAI的stop参数,截断了AI当前对话。"stop": ["\\nObservation: ", "\\n\\tObservation: "]

做了以上设定以后,OpenAI仅仅会给到Action和 Action Input两个内容就被stop早停了。 以下是OpenAI的响应内容:

I need to use the weather tool to answer the first part of the question, and the calculator to answer the second part.Action: WeatherAction Input: This week

到这里是OpenAI的响应结果,可见,很简单就拿到了Action和Action Input。 这里从Tools中找到name=Weather的工具,然后再将This Week传入方法。具体业务处理看详细情况。这里仅返回Sunny。

由于当前找到了Action和Action Input。 代表OpenAI认定当前任务链并没有结束。因此像请求体后拼接结果:Observation: Sunny 并且让他再次思考Thought:

开启第二轮思考: 下面是再次请求的完整请求体:

Answer the following questions as best you can. You have access to the following tools:Calculator: Useful for when you need to answer questions about math.Weather: useful for When you want to know about the weatherUse the following format:Question: the input question you must answerThought: you should always think about what to doAction: the action to take, should be one of [Calculator, Weather]Action Input: the input to the actionObservation: the result of the action... (this Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original input questionBegin!Question: Query the weather of this week,And How old will I be in ten years? This year I am 28Thought: I need to use the weather tool to answer the first part of the question, and the calculator to answer the second part.Action: WeatherAction Input: This weekObservation: Sunny^_^Thought:

同第一轮一样,OpenAI再次进行思考,并且返回Action 和 Action Input 后,再次被早停。

I need to calculate my age in ten yearsAction: CalculatorAction Input: 28 + 10

由于计算器工具只会返回3,结果会拼接出一个错误的结果,构造成了一个新的请求体 进行第三轮请求:

Answer the following questions as best you can. You have access to the following tools:Calculator: Useful for when you need to answer questions about math.Weather: useful for When you want to know about the weatherUse the following format:Question: the input question you must answerThought: you should always think about what to doAction: the action to take, should be one of [Calculator, Weather]Action Input: the input to the actionObservation: the result of the action... (this Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original input questionBegin!Question: Query the weather of this week,And How old will I be in ten years? This year I am 28Thought: I need to use the weather tool to answer the first part of the question, and the calculator to answer the second part.Action: WeatherAction Input: This weekObservation: Sunny^_^Thought:I need to calculate my age in ten yearsAction: CalculatorAction Input: 28 + 10Observation: 3Thought:

此时两个问题全都拿到了结果,根据开头的限定,OpenAi在完全拿到结果以后会返回I now know the final answer。并且根据完整上下文。把多个结果进行归纳总结:下面是完整的相应结果:

I now know the final answerFinal Answer: I will be 38 in ten years and the weather this week is sunny.

可以看到。ai严格的按照设定返回想要的内容,并且还以外的把28+10=3这个数学错误给改正了

以上,就是LangChain Agent的完整工作流程

本文链接地址:https://www.jiuchutong.com/zhishi/288041.html 转载请保留说明!

上一篇:form表单提交数据如何拿到返回值(form表单提交数组)

下一篇:易北河上的巴斯泰桥,德国撒克逊瑞士国家公园 (© Reinhard Schmid/eStock Photo)(易北河流量)

  • 未开票收入退回可以冲税吗
  • 专用发票和普通票有区别吗
  • 环保税申报表怎么填制
  • 软件开发增值税免税吗
  • 海关入库成功下一步干嘛
  • 火车票丢失可以抵扣进项税额
  • 新公司注册资金需要实缴吗
  • 企业亏损法定盈亏是什么
  • 机动车销售发票是否需要认证
  • 工会经费计提多少后不再提
  • 公司过账什么意思
  • 医院 科室承包
  • 企业外购固定资产的成本包括购买价款和相关税费
  • 支付股权投资的会计科目
  • 简易分包抵减的增值税应纳税额怎么做会计分录?
  • 将自建的厂房对外转让需要缴纳增值税吗
  • 出口退税未收汇已申报
  • 购进机器进项税额怎么核算?
  • 企业网上申报国税流程
  • 账本印花税如何申报缴纳
  • 商业保险可以报税吗
  • 汽车折旧年限与什么有关
  • 减免税款余额方法有哪些
  • 一般纳税人认定标准500万是什么时候开始执行
  • 如何从工商信息中看出是小规模还是一般纳税人
  • 增值税差额征收企业所得税主营业务收入应按什么计入
  • 企业支付在哪里
  • 股权转让流程详解
  • 已抵扣未认证的发票
  • 夫妻房产分割哪家好
  • 购买的承兑怎么下账
  • 实行简易征收
  • 进项和销项相抵还需要交税吗
  • 物业公司的水电工工作职责
  • 在windows中桌面是
  • macbookpro鼠标滚轮是反的
  • win10电源和睡眠设置不起作用
  • 收到发票已入账,退回怎么做账
  • 员工工伤保险报销条件
  • Content-Disposition使用方法和注意事项
  • 公司作为股东有什么好处
  • 如何安装wordpress图文教程
  • 老年人经常便秘怎么办
  • phpstrcmp函数
  • 净资产现金回收率说明什么
  • react函数组件useeffect
  • ps快速选择工具抠图
  • 资产基金的明细科目
  • 租赁公司车转到私人名下
  • 企业出租的存货包括
  • 咨询公司小规模纳税人企业所得税核定征收
  • 企业管理费用的分类
  • 小规模纳税人应纳税额减征额怎么算
  • 总记账凭证核算怎么做
  • 小规模纳税人出租不动产优惠政策
  • 一次开票分期确认收入
  • 成本票下月的可以入上月的成本吗
  • 开公司的车出差违章算谁的
  • 个人所得税多计算了一个月工资怎么办
  • 长期挂账其他应付款违反了哪项制度
  • 辞退福利计入什么明细费用
  • 企业支付宝要手续费吗
  • 缴纳以前年度税金怎么做账
  • 个人所得税经营所得税申报表A表
  • 招标场地费由谁支付
  • 工程项目分包需要招标吗
  • sql server中删除触发器用
  • xp系统怎么取消自动关机
  • ubuntu浏览网页
  • windows10更新出错
  • linux apache 启动
  • win8怎么创建宽带连接
  • 判断div滑动到底怎么操作
  • unity3d脚本执行顺序
  • javascript中的继承
  • nodejs客户端程序开发
  • android源码下载地址
  • 餐饮商家怎么开通抖音团购
  • 上海市个人所得税计算
  • 2013年报废车流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设