https://python.langchain.com.cn/docs/modules/model_io/prompts/prompt_templates/format_output
This guide explains how to use the format method of ChatPrompt (in LangChain) to get outputs in three useful formats. All examples use the same core task: creating a prompt for translating English to French. We'll keep code and outputs exactly as in the original source---no changes.
Key Background First
Before diving into formats, remember: A ChatPrompt typically includes a SystemMessage (tells the AI its role) and a HumanMessage (the user's input). For our examples, the ChatPrompt is set up to translate text from an input_language to an output_language (we'll use English → French).
1. Output as a String
The simplest format: a plain text string that combines the system message and human message. There are two equivalent ways to get this.
Method 1: Use chat_prompt.format()
This directly returns the prompt as a string.
Code (From Original Source)
python
# Assume `chat_prompt` is already set up for translation (English → French)
output = chat_prompt.format(
input_language="English",
output_language="French",
text="I love programming."
)
print(output)
Output (From Original Source)
System: You are a helpful assistant that translates English to French.
Human: I love programming.
Method 2: Use chat_prompt.format_prompt().to_string()
This is a two-step way to get the same string. First, format_prompt() creates a ChatPromptValue (see Section 2), then to_string() converts it to text.
Code (From Original Source)
python
output_2 = chat_prompt.format_prompt(
input_language="English",
output_language="French",
text="I love programming."
).to_string()
# Check if both outputs are identical (they will be!)
assert output == output_2 # No error means they match
What This Means
Both methods give you a readable text string. Use this if you want to quickly check or share the prompt content.
2. Output as a ChatPromptValue
ChatPromptValue is a special LangChain object that stores the full prompt (with messages). It's not just text---it keeps track of the message types (system vs. human).
Code (From Original Source)
python
chat_prompt_value = chat_prompt.format_prompt(
input_language="English",
output_language="French",
text="I love programming."
)
print(chat_prompt_value)
Output (From Original Source)
ChatPromptValue(messages=[
SystemMessage(content='You are a helpful assistant that translates English to French.', additional_kwargs={}),
HumanMessage(content='I love programming.', additional_kwargs={})
])
What This Means
ChatPromptValuehas amessagesattribute that holds a list of message objects (here:SystemMessageandHumanMessage).- Use this if you need to work with the prompt as a structured object (not just text) in LangChain workflows.
3. Output as a List of Message Objects
You can convert the ChatPromptValue into a list of SystemMessage and HumanMessage objects. This list is ready to pass directly to Chat models (e.g., ChatOpenAI), since models accept message objects as input.
Code (From Original Source)
python
message_list = chat_prompt.format_prompt(
input_language="English",
output_language="French",
text="I love programming."
).to_messages()
print(message_list)
Output (From Original Source)
[
SystemMessage(content='You are a helpful assistant that translates English to French.', additional_kwargs={}),
HumanMessage(content='I love programming.', additional_kwargs={})
]
What This Means
- The list contains actual LangChain message objects (not just text).
- This is the most useful format for running the prompt with a Chat model ---you can pass
message_listdirectly to the model'spredictorgeneratemethods.
Quick Summary of All 3 Formats
| Format Type | How to Get It | Use Case |
|---|---|---|
| String | chat_prompt.format(...) or format_prompt().to_string() |
Quick checks/sharing prompt text |
ChatPromptValue |
chat_prompt.format_prompt(...) |
Working with structured prompt objects |
| List of Message Objects | format_prompt().to_messages() |
Passing input directly to a Chat model |
All code, outputs, and logic match the original source---no extra changes or additions.