You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Langchain拉取ChatPromptTemplate返回False,创建Agent报错求助

问题

按照LangChain的Agent快速入门教程操作时遇到两个问题:

  • 使用pull从LangChain Hub拉取hwchase17/openai-functions-agent的ChatPromptTemplate时返回false
  • 调用createOpenAIFunctionsAgent触发TypeError:无法读取undefined的includes属性

代码示例

import { TavilySearchResults } from "@langchain/community/tools/tavily_search";
import { ChatOpenAI } from "@langchain/openai";
import { pull } from "langchain/hub";
import { createOpenAIFunctionsAgent } from "langchain/agents";
import { AgentExecutor } from "langchain/agents";
import {
    ChatPromptTemplate,
    PromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
  } from "@langchain/core/prompts";
  import {
    AIMessage,
    HumanMessage,
    SystemMessage,
  } from "@langchain/core/messages";


const searchTool = new TavilySearchResults();
const toolResult = await searchTool.invoke("what is the weather in SF?");
console.log(toolResult);
const tools = [searchTool];
const llm = new ChatOpenAI({
  modelName: "gpt-3.5-turbo",
  temperature: 0,
});

const prompt = await pull<ChatPromptTemplate>(
  "hwchase17/openai-functions-agent"
);
console.log("Prompt Results")
console.log(prompt)

const agent = await createOpenAIFunctionsAgent({
    llm: llm,
    tools: tools,
    prompt: prompt,
  });
const agentExecutor = new AgentExecutor({
    agent,
    tools,
  });
const result1 = await agentExecutor.invoke({
    input: "hello!",
  });
console.log(result1);

错误信息

Prompt Results
false
file:///Users/bytedance/Desktop/AI/ai-terminal/node_modules/langchain/dist/agents/openai_functions/index.js:218
    if (!prompt.inputVariables.includes("agent_scratchpad")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'includes')
    at createOpenAIFunctionsAgent (file:///Users/bytedance/Desktop/AI/ai-terminal/node_modules/langchain/dist/agents/openai_functions/index.js:218:32)
    at file:///Users/bytedance/Desktop/AI/ai-terminal/test.js:43:21
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v20.10.0

解决方案

1. 排查模板拉取失败原因

pull返回false意味着拉取模板失败,可从以下方向排查:

  • 网络连通性:确认网络能正常访问LangChain Hub,必要时配置代理
  • 版本兼容性:当前LangChain包版本与Hub模板不匹配,执行命令升级所有相关依赖:
    npm install @langchain/core @langchain/openai langchain @langchain/community --latest
    
  • 模板ID正确性:核对hwchase17/openai-functions-agent是否为有效模板ID

2. 手动构建符合要求的Prompt模板

如果拉取始终失败,直接手动创建包含agent_scratchpad变量的ChatPromptTemplate,替代pull逻辑:

const prompt = ChatPromptTemplate.fromMessages([
  SystemMessagePromptTemplate.fromTemplate(`你是一名擅长使用工具的助手,需根据任务需求合理调用提供的工具完成任务。`),
  HumanMessagePromptTemplate.fromTemplate(`{input}`),
  AIMessagePromptTemplate.fromTemplate(`{agent_scratchpad}`)
]);

3. 增加拉取结果校验

在调用createOpenAIFunctionsAgent前,先校验prompt的有效性,避免传入无效值:

if (!prompt || !(prompt instanceof ChatPromptTemplate)) {
  throw new Error("模板拉取失败,请检查网络或模板ID是否正确");
}

内容的提问来源于stack exchange,提问作者Markus Mak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:12:08