Search code examples
langchain

LangChain JS ChatPromptTemplate not found in langchain/prompts


I'm using LangChain (v.0.0.146) in a nodeJS app.js file. It is working for some scenarios OK, but when I'm trying to use the ChatPromptTemplate it is not found:

const prompt1 = ChatPromptTemplate.fromMessages([

TypeError: ChatPromptTemplate.fromMessages is not a function

This is how I'm importing it, as per the documentation:

const { ChatPromptTemplate, MessagesPlaceholder } = require('langchain/prompts');

Looking in the node_modules/langchain/prompts - indeed, I could not find the ChatPromptTemplate exported at all. I could only find this in: \node_modules\langchain\dist\prompts\chat.js

However, I cannot directly import from this path. I cannot find the importable file to export this library.

For completion, here's how I attempt using this:

const { ChatOpenAI } = require("langchain/chat_models/openai");
const { ConversationChain } = require('langchain/chains');
const { BufferMemory } = require('langchain/memory');
const { ChatPromptTemplate, MessagesPlaceholder } = require('langchain/prompts');

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({}) });

}

What am I missing, please?


Solution

  • it does exist in

      "langchain": "^0.0.150",
    
    
    import { MessagesPlaceholder,ChatPromptTemplate } from "langchain/prompts";
    

    But it does not have fromMessages, it has fromPromptMessages. this is the type:

    export declare class ChatPromptTemplate<RunInput extends InputValues = any, PartialVariableName extends string = any> extends BaseChatPromptTemplate<RunInput, PartialVariableName> implements ChatPromptTemplateInput<RunInput, PartialVariableName> {
        static lc_name(): string;
        get lc_aliases(): {
            promptMessages: string;
        };
        promptMessages: Array<BaseMessagePromptTemplate | BaseMessage>;
        validateTemplate: boolean;
        constructor(input: ChatPromptTemplateInput<RunInput, PartialVariableName>);
        _getPromptType(): "chat";
        formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
        partial<NewPartialVariableName extends string>(values: PartialValues<NewPartialVariableName>): Promise<ChatPromptTemplate<InputValues<Exclude<Extract<keyof RunInput, string>, NewPartialVariableName>>, any>>;
        static fromPromptMessages<RunInput extends InputValues = any>(promptMessages: (ChatPromptTemplate<InputValues, string> | BaseMessagePromptTemplateLike)[]): ChatPromptTemplate<RunInput>;
    }