Error “[object Object]“ when using LangChain‘s AzureChatOpenAI in Node.js

**题意:**在Node.js中使用LangChain库的AzureChatOpenAI功能时遇到错误"Error 'object Object'"

问题背景:

I'm attempting to use LangChain's AzureChatOpenAI with the gpt-35-turbo-16k model in a Node.js application to create an OpenAI Function Agent. I've properly set up the required environment variables for Azure OpenAI setup. However, I'm encountering an error, which is not very descriptive, when trying to run the function.

在Node.js应用程序中尝试使用LangChain的AzureChatOpenAI与gpt-35-turbo-16k模型来创建一个OpenAI Function Agent时,已经正确地设置了Azure OpenAI所需的环境变量,但在尝试运行该函数时遇到了一个不太具体的错误

Here's the relevant code snippet: 下面是相关的代码片段:

cs 复制代码
import { pull } from "langchain/hub";
import type { ChatPromptTemplate } from "@langchain/core/prompts";
import { AzureChatOpenAI } from "@langchain/azure-openai";

const model = new AzureChatOpenAI({
  azureOpenAIApiDeploymentName: "gpt-35-turbo-16k",
  azureOpenAIApiVersion: "2024-03-01-preview",
  modelName: "gpt-35-turbo-16k",
  temperature: 0,
  maxRetries: 1,
});

export async function ChatWithFunctionAgent(question: string) {
  try {
    // Get the prompt to use - you can modify this!
    // If you want to see the prompt in full, you can at:
    // https://smith.langchain.com/hub/hwchase17/openai-functions-agent
    const prompt = await pull<ChatPromptTemplate>(
      "hwchase17/openai-functions-agent"
    );
    const agent = await createOpenAIFunctionsAgent({
      llm: model,
      tools: [],
      prompt,
    });
    const agentExecutor = new AgentExecutor({
      agent,
      tools: [],
    });
    const result = await agentExecutor.invoke({
      input: "what is LangChain?",
    });
    console.log(result);
    return result;
  } catch (error) {
    console.log(error);
  }
}

Error: 错误信息:

cs 复制代码
Http function processed request for url "http://localhost:7071/api/chat"
[1] [2024-04-04T05:27:52.461Z] Error: [object Object]
[1] [2024-04-04T05:27:52.461Z]     at /home/ujwal/code/roc-next/azure-func/node_modules/@langchain/core/dist/utils/async_caller.cjs:98:23
[1] [2024-04-04T05:27:52.461Z]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[2024-04-04T05:27:52.461Z]     at async RetryOperation._fn (/home/ujwal/code/roc-next/azure-func/node_modules/p-retry/index.js:50:12) {
[1] [2024-04-04T05:27:52.461Z]   attemptNumber: 2,
[1] [2024-04-04T05:27:52.461Z]   retriesLeft: 0
[1] [2024-04-04T05:27:52.461Z] }

What I've tried: 我已经尝试做的事情:

  • I've already double-checked to ensure all the required environment variables are set, including those needed for authentication with Azure.

我已经反复检查过了,确保所有必需的环境变量都已设置,包括与Azure进行身份验证所需的环境变量。

  • I've manually invoked the model, that is working fine, so no issues with Azure credentials or connection.

我已经手动调用了模型,它工作正常,所以Azure的凭据或连接没有问题。

Expected behavior: 期望结果:

  • AzureChatOpenAI to work with langchain OpenAIFunction Agent

AzureChatOpenAIlangchainOpenAIFunctionAgent协同工作

Any help would be greatly appreciated! 任何帮助都将不胜感激!

问题解决:

I figured out why this issue was occuring, if the tools array is empty, the AzureOpenAI API throws an error. To fix this, you need to have atleast one tool in the tools array, you can refer to Defining custom tools | 🦜️🔗 Langchain to create custom tools. You also need to make sure that the name of the tool does not contain any spaces.

我弄清楚了这个问题发生的原因,如果tools数组为空,AzureOpenAI API会抛出一个错误。为了解决这个问题,你需要在tools数组中至少包含一个工具。你可以参考"Defining custom tools | 🦜️🔗 Langchain"来创建自定义工具。此外,你还需要确保工具的名称中不包含任何空格。

cs 复制代码
import { DynamicTool } from "@langchain/core/tools";

const tools = [
  new DynamicTool({
    name: "FOO",
    description:
      "call this to get the value of foo. input should be an empty string.",
    func: async () => "baz",
  })
]
Hope this helps.
相关推荐
星辰AI1 小时前
前端性能优化实战:从首屏加载到交互响应的全链路调优
人工智能·ai·语言模型
学Linux的语莫1 小时前
LangChain Prompts 提示词模板
数据库·人工智能·langchain
敲代码的嘎仔1 小时前
从集群锁失效到异步领券:我用分布式锁 + Redisson + MQ 把领券接口 RT 从 200ms 压到 15ms
java·数据库·redis·分布式·缓存·ai·wpf
爱学习的小白柏2 小时前
同城双活的核心不是双活,是逼着数据别出机房
大数据·人工智能·算法·langchain·ai编程
VIP_CQCRE2 小时前
一站式接入 OpenAI Chat Completions:用 Ace Data Cloud 更快把 AI 能力接进业务
大模型·openai·ai开发·mcp·acedatacloud
ChampaignWolf2 小时前
abapgit-agent:用 Git 当中介,让 Claude Code 自己完成 ABAP 闭环开发
git·ai·abap·claude·abapgit·mcp
全栈技术负责人2 小时前
AI 效能工具建设:Agent 可观测性技能技术方案与实践
前端·ai·ai编程
七夜zippoe3 小时前
LLM 选型指南:Agent 场景下大模型的核心能力评估框架
ai·大模型·llm·agent·核心 能力
多云行者3 小时前
2026 软件定义广域网走向何方?AI 原生网络与 SD-WAN 的技术融合趋势
ai·sd-wan·软件定义广域网·原生网络
cjp5603 小时前
012.UG二次开发,UG管道服务器与WPF管道通讯,传输JSON数据
c#