結構化輸出內容可讓您限制 Claude 模型生成的輸出內容,使其完全符合特定 JSON 結構定義。這項功能有助於確保 Claude 模型的回覆一律採用下游應用程式、資料庫和處理管道所需的精確格式。
結構化輸出內容提供兩項互補功能,您可以在同一項要求中單獨或一併使用:
- JSON 輸出內容 (
output_config.format):將模型的回覆內容限制為符合您提供結構定義的 JSON 物件。需要從文字中擷取結構化資料、生成結構化報表或格式化 API 回應時,請使用這項功能。 - 嚴格使用工具 (
tools[].strict):確保模型傳遞給工具的引數符合工具的input_schema。在代理式工作流程中需要型別安全函式呼叫時,請使用這個函式。
詳情請參閱 Anthropic 的「Building with Claude: Structured Outputs」和「Strict tool use」說明文件。
支援的 Anthropic Claude 模型
Gemini Enterprise Agent Platform 支援所有 Anthropic Claude 4.5 和後續模型的結構化輸出內容。
控管結構化輸出內容的存取權
根據預設,機構政策限制 constraints/vertexai.allowedPartnerModelFeatures 會停用結構化輸出內容。如要啟用結構化輸出,您必須設定這項限制,明確允許 structured_outputs 功能。
此外,您也可以設定機構政策限制 constraints/vertexai.allowedModels,限制 Claude 模型的存取權。
如需設定組織政策限制的詳細操作說明,請參閱「控管 Model Garden 模型的存取權」。
傳送結構化輸出內容要求
如要要求 JSON 輸出內容,請將 POST 要求傳送至發布商模型端點,並在要求主體中加入 output_config 參數。output_config 參數會指定模型回覆必須符合的 JSON 結構定義。
REST
下列範例說明如何向 Agent Platform API 傳送要求,從非結構化電子郵件中擷取結構化聯絡資訊。回應會限制為包含 name、email、plan_interest 和 demo_requested 欄位的 JSON 物件。
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION:支援 Anthropic Claude 模型的區域。如要使用全域端點,請參閱「指定全域端點」。
- MODEL:支援的 Claude 模型,例如
claude-opus-4-7。 - ROLE:與訊息相關聯的角色。您可以指定
user或assistant。 第一則訊息必須使用user角色。Claude 模型會交替進行user和assistant回合。如果最後一則訊息使用assistant角色,回應內容會立即接續該訊息的內容。您可以使用這項功能限制模型回覆的部分內容。 - CONTENT:
user或assistant訊息的內容,例如文字。例如:Extract the key information from this email: John Smith (john@example.com) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm. - MAX_TOKENS:
回覆內可以生成的權杖數量上限。一個權杖約為 3.5 個字元。100 個符記約等於 60 到 80 個字。
如要取得較短的回覆,請指定較低的值;如要取得可能較長的回覆,請調高此值。
- STREAM:布林值,用於指定是否要串流傳送回覆。設為
true可串流回應,設為false則可一次傳回回應。結構化輸出內容通常會透過false傳回。
這個範例使用下列結構化輸出欄位。如要瞭解各個欄位的詳細資訊,請參閱「要求欄位」一節。
output_config:頂層設定區塊,可控制模型回覆的結構。output_config.format.type:設為json_schema,將回覆內容限制為符合所提供結構定義的 JSON 物件。output_config.format.schema:JSON 結構定義,用於定義模型回覆的必要結構。結構定義必須符合支援的 JSON 結構定義子集。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
JSON 要求內文:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": false
}
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
您應該會收到類似如下的 JSON 回應。content 區塊的 text 欄位包含符合您在 output_config 中指定結構定義的 JSON 字串。
要求欄位
以下欄位專用於 JSON 輸出。如要瞭解其他要求欄位,請參閱 Claude 訊息 API 參考資料。
output_config:頂層設定區塊,可控制模型回應的結構。output_config.format:輸出內容的格式定義。僅支援json_schema類型。output_config.format.type:要強制執行的輸出格式類型。將此值設為json_schema,將回覆限制為 JSON 物件。output_config.format.schema:定義模型回覆必要結構的 JSON 結構定義。結構化輸出內容支援標準 JSON 結構定義,但有一些限制,例如必須將物件的additionalProperties設為false,且不支援數值或字串長度限制。如需支援和不支援功能的完整清單,請參閱 Anthropic 的 JSON 結構定義限制說明文件。在結構定義中,您通常會指定:type:這個層級的值的 JSON 類型 (根結構定義最常見的類型為object)。properties:欄位名稱對應至型別定義的地圖,說明模型必須傳回的每個欄位。required:模型必須在回應中加入的屬性名稱清單。additionalProperties:布林值,設為false時,可防止模型納入properties中未宣告的任何欄位。
嚴格使用工具
嚴格使用工具可確保模型傳遞給工具的引數與工具的 input_schema 相符。如果沒有嚴格模式,模型可能會使用型別不正確的引數呼叫工具 (例如 "2" 而非 2),或省略必要欄位,這可能會導致下游函式中斷,並需要重試邏輯。啟用嚴格模式後,API 會使用文法限制取樣,確保:
- 工具
name一律是您提供的工具之一。 - 這項工具
input一律會遵循工具的input_schema。
如需驗證工具參數、建構代理工作流程、確保型別安全函式呼叫,或處理具有巢狀屬性的複雜工具,請使用嚴格工具使用模式。
如要啟用嚴格的工具使用模式,請在工具定義中將 "strict": true 設為頂層欄位,與 name、description 和 input_schema 並列。
REST
以下範例說明如何將要求傳送至 Agent Platform API,定義嚴格的 get_weather 工具。模型保證會使用 location 字串和選用的 unit (celsius 或 fahrenheit) 呼叫工具。
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION:支援 Anthropic Claude 模型的區域。如要使用全域端點,請參閱「指定全域端點」。
- MODEL:支援的 Claude 模型,例如
claude-opus-4-7。 - ROLE:與訊息相關聯的角色。第一則訊息必須使用
user角色。 - CONTENT:
user或assistant訊息的內容,例如文字。例如:What is the weather in San Francisco? - MAX_TOKENS:
回覆內可以生成的權杖數量上限。一個權杖約為 3.5 個字元。100 個符記約等於 60 到 80 個字。
如要取得較短的回覆,請指定較低的值;如要取得可能較長的回覆,請調高此值。
- STREAM:布林值,用於指定是否要串流傳送回覆。設為
true可串流回應,設為false則可一次傳回回應。
本範例使用下列嚴格的工具使用欄位。如要瞭解各個欄位的詳細資訊,請參閱「嚴格工具使用欄位」一節。
tools[].strict:布林值,設為true時,可為工具啟用文法限制採樣。模型保證會使用與input_schema相符的引數呼叫工具。tools[].input_schema:JSON 結構定義,用於定義模型可傳遞至工具的引數。當strict為true時,結構定義必須符合與 JSON 輸出內容的output_config結構定義相同的支援 JSON 結構定義子集。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
JSON 要求內文:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, for example San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"],
"additionalProperties": false
}
}
]
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
您應該會收到類似如下的 JSON 回應。tool_use 內容區塊包含 input 欄位,其鍵和值類型保證與工具的 input_schema 相符。
嚴格的工具使用欄位
下列欄位專用於嚴格工具使用。如要瞭解其他工具定義欄位,請參閱 Anthropic 的「定義工具」說明文件。
tools[].strict:布林值,設為true時,可為工具啟用文法限制取樣。當strict為true時,模型工具的輸入內容會受到限制,必須符合input_schema中的結構定義。預設值為false。tools[].input_schema:定義模型可傳遞至工具的引數的 JSON 結構定義。如果strict為true,結構定義必須符合 JSON 輸出內容使用的相同 JSON 結構定義子集。具體來說,您必須:- 將結構定義中每個物件的
additionalProperties設為false。 - 在
required陣列中列出每個屬性。
如需支援和不支援功能的完整清單,請參閱 Anthropic 的 JSON 結構定義限制說明文件。
- 將結構定義中每個物件的