Skip to main content

MessagePromptTemplate

LangChain提供了不同类型的MessagePromptTemplate。其中最常用的是AIMessagePromptTemplateSystemMessagePromptTemplateHumanMessagePromptTemplate,分别用于创建AI消息、系统消息和人类消息。

然而,在聊天模型支持使用任意角色进行聊天消息时,您可以使用ChatMessagePromptTemplate,它允许用户指定角色名称。

from langchain.prompts import ChatMessagePromptTemplate

prompt = "愿原力与你同在"

chat_message_prompt = ChatMessagePromptTemplate.from_template(role="绝地武士", template=prompt)
chat_message_prompt.format(subject="原力")

API参考:

ChatMessage(content='愿原力与你同在', additional_kwargs={}, role='绝地武士')

LangChain还提供了MessagesPlaceholder,它可以让您完全控制在格式化期间要呈现的消息。当您不确定应该使用哪个角色来进行消息提示模板,或者希望在格式化期间插入一系列消息时,这将非常有用。

from langchain.prompts import MessagesPlaceholder

human_prompt = "用{word_count}个词总结我们迄今为止的对话。"
human_message_template = HumanMessagePromptTemplate.from_template(human_prompt)

chat_prompt = ChatPromptTemplate.from_messages([MessagesPlaceholder(variable_name="conversation"), human_message_template])

API参考:

human_message = HumanMessage(content="学习编程的最佳方法是什么?")
ai_message = AIMessage(content="""\
1. 选择一种编程语言:决定您想要学习的编程语言。

2. 从基础开始:熟悉基本的编程概念,如变量、数据类型和控制结构。

3. 实践,实践,实践:学习编程的最佳方法是通过实践经验。
""")

chat_prompt.format_prompt(conversation=[human_message, ai_message], word_count="10").to_messages()
[HumanMessage(content='学习编程的最佳方法是什么?', additional_kwargs={}),
AIMessage(content='1. 选择一种编程语言:决定您想要学习的编程语言。\n\n2. 从基础开始:熟悉基本的编程概念,如变量、数据类型和控制结构。\n\n3. 实践,实践,实践:学习编程的最佳方法是通过实践经验', additional_kwargs={}),
HumanMessage(content='用10个词总结我们迄今为止的对话。', additional_kwargs={})]