From 087823aefa3dd3f57d06db0802507509e259cb9d Mon Sep 17 00:00:00 2001 From: jhicks2306 <45722942+jhicks2306@users.noreply.github.com> Date: Tue, 26 Mar 2024 21:34:00 +0000 Subject: [PATCH] docs: Update docstring for MessagesPlaceholder (#19601) Update to docstring for MessagesPlaceholder so that it shows helpful information in code editors. E.g. VS Code as shown below. Screenshot 2024-03-26 at 17 18 58 --------- Co-authored-by: Bagatur --- libs/core/langchain_core/prompts/chat.py | 57 +++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/libs/core/langchain_core/prompts/chat.py b/libs/core/langchain_core/prompts/chat.py index e4be7adf87..12f8d21baa 100644 --- a/libs/core/langchain_core/prompts/chat.py +++ b/libs/core/langchain_core/prompts/chat.py @@ -96,12 +96,67 @@ class BaseMessagePromptTemplate(Serializable, ABC): class MessagesPlaceholder(BaseMessagePromptTemplate): - """Prompt template that assumes variable is already list of messages.""" + """Prompt template that assumes variable is already list of messages. + + A placeholder which can be used to pass in a list of messages. + + Direct usage: + + .. code-block:: python + + from langchain_core.prompts import MessagesPlaceholder + + prompt = MessagesPlaceholder("history") + prompt.format_messages() # raises KeyError + + prompt = MessagesPlaceholder("history", optional=True) + prompt.format_messages() # returns empty list [] + + prompt.format_messages( + history=[ + ("system", "You are an AI assistant."), + ("human", "Hello!"), + ] + ) + # -> [ + # SystemMessage(content="You are an AI assistant."), + # HumanMessage(content="Hello!"), + # ] + + Building a prompt with chat history: + + .. code-block:: python + + from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder + + prompt = ChatPromptTemplate.from_messages( + [ + ("system", "You are a helpful assistant."), + MessagesPlaceholder("history"), + ("human", "{question}") + ] + ) + prompt.invoke( + { + "history": [("human", "what's 5 + 2"), ("ai", "5 + 2 is 7")], + "question": "now multiply that by 4" + } + ) + # -> ChatPromptValue(messages=[ + # SystemMessage(content="You are a helpful assistant."), + # HumanMessage(content="what's 5 + 2"), + # AIMessage(content="5 + 2 is 7"), + # HumanMessage(content="now multiply that by 4"), + # ]) + """ variable_name: str """Name of variable to use as messages.""" optional: bool = False + """If True format_messages can be called with no arguments and will return an empty + list. If False then a named argument with name `variable_name` must be passed + in, even if the value is an empty list.""" @classmethod def get_lc_namespace(cls) -> List[str]: