文章目錄
- 一、什么是 Prompt Templates
- 1、String PromptTemplates
- 2、ChatPromptTemplates
- 3、MessagesPlaceholder 留言占位符
- 二、如何使用 Prompt Templates
一、什么是 Prompt Templates
?提示模板有助于將用戶輸入和參數轉換為語言模型的指令。這可用于指導模型的響應,幫助它理解上下文并生成相關和連貫的基于語言的輸出。
?提示模板將字典作為輸入,其中 每個鍵 表示提示模板中要填寫的 變量。
?提示模板輸出提示 PromptValue 值。此 PromptValue 可以傳遞給 LLM 或 ChatModel,也可以轉換為 字符串 或 消息列表。此 PromptValue 存在的原因是便于在字符串和消息之間切換。
?有幾種不同類型的提示模板:
1、String PromptTemplates
?這種提示模板用于 格式化單個字符串,通常用于更簡單的輸入。例如,構造和使用PromptTemplate的常見方法如下:
from langchain_core.prompts import PromptTemplateprompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")prompt_template.invoke({"topic": "cats"})
2、ChatPromptTemplates
?這些提示模板用于格式化消息列表。這些“模板”由模板本身的列表組成。例如,構造和使用ChatPromptTemplate的常見方法如下:
from langchain_core.prompts import ChatPromptTemplateprompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),("user", "Tell me a joke about {topic}")
])prompt_template.invoke({"topic": "cats"})
?在上面的示例中,此 ChatPromptTemplate 在調用時將構造兩條消息。第一個是 SystemMessage,它沒有要格式化的變量。第二個是 HumanMessage,將由用戶傳入的 topic 變量進行格式化。
3、MessagesPlaceholder 留言占位符
?此提示模板負責在特定位置添加消息列表。
?在上面的 ChatPromptTemplate 中,我們看到了如何格式化兩條消息,每條消息都是字符串。但是,如果我們想讓用戶傳入一個消息列表,并且要把它們放在一個特定的位置呢?這就需要使用 MessagesPlaceholder 的方法。
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessageprompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),MessagesPlaceholder("msgs")
])prompt_template.invoke({"msgs": [HumanMessage(content="hi!")]})
?這將生成一個包含兩條消息的列表,第一條是 SystemMessage,第二條是我們傳入的 HumanMessage。如果我們傳入了5條消息,那么它總共會產生6條消息 (系統消息加上傳入的5條消息)。這對于將消息列表放入特定位置非常有用。
?在不顯式使用 MessagesPalaceholder 類的情況下,完成相同任務的另一種方法是:
prompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),("placeholder", "{msgs}") # <-- This is the changed part
])
二、如何使用 Prompt Templates
?Prompt Templates (提示模板),負責將用戶輸入格式化為可以傳遞給語言模型的格式。