LangChain v0.0.146中ChatPromptTemplate无法调用问题求助
问题解决:LangChain v0.0.146中ChatPromptTemplate.fromMessages报错
核心原因
LangChain v0.0.146版本中,ChatPromptTemplate和MessagesPlaceholder并不在langchain/prompts的顶级导出里,而是属于聊天专用的子模块,当前导入路径错误,导致无法正确获取构造函数,调用fromMessages时才会提示“不是函数”。
修正步骤
1. 调整导入路径
将原导入代码:
const { ChatPromptTemplate, MessagesPlaceholder } = require('langchain/prompts');
替换为从聊天子模块导入:
const { ChatPromptTemplate, MessagesPlaceholder } = require('langchain/prompts/chat');
2. 排查其他潜在问题
- 确保
chatPromptMultipleAdvisors变量已定义,避免运行时出现未定义错误 BufferMemory中的llm参数在v0.0.146版本中并非必填项,若无需相关功能可考虑移除
修正后的完整代码
const { ChatOpenAI } = require("langchain/chat_models/openai"); const { ConversationChain } = require('langchain/chains'); const { BufferMemory } = require('langchain/memory'); // 修正导入路径 const { ChatPromptTemplate, MessagesPlaceholder } = require('langchain/prompts/chat'); // 定义系统提示词变量 const chatPromptMultipleAdvisors = "你的系统提示词内容"; async function runChat() { memory1 = new BufferMemory({ returnMessages: true, memoryKey: "memKey1", llm: new ChatOpenAI({ modelName: "gpt-3.5-turbo", temperature: 0, callbacks: [ { handleLLMEnd: (output, runId, parentRunId, tags) => { const { completionTokens, promptTokens, totalTokens } = output.llmOutput?.tokenUsage; console.log('Tokens used: ', completionTokens, promptTokens, totalTokens); }, }, ], }), }); model = new ChatOpenAI(); const prompt1 = ChatPromptTemplate.fromMessages([ [ "system", chatPromptMultipleAdvisors, ], new MessagesPlaceholder("memKey1"), ["human", "{input}"], ]); chain1 = new ConversationChain({ llm: model, prompt: prompt1, memory: memory1 }); res11 = await chain1.call({ input: "what is AI training?" }); console.log({ res11, memory1: await memory1.loadMemoryVariables({}) }); }
内容的提问来源于stack exchange,提问作者Mor Sagmon
相关产品推荐
相关产品推荐

