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.
---------
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]: