一架梯子,一头程序猿,仰望星空!
LangChain教程(JS版本) > 内容正文

对话模式中的Agent应用


会话模型

本教程演示如何使用针对对话优化的代理(agent)。其他代理通常针对使用工具来找到最佳应答进行优化,但在对话环境中,您可能希望代理能够与用户进行聊天。

本示例演示如何为聊天模型创建一个会话代理。它将使用特定于聊天的提示。

import { ChatOpenAI } from "langchain/chat_models/openai";
import { initializeAgentExecutorWithOptions } from "langchain/agents";
import { SerpAPI } from "langchain/tools";
import { Calculator } from "langchain/tools/calculator";

export const run = async () => {
  process.env.LANGCHAIN_HANDLER = "langchain";
  const model = new ChatOpenAI({ temperature: 0 });
  const tools = [
    new SerpAPI(process.env.SERPAPI_API_KEY, {
      location: "Austin,Texas,United States",
      hl: "en",
      gl: "us",
    }),
    new Calculator(),
  ];

  // 将 "chat-conversational-react-description" 作为代理类型传递,会自动创建并使用带执行器的 BufferMemory。
  // 如果您希望覆盖此行为,可以传递自定义的 memory 选项,但它的 memoryKey 必须是 "chat_history"。
  const executor = await initializeAgentExecutorWithOptions(tools, model, {
    agentType: "chat-conversational-react-description",
    verbose: true,
  });
  console.log("已加载代理。");

  const input0 = "你好,我是鲍勃";

  const result0 = await executor.call({ input: input0 });

  console.log(`输出:${result0.output}`);

  const input1 = "我的名字是什么?";

  const result1 = await executor.call({ input: input1 });

  console.log(`输出:${result1.output}`);

  const input2 = "庞弗雷特的天气如何?";

  const result2 = await executor.call({ input: input2 });

  console.log(`输出:${result2.output}`);
};

输出结果:

已加载代理。
进入新的 agent_executor 链...
{
    "action": "最终答案",
    "action_input": "您好,鲍勃!我今天可以如何帮助您?"
}
链结束。
输出:您好,鲍勃!我今天可以如何帮助您?
进入新的 agent_executor 链...
{
    "action": "最终答案",
    "action_input": "您的名字是鲍勃。"
}
链结束。
输出:您的名字是鲍勃。
进入新的 agent_executor 链...
```json
{
    "action": "搜索",
    "action_input": "庞弗雷特的天气"
}

开始持续下雨……然后天气多云,有几次阵雨。最高温度48华氏度。西北偏西风,10到15英里/小时。降雨概率80%。

{
    "action": "最终答案",
    "action_input": "庞弗雷特的天气是:开始持续下雨……然后天气多云,有几次阵雨。最高温度48华氏度。西北偏西风,10到15英里/小时。降雨概率80%。"
}

链结束。
输出:庞弗雷特的天气是:开始持续下雨……然后天气多云,有几次阵雨。最高温度48华氏度。西北偏西风,10到15英里/小时。降雨概率80%。



关联主题