Dapatkan hasil JSON yang divalidasi dari model - Amazon Bedrock

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Dapatkan hasil JSON yang divalidasi dari model

Output terstruktur adalah kemampuan di Amazon Bedrock yang memastikan respons model sesuai dengan skema JSON dan definisi alat yang ditentukan pengguna, mengurangi kebutuhan akan mekanisme penguraian dan validasi khusus dalam penerapan AI produksi.

Manfaat

Output terstruktur mengatasi tantangan kritis dalam aplikasi AI produksi:

  • Memastikan kepatuhan skema - Menghilangkan tingkat kesalahan dan coba ulang loop dari pendekatan berbasis prompt

  • Mengurangi kompleksitas pengembangan - Menghapus kebutuhan untuk parsing kustom dan logika validasi

  • Biaya operasional yang lebih rendah — Mengurangi permintaan dan percobaan ulang yang gagal

  • Keandalan produksi - Memungkinkan penerapan aplikasi AI yang percaya diri yang membutuhkan output yang dapat diprediksi dan dapat dibaca mesin

Cara kerjanya

Output terstruktur membatasi respons model untuk mengikuti skema tertentu, memastikan output yang valid dan dapat diurai untuk pemrosesan hilir. Anda dapat menggunakan output terstruktur melalui dua mekanisme pelengkap:

Format keluaran Skema JSON

Untuk InvokeModel API dengan model Anthropic Claude, gunakan bidang permintaan. output_config.format Dengan model bobot terbuka, gunakan bidang response_format permintaan. Untuk Converse APIs, gunakan bidang outputConfig.textFormat permintaan. Respons model akan sesuai dengan skema JSON yang ditentukan.

Penggunaan alat yang ketat

Tambahkan strict: true bendera ke definisi alat untuk mengaktifkan validasi skema pada nama dan input alat. Panggilan alat model kemudian akan mengikuti skema input alat yang ditentukan.

Mekanisme ini dapat digunakan secara independen atau bersama-sama dalam permintaan yang sama. Lihat dokumentasi API Bedrock untuk detail selengkapnya.

Minta alur kerja

Berikut ini menjelaskan bagaimana Amazon Bedrock memproses permintaan dengan output terstruktur:

  1. Permintaan awal - Anda menyertakan skema JSON melaluioutputConfig.textFormat,output_config.format, atau response_format parameter atau definisi alat dengan strict: true tanda dalam permintaan inferensi Anda.

  2. Validasi skema - Amazon Bedrock memvalidasi format skema JSON terhadap subset JSON Schema Draft 2020-12 yang didukung. Jika skema berisi fitur yang tidak didukung, Amazon Bedrock segera mengembalikan kesalahan 400.

  3. Kompilasi pertama kali — Untuk skema baru, Amazon Bedrock mengkompilasi tata bahasa, yang mungkin memakan waktu hingga beberapa menit.

  4. Caching - Tata bahasa yang berhasil dikompilasi di-cache selama 24 jam dari akses pertama. Tata bahasa cache dienkripsi dengan kunci yang dikelola AWS.

  5. Permintaan berikutnya — Skema identik dari akun yang sama menggunakan tata bahasa yang di-cache, menghasilkan latensi inferensi yang sebanding dengan permintaan standar dengan overhead minimal.

  6. Respons - Anda menerima tanggapan inferensi standar dengan kepatuhan skema yang ketat.

Didukung APIs atau fitur

Anda dapat menggunakan output terstruktur di seluruh fitur Amazon Bedrock berikut:

Converse dan ConverseStream APIs — Gunakan output terstruktur dengan Converse dan ConverseStream APIs untuk inferensi percakapan.

InvokeModel dan InvokeModelWithResponseStream APIs — Gunakan output terstruktur dengan InvokeModel dan InvokeModelWithResponseStream APIs untuk inferensi putaran tunggal.

Inferensi Lintas Wilayah — Gunakan output terstruktur dalam inferensi lintas wilayah tanpa pengaturan tambahan apa pun.

Inferensi Batch — Gunakan output terstruktur dalam inferensi batch tanpa pengaturan tambahan.

catatan

Output terstruktur tidak kompatibel dengan kutipan untuk model Antropik. Jika Anda mengaktifkan kutipan saat menggunakan output terstruktur, model akan mengembalikan kesalahan 400.

Model yang didukung

Output terstruktur umumnya tersedia di semua wilayah AWS komersial untuk model tanpa server Amazon Bedrock tertentu. Untuk daftar model yang didukung, lihat Dukungan model berdasarkan fitur.

Antropik
  • Claude Haiku 4.5 () anthropic.claude-haiku-4-5-20251001-v1:0

  • Claude Soneta 4.5 () anthropic.claude-sonnet-4-5-20250929-v1:0

  • Claude Opus 4.5 () anthropic.claude-opus-4-5-20251101-v1:0

  • Claude Opus 4.6 () anthropic.claude-opus-4-6-v1

Qwen
  • Qwen3 235B A22B 2507 () qwen.qwen3-235b-a22b-2507-v1:0

  • Qwen3 32B (padat) () qwen.qwen3-32b-v1:0

  • Qwen3-Coder-30B-A3B-Instruksi () qwen.qwen3-coder-30b-a3b-v1:0

  • Qwen3 Coder 480B A35B Instruksi () qwen.qwen3-coder-480b-a35b-v1:0

  • Qwen3 Berikutnya 80B A3B () qwen.qwen3-next-80b-a3b

  • Qwen3 VL 235B A22B () qwen.qwen3-vl-235b-a22b

OpenAI
  • gpt-oss-120b () openai.gpt-oss-120b-1:0

  • gpt-oss-20b () openai.gpt-oss-20b-1:0

  • GPT OSS Safeguard 120B () openai.gpt-oss-safeguard-120b

  • GPT OSS Safeguard 20B () openai.gpt-oss-safeguard-20b

DeepSeek
  • DeepSeek-V3.1 () deepseek.v3-v1:0

Google
  • Gemma 3 12B IT () google.gemma-3-12b-it

  • Gemma 3 27B PT () google.gemma-3-27b-it

MiniMax
  • MiniMax M2 (minimax.minimax-m2)

Mistral AI
  • Magistral Kecil 2509 () mistral.magistral-small-2509

  • Ministro 3B () mistral.ministral-3-3b-instruct

  • Kementerian 3 8B () mistral.ministral-3-8b-instruct

  • Kementerian 14B 3.0 () mistral.ministral-3-14b-instruct

  • Mistral Besar 3 () mistral.mistral-large-3-675b-instruct

  • Voxtral Mini 3B 2507 () mistral.voxtral-mini-3b-2507

  • Voxtral Kecil 24B 2507 () mistral.voxtral-small-24b-2507

Moonshot AI
  • Kimi K2 Berpikir () moonshot.kimi-k2-thinking

NVIDIA
  • NVIDIA Nemotron Nano 12B v2 VL () BF16 nvidia.nemotron-nano-12b-v2

  • NVIDIA Nemotron Nano 9B v2 () nvidia.nemotron-nano-9b-v2

Contoh permintaan

Format keluaran Skema JSON

Contoh berikut menunjukkan bagaimana menggunakan format output Skema JSON dengan output terstruktur.

API Converse

{ "messages": [ { "role": "user", "content": [ { "text": "Given the following unstructured data, extract it into the provided structure." }, { "text": "..." } ] } ], "outputConfig": { "textFormat": { "type": "json_schema", "structure": { "jsonSchema": { "schema": "{\"type\": \"object\", \"properties\": {\"title\": {\"type\": \"string\", \"description\": \"title\"}, \"summary\": {\"type\": \"string\", \"description\": \"summary\"}, \"next_steps\": {\"type\": \"string\", \"description\": \"next steps\"}}, \"required\": [\"title\", \"summary\", \"next_steps\"], \"additionalProperties\": false}", "name": "data_extraction", "description": "Extract structured data from unstructured text" } } } } }

InvokeModel (Antropik Claude)

{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Given the following unstructured data, extract it into the provided structure." }, { "type": "text", "text": "..." } ] } ], "max_tokens": 3000, "temperature": 1.0, "output_config": { "format": { "type": "json_schema", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } } } }

InvokeModel (Model berat terbuka)

{ "messages": [ { "role": "user", "content": "Given the following unstructured data, extract it into the provided structure." }, { "role": "user", "content": "..." } ], "inferenceConfig": { "maxTokens": 3000, "temperature": 1.0 }, "response_format": { "json_schema": { "name": "summarizer", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } }, "type": "json_schema" } }

Penggunaan alat yang ketat

Contoh berikut menunjukkan cara menggunakan bidang ketat dengan penggunaan alat.

API Converse

{ "messages": [ { "role": "user", "content": [ { "text": "What's the weather like in New York?" } ] } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "inputSchema": { "json": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } } ] } }

InvokeModel (Antropik Claude)

{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What's the weather like in San Francisco?" } ] } ], "max_tokens": 3000, "temperature": 1.0, "tools": [ { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "input_schema": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ], "additionalProperties": false } } ] }

InvokeModel (Model berat terbuka)

{ "messages": [ { "role": "user", "content": "What's the weather like in San Francisco?" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } ], "tool_choice": "auto", "max_tokens": 2000, "temperature": 1.0 }