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 天前
Spring Cloud Gateway 微服务网关:路由、断言、过滤器
java·spring cloud
lwx572802 天前
探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
java·后端
Flynt2 天前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
plainGeekDev2 天前
Activity 间传值 → Navigation 参数
android·java·kotlin
plainGeekDev2 天前
onActivityResult → ActivityResult API
android·java·kotlin
Sunia2 天前
《AgentX 专栏》10-生产部署:3台2C4G云服务器把企业级Agent真正跑起来的完整方案
java·架构
ZhengEnCi2 天前
J7A-高级Java工程师面试三道灵魂拷问-深度广度与工程素养的终极检验
java·后端
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
狼爷2 天前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程
大模型真好玩2 天前
LangChain DeepAgents 速通指南(九)—— 生产级智能体框架 DeepAgents Code 源码导读
人工智能·langchain·agent