Prompts for Chat Models in LangChain

https://python.langchain.com.cn/docs/modules/model_io/models/chat/how_to/prompts

Prompts for Chat Models in LangChain

This content is based on LangChain's official documentation (langchain.com.cn) and explains prompts for chat models---which are built around messages (not just plain text)---in simplified terms. It strictly preserves all original source codes, examples, and knowledge points without any additions or modifications.

1. Key Feature of Chat Model Prompts

Prompts for chat models are structured around messages (e.g., system messages, human messages, AI messages) rather than single blocks of text.

  • Use MessagePromptTemplate (and its subclasses like SystemMessagePromptTemplate, HumanMessagePromptTemplate) to create reusable message templates.
  • Combine multiple MessagePromptTemplates into a ChatPromptTemplate.
  • Use ChatPromptTemplate.format_prompt() to generate a PromptValue, which can be converted to a string or message objects (for chat models).

2. Step 1: Import Required Modules

The code below imports all necessary classes---exactly as in the original documentation:

python 复制代码
from langchain import PromptTemplate
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

Note: A chat model (e.g., ChatOpenAI) is required to run the final step, but it is not imported in the original documentation---we will reference it as chat (consistent with the original code).

3. Method 1: Create Message Templates with from_template

This is a concise way to build MessagePromptTemplates directly from template strings.

Step 3.1: Create System and Human Message Templates

python 复制代码
# System message template: Defines the assistant's role (translator)
template = "You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)

# Human message template: Defines the user's input (text to translate)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

Step 3.2: Combine into ChatPromptTemplate

python 复制代码
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

Step 3.3: Format and Run the Prompt

Use format_prompt() to fill in the placeholders, convert to messages, and pass to the chat model. The original code and output are preserved exactly:

python 复制代码
# Get formatted messages and pass to the chat model
chat(chat_prompt.format_prompt(
    input_language="English", 
    output_language="French", 
    text="I love programming."
).to_messages())

Output (exact as original):

复制代码
AIMessage(content="J'adore la programmation.", additional_kwargs={})

4. Method 2: Create Message Templates with External PromptTemplate

For more flexibility, you can first define a PromptTemplate and then pass it to SystemMessagePromptTemplate.

Step 4.1: Create an External PromptTemplate

python 复制代码
prompt = PromptTemplate(
    template="You are a helpful assistant that translates {input_language} to {output_language}.",
    input_variables=["input_language", "output_language"],  # Explicitly list variables
)

Step 4.2: Wrap into SystemMessagePromptTemplate

python 复制代码
system_message_prompt = SystemMessagePromptTemplate(prompt=prompt)

Note: You can combine this system message prompt with the same human_message_prompt (from Method 1) into a ChatPromptTemplate and run it---same as Step 3.2 and 3.3.

Key Takeaways

  • Chat model prompts are built with message templates (e.g., SystemMessagePromptTemplate).
  • Two ways to create message templates: from_template (concise) or external PromptTemplate (flexible).
  • ChatPromptTemplate.from_messages() combines multiple message templates.
  • format_prompt().to_messages() converts the template to chat-model-compatible messages.
相关推荐
奋斗的小乌龟1 天前
动态创建Agent02
java
ZFSS1 天前
Localization Translate API 集成与使用指南
java·服务器·数据库·人工智能·mysql·ai编程
摇滚侠1 天前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
nannan12321 天前
后端技术栈梳理
java
hj2862511 天前
Linux 磁盘管理 + 文件系统 + LVM 笔记整理
linux·运维
L、2181 天前
CANN算子开发调试实战:从“Segmentation Fault“到定位根因的完整流程
java·开发语言
.YYY1 天前
Linux--如何安装rockyLinux9虚拟机
linux
索木木1 天前
NCCL SHARP 和 TREE算法
java·服务器·算法
NiceCloud喜云1 天前
Claude Files API 深入:从上传、复用到配额管理的工程化指南
android·java·数据库·人工智能·python·json·飞书
kdxiaojie1 天前
U-Boot分析【学习笔记】(12)
linux·笔记·学习