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:
-
Permintaan awal - Anda menyertakan skema JSON melalui
outputConfig.textFormat,output_config.format, atauresponse_formatparameter atau definisi alat denganstrict: truetanda dalam permintaan inferensi Anda. -
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.
-
Kompilasi pertama kali — Untuk skema baru, Amazon Bedrock mengkompilasi tata bahasa, yang mungkin memakan waktu hingga beberapa menit.
-
Caching - Tata bahasa yang berhasil dikompilasi di-cache selama 24 jam dari akses pertama. Tata bahasa cache dienkripsi dengan kunci yang dikelola AWS.
-
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.
-
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:0Claude Soneta 4.5 ()
anthropic.claude-sonnet-4-5-20250929-v1:0Claude Opus 4.5 ()
anthropic.claude-opus-4-5-20251101-v1:0Claude Opus 4.6 ()
anthropic.claude-opus-4-6-v1
- Qwen
-
Qwen3 235B A22B 2507 ()
qwen.qwen3-235b-a22b-2507-v1:0Qwen3 32B (padat) ()
qwen.qwen3-32b-v1:0Qwen3-Coder-30B-A3B-Instruksi ()
qwen.qwen3-coder-30b-a3b-v1:0Qwen3 Coder 480B A35B Instruksi ()
qwen.qwen3-coder-480b-a35b-v1:0Qwen3 Berikutnya 80B A3B ()
qwen.qwen3-next-80b-a3bQwen3 VL 235B A22B ()
qwen.qwen3-vl-235b-a22b
- OpenAI
-
gpt-oss-120b ()
openai.gpt-oss-120b-1:0gpt-oss-20b ()
openai.gpt-oss-20b-1:0GPT OSS Safeguard 120B ()
openai.gpt-oss-safeguard-120bGPT OSS Safeguard 20B ()
openai.gpt-oss-safeguard-20b
- DeepSeek
-
DeepSeek-V3.1 ()
deepseek.v3-v1:0
-
Gemma 3 12B IT ()
google.gemma-3-12b-itGemma 3 27B PT ()
google.gemma-3-27b-it
- MiniMax
-
MiniMax M2 (
minimax.minimax-m2)
- Mistral AI
-
Magistral Kecil 2509 ()
mistral.magistral-small-2509Ministro 3B ()
mistral.ministral-3-3b-instructKementerian 3 8B ()
mistral.ministral-3-8b-instructKementerian 14B 3.0 ()
mistral.ministral-3-14b-instructMistral Besar 3 ()
mistral.mistral-large-3-675b-instructVoxtral Mini 3B 2507 ()
mistral.voxtral-mini-3b-2507Voxtral 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-v2NVIDIA 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 }