LangChain 在系統提示詞中使用少樣本提示詞(Few-shot prompt)的範例。
少樣本提示詞(Few-shot prompt),為小樣本學習(Few-shot Learning)(簡稱FSL)在大型語言模型提示詞工程(Prompt Engineering)的應用。相對於需要大量訓練資料的微調(Fine-tuning),是一種無需修改模型參數即可引導模型輸出符合預期格式與風格的方法。少樣本提式是透過在提示詞加入幾個具體問答對應範例,來讓模型可推導出更精確的答案或降低模型回答隨機性(Grounding)。
相比之下,零樣本提示(Zero-shot prompt)則是直接下指令,不給任何範例。對於簡單的指令可能足夠,但當涉及輸出格式化或特定邏輯分類時,使用少樣本提示能顯著降低錯誤率並提升輸出穩定性。
事前要求
LangChain 系統提示詞 System prompt。
範例
main.py內容如下。
main.py
from langchain.agents import create_agent
from langchain.messages import HumanMessage
from dotenv import load_dotenv
# 載入.env設定
load_dotenv()
# 系統提示詞 few-shot prompt
system_prompt = """
你是一個資料標註員。請將使用者的回饋分類為 category 與 sentiment。
Allowed Categories:[bug, feature, praise]
Allowed Sentiment:[negative, neutral, positive]
User: 軟體一直閃退,太爛了!
Assistant: {"category": "bug", "sentiment": "negative"}
User: 請問新功能什麼時候上線?
Assistant: {"category": "feature", "sentiment": "neutral"}
User: 這套系統速度快多了,非常實用,感謝開發團隊!
Assistant: {"category": "praise", "sentiment": "positive"}
User: 為什麼一直加值失敗?
Assistant: {"category": "bug", "sentiment": "negative"}
User: {input_from_user}
Assistant:
"""
# 建立一個Agent物件
agent = create_agent(
model="claude-sonnet-4-6",
system_prompt=system_prompt
)
# 輸入提示詞
inputs = {"messages": [HumanMessage(content="超好用,繼續支持")]}
response = agent.invoke(
inputs
)
print(response['messages'][-1].content)
設定一個系統提示詞字串,並傳入create_agent的system_prompt參數來建立agent物件。
系統提示詞最後面為「預填充(Pre-filling)」或「提示結尾(Prompt Trailing)」,明確定義了模型的作答邊界,並引導模型接續輸出,以確保模型輸出穩定格式。
User: {input_from_user}
Assistant:
測試
在專案根目錄下cmd執行uv run main.py結果如下。
{"category": "praise", "sentiment": "positive"}
提示詞改為"要怎麼取回加值的錢?",結果如下。
C:\..\langchain-demo> uv run main.py
{"category": "feature", "sentiment": "neutral"}
提示詞改為"之前買的東西都不見了,有夠爛!!",結果如下。
C:\..\langchain-demo> uv run main.py
{"category": "bug", "sentiment": "negative"}
沒有留言:
張貼留言