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
相关产品推荐
相关产品推荐

