LangChain 在系統提示詞中使用結構化輸出(Structured output)的範例。
Agent除了可以用結構化提示詞(Structured prompt)指定回應格式,也可使用結構化輸出來約束語言模型的輸出格式。
事前要求
LangChain 系統提示詞 System prompt。
範例
main.py
from langchain.agents import create_agent
from langchain.messages import HumanMessage
from pydantic import BaseModel, Field
from dotenv import load_dotenv
# 載入.env設定
load_dotenv()
# 定義一個類別,作為模型回應的輸出結構
class Classify(BaseModel):
label: str = Field(description="主分類")
confidence: int = Field(description="信心度 (0-100%)", ge=0, le=100)
reasoning: str = Field(description="簡短原因")
keywords: str = Field(description="3-5個關鍵字,以逗號分隔")
# 系統提示詞
system_prompt = """
你是一個資料標註員。你的任務是分析使用者提供的文本並分類:
"""
# 建立一個Agent物件
agent = create_agent(
model="claude-sonnet-4-6",
system_prompt=system_prompt,
response_format=Classify
)
# 輸入提示詞
inputs = {"messages": [HumanMessage(
content="很感謝你們那麼快發貨,且兩天就收到貨物了,日後會繼續使用你們的服務並推薦給其他人,謝謝")]}
response = agent.invoke(
inputs
)
classify = response["structured_response"]
print(classify)
宣告一個繼承BaseModel的類別Classify,用來定義模型回應的輸出結構。
呼叫create_agent建立agent物件;設定系統提示詞字串到system_prompt參數;設定參數response_format的值為Classify來指定模型回應輸出格式。
測試
執行結果如下,語言模型按照Classify類別結構輸出回應(物件的字串表達形式)。
label='物流與配送' confidence=92 reasoning='用戶表達對快速發貨及兩天收貨的感謝,並表示未來會繼續使用服務並推薦他人,內容主要圍繞物流配送體驗的正面回饋。' keywords='發貨,收貨,物流,推薦,服務'
沒有留言:
張貼留言