當您需要從 Claude 取得結構化資料時,您有兩種主要方法:使用訊息預填和停止序列的提示式技巧,或是使用工具的更穩健方法。雖然提示式方法設置較為簡單,但工具能提供更可靠的輸出,代價是增加了複雜性。
結構化資料的工具
基於工具的方法是透過建立一個 JSON schema 來定義您想要提取的資料的確切結構。您不必期望 Claude 正確格式化其回應,而是實際上給予 Claude 一個函式來呼叫,並帶有符合您期望輸出結構的特定參數。

以下是此流程的運作方式:
- 撰寫一個描述您所尋找資料結構的 schema
- 使用
tool_choice參數強制 Claude 使用工具 - 從工具使用回應中提取結構化資料
- 無需提供後續回應——一旦取得資料即完成
例如,如果您想從一份財務報表中提取餘額和關鍵見解,您的 schema 會分別將這些定義為整數和字串陣列。
控制工具使用
此技巧的關鍵部分是確保 Claude 確實呼叫您的工具。您可以使用 tool_choice 參數來控制此行為:

{"type": "auto"}- 模型自行決定是否需要使用工具(預設值){"type": "any"}- 模型必須使用工具,但可以選擇使用哪一個{"type": "tool", "name": "TOOL_NAME"}- 模型必須使用指定的工具
對於結構化資料提取,您通常會想要第三個選項,以確保 Claude 呼叫您特定的 schema 工具。
實作範例
假設您想從一篇文章中提取標題、作者和關鍵見解。首先,您需要建立一個工具 schema:
python
article_summary_schema = {
"name": "article_summary",
"description": "Extracts structured data from articles",
"input_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"author": {"type": "string"},
"key_insights": {
"type": "array",
"items": {"type": "string"}
}
}
}
}然後您會呼叫 Claude 並使用該工具,並強制其使用:
python
response = chat(
messages,
tools=[article_summary_schema],
tool_choice={"type": "tool", "name": "article_summary"}
)回應將包含一個工具使用區塊,其中在 input 欄位中有您的結構化資料。您可以直接存取它:
python
structured_data = response.content[0].input何時使用每種方法
當您需要快速且簡單的東西時,選擇提示式結構化輸出。當您需要保證可靠性並能處理額外的設置複雜性時,使用工具。這兩種技巧都有其價值,取決於您的特定使用案例和需求。