当前位置:   article > 正文

Langchain-Chatchat项目:3-Langchain计算器工具Agent思路和实现_langchatchat agent自定义实现

langchatchat agent自定义实现

本文主要讨论Langchain-Chatchat项目中自定义Agent问答的思路和实现。以"计算器工具"为例,简单理解就是通过LLM识别应该使用的工具类型,然后交给相应的工具(也是LLM模型)来解决问题。一个LLM模型可以充当不同的角色,要把结构化的Prompt模板写好,充分利用LLM的Zero/One/Few-Shot能力。

一.自定义Agent问答

1.1+1等于多少

在线模型使用百度qianfan-api的ernie-bot-turbo,问了一个简单的问题"1+1等于多少",自定义Agent问答的思考过程为:Action: 计算器工具;Action Input: 1+1;Observation: 输出结果为2;Thought: 好的,我回答完毕;Final Answer: 1+1等于2。如下所示:

图片

图片

2.函数调用过程

dialogue_mode

为"自定义Agent问答"时,调用

api.agent_chat(prompt, history=history, model=llm_model, temperature=temperature)

方法,如下所示:

图片

图片

根据

agent_chat(self, query: str, history: List[Dict] = [], stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, no_remote_api: bool = None)

中是否为"远程api"走不同的分支。因为本文为有远程api,所有走的

response = self.post("/chat/agent_chat", json=data, stream=True)

这个方法,如下所示:

图片

图片

然后执行

app.post("/chat/agent_chat", tags=["Chat"], summary="与agent对话")(agent_chat)

,如下所示:

图片

图片

最后执行

async def agent_chat()

中的

async def agent_chat_iterator()

方法,如下所示:

图片

图片

拿到model、prompt_template、output_parser后,使用得到链

llm_chain = LLMChain(llm=model, prompt=prompt_template)

,使用

llm_chain、output_parser和tool_names

得到单个action agent,如下所示:

把history转换成agent的memory,然后通过agent、tools和memory得到agent_executor,如下所示:

二.math agent实现原理1.Math Prompt模板  觉得实现原理主要是利用了LLM的few-shot的能力,主要是把结构化的Prompt模板写好。如下所示:

2.LLMMathChain具体使用  主要是根据LLM Model和Prompt模板得到一个LLMMathChain,本质还是LLMMathChain根据Prompt模板执行Python代码进行数学计算,如下所示:

觉得一个落地的AI Agent产品,主要是要有一个给力的LLM来做任务的分解,通过不同工具来解决任务,并且可以利用外部的存储能力,最终有一个LLM来合并生成的方案。以一个软件开发小组为例,组长主要是根据需求拆分任务,分配给前端、后端、数据库和测试等,然后负责生成环境的工程师统一合并代码。看似简单的例子,其实里面涉及的情况可能会非常的复杂,比如组长还可以充当不同的角色,相同的角色有弱有强,强的可以接续拆分任务给弱的角色,可以审查代码等。本质上还是一个复杂逻辑推理路径的问题,可以借鉴思维链、思维树、思维图、累积推理等思想。

参考文献:[1]https://github.com/ai408/Langchain-Chatchat/blob/master/server/agent/math.py

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/929293
推荐阅读
相关标签
  

闽ICP备14008679号