AdSense

網頁

2026/6/26

LangChain 結構化輸出 Structured output

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)

github


宣告一個繼承BaseModel的類別Classify,用來定義模型回應的輸出結構。

呼叫create_agent建立agent物件;設定系統提示詞字串到system_prompt參數;設定參數response_format的值為Classify來指定模型回應輸出格式。


測試

執行結果如下,語言模型按照Classify類別結構輸出回應(物件的字串表達形式)。

label='物流與配送' confidence=92 reasoning='用戶表達對快速發貨及兩天收貨的感謝,並表示未來會繼續使用服務並推薦他人,內容主要圍繞物流配送體驗的正面回饋。' keywords='發貨,收貨,物流,推薦,服務'


沒有留言:

AdSense