MessagePromptTemplate
LangChain提供了不同类型的MessagePromptTemplate
。其中最常用的是AIMessagePromptTemplate
、SystemMessagePromptTemplate
和HumanMessagePromptTemplate
,分别用于创建AI消息、系统消息和人类消息。
然而,在聊天模型支持使用任意角色进行聊天消息时,您可以使用ChatMessagePromptTemplate
,它允许用户指定角色名称。
from langchain.prompts import ChatMessagePromptTemplate
prompt = "愿原力与你同在"
chat_message_prompt = ChatMessagePromptTemplate.from_template(role="绝地武士", template=prompt)
chat_message_prompt.format(subject="原力")
API参考:
- ChatMessagePromptTemplate 来自
langchain.prompts
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参考:
- MessagesPlaceholder 来自
langchain.prompts
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={})]