LangChain 有一种对话型的代理,它可以记住跟用户之前的互动。这种类型的代理需要一个 Chat 类型的模型,先在这个 Node.js 程序文件的顶部导入一个 ChatOpenAI,来自 langchain/chat_models/openai。
然后下面声明的这个 model,可以换成新建一个 ChatOpenAI。
在使用 initializeAgentExecutorWithOptions 的时候,把这个 agentType 设置成 chat-conversational-react-description。这样就会这个代理执行器就会使用这种对话型的代理了。
问一个问题,比如 “今年是哪年?” 在终端,运行一下应用,然后观察输出的内容。 这种类型的代理使用的提示会专门针对 Chat 类型的模型做了优化。
这里先是一条 System 信息,描述了一下系统的职责,然后还有一个 Human 信息,告诉系统可以使用的一些工具。
下面还给出了一些关于如何响应的指令,里面给出了两个选项,第一个选项可以说明一下要使用的工具,还有工具的输入。第二个选项,可以让Agent直接回复。
也就是说代理可能会选择使用工具,也可能会直接回复。这里显示这个代理选择使用了 current_year_month 这个工具得到了当前的年份。
对话型代理可以记住与用户之前的互动。在这个程序文件里,声明一个 response2,可以再用一下 agentExecutor.call,提供一个对象,设置一下 input,“我叫王皓,2011年至今一直在宁皓网工作。”下面再输出这个 response2。
下面再声明一个 response3,等于 await,用一下 agentExecutor.call,提供一个对象参数,设置一下 input,值是 “我工作多久了”。最后输出这个 repsonse3。
在终端,运行一下应用。代理会使用 current_year_month 得到当前的年份,然后用 calculator 这个工具计算出最终的结果。最后给出的答案里面说我已经在宁皓网工作了 12 年了。