The role of MessagesPlaceholder in LangChain.js

The role of MessagesPlaceholder in LangChain.js

The MessagesPlaceHolder in LangChain.js plays a crucial role in enabling dynamic and flexible construction of chat prompts by acting as a placeholder for a list of messages within a ChatPromptTemplate. Its primary functions are

Dynamic Message Insertion

It allows you to inject a list of BaseMessage objects (like HumanMessage, AIMessage, SystemMessage, etc) into a specific position within your chat prompt template during runtime. This is particularly useful for managing chat history, where the list of past messages needs to be included in the prompt for context.

Facilitating Chat History Management

When dealing with conversational AI, maintaining and including chat history is essential for the model to understand the ongoing dialogue. MessagesPlaceholder provides a clean and structured way to incorporate this history into your prompts without hardcoding individual messages.

Enhancing Prompt Template Flexibility

Instead of defining every single message explicitly in the ChatPromptTempate, MessagesPlaceholder allows for a more modular approach. You can define static system messages or initial prompts, and then use the placeholder to dynamically add the evolving conversation history or other lists of messages as needed.

In essence, MessagesPlaceholder empowers developers to create more adaptable and context-aware chat applications by providing a mechanism to dynamically populate chat prompts with message sequence.

const systemPrompt = `
You are a supervisor tasked with managing a conversation between the following workers: {members}.
Given the following user request, respond with the worker to act next. Each worker will perform a
task and respond with their result and status. When finished, respond with FINISH.`;

const prompt = ChatPromptTemplate.fromMessages([
  ['system', systemPrompt],
  new MessagesPlaceholder('messges'),
  ['human', 'Given the conversation above, who should ac next? Or should we FINISH? Select one of: {options}']
]);

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다