提示範本
提示範本有助於將使用者輸入和參數轉換為語言模型的指示。這可用於引導模型的回應,幫助模型理解上下文並產生相關且連貫的語言輸出。
提示範本接受字典作為輸入,其中每個鍵代表提示範本中要填寫的變數。
提示範本輸出 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
])
有關如何使用提示範本的具體資訊,請參閱此處的相關操作指南。