跳到主要內容
Open on GitHub

提示範本

提示範本有助於將使用者輸入和參數轉換為語言模型的指示。這可用於引導模型的回應,幫助模型理解上下文並產生相關且連貫的語言輸出。

提示範本接受字典作為輸入,其中每個鍵代表提示範本中要填寫的變數。

提示範本輸出 PromptValue。此 PromptValue 可以傳遞給 LLM 或 ChatModel,也可以轉換為字串或訊息列表。 PromptValue 存在的原因是為了方便在字串和訊息之間切換。

提示範本有幾種不同的類型

字串提示範本

這些提示範本用於格式化單個字串,通常用於較簡單的輸入。例如,建構和使用 PromptTemplate 的常見方式如下

from langchain_core.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")

prompt_template.invoke({"topic": "cats"})
API 參考:PromptTemplate

聊天提示範本

這些提示範本用於格式化訊息列表。這些「範本」本身由範本列表組成。例如,建構和使用 ChatPromptTemplate 的常見方式如下

from langchain_core.prompts import ChatPromptTemplate

prompt_template = ChatPromptTemplate([
("system", "You are a helpful assistant"),
("user", "Tell me a joke about {topic}")
])

prompt_template.invoke({"topic": "cats"})
API 參考:ChatPromptTemplate

在上面的範例中,此 ChatPromptTemplate 在調用時將建構兩個訊息。第一個是系統訊息,沒有要格式化的變數。第二個是 HumanMessage,將由使用者傳入的 topic 變數格式化。

MessagesPlaceholder

此提示範本負責在特定位置新增訊息列表。在上面的 ChatPromptTemplate 中,我們看到了如何格式化兩個訊息,每個訊息都是一個字串。但是,如果我們希望使用者傳入一個訊息列表,並將其插入特定位置怎麼辦?這就是 MessagesPlaceholder 的用途。

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessage

prompt_template = ChatPromptTemplate([
("system", "You are a helpful assistant"),
MessagesPlaceholder("msgs")
])

prompt_template.invoke({"msgs": [HumanMessage(content="hi!")]})

這將產生兩個訊息的列表,第一個是系統訊息,第二個是我們傳入的 HumanMessage。如果我們傳入了 5 個訊息,那麼它將總共產生 6 個訊息(系統訊息加上傳入的 5 個訊息)。這對於將訊息列表插入特定位置非常有用。

另一種無需顯式使用 MessagesPlaceholder 類別即可完成相同操作的方法是

prompt_template = ChatPromptTemplate([
("system", "You are a helpful assistant"),
("placeholder", "{msgs}") # <-- This is the changed part
])

有關如何使用提示範本的具體資訊,請參閱此處的相關操作指南


此頁面是否對您有幫助?