Node.js中用LangChain AzureChatOpenAI构建智能体遇[object Object]错误
解决LangChain AzureChatOpenAI构建OpenAI Function Agent时的[object Object]错误
问题背景
在Node.js应用中使用LangChain的AzureChatOpenAI(gpt-35-turbo-16k模型)构建OpenAI Function Agent,已确认Azure环境变量配置正确且单独调用模型正常,但运行Agent时出现无描述性的[object Object]错误。
解决方案
1. 优化错误日志,获取真实错误详情
[object Object]错误是因为直接打印Error对象时未序列化,无法看到具体错误信息。修改catch块代码,打印完整错误结构:
catch (error) { console.log(JSON.stringify(error, null, 2)); }
运行后即可看到API返回的具体错误(如参数不兼容、权限问题、格式错误等)。
2. 补充缺失的核心依赖导入
代码中未导入createOpenAIFunctionsAgent和AgentExecutor,这会导致运行时隐式错误,需添加导入语句:
import { createOpenAIFunctionsAgent } from "langchain/agents"; import { AgentExecutor } from "langchain/agents";
3. 验证prompt与Azure模型的兼容性
hwchase17/openai-functions-agent模板是针对OpenAI原生模型设计的,Azure模型的函数调用格式可能存在差异。可以:
- 自定义prompt,明确适配Azure的函数调用规范
- 简化prompt内容,逐步排查格式兼容性问题
4. 调整Azure API版本
当前使用的2024-03-01-preview是预览版,可能存在函数调用兼容性问题,尝试切换到稳定版本:
const model = new AzureChatOpenAI({ // ...其他配置 azureOpenAIApiVersion: "2023-12-01-preview", });
5. 确认工具数组配置规范
即使使用空工具数组,也要确保其类型符合LangChain要求。后续添加工具时,需严格遵循OpenAI Functions的定义格式:
const tools = [ { name: "工具名称", description: "工具功能描述", parameters: { type: "object", properties: { // 参数定义 }, required: ["必填参数"], }, }, ];
验证流程
- 先补充缺失的导入语句
- 优化错误日志,获取真实错误信息
- 根据错误提示针对性调整配置(如API版本、prompt格式等)
内容的提问来源于stack exchange,提问作者Ujwal Bhagat
相关产品推荐
相关产品推荐

