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 API, 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.
-
First-time kompilasi - 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. AWS-managed
-
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.
Fitur Skema JSON yang didukung
Fitur JSON Schema Draft 2020-12 berikut didukung:
Semua tipe dasar:
object,array,string,integer,number,boolean,nullenum(string, angka, boolean, atau null saja)const,anyOf,allOf(dengan keterbatasan)$ref,$def, dandefinitions(referensi internal saja)Format string:
date-time,time,date,,duration,email,hostname,uri,ipv4,ipv6,uuidArray
minItems(hanya nilai 0 dan 1)
Fitur-fitur berikut tidak didukung:
Skema rekursif
$refReferensi eksternalKendala numerik (,,)
minimummaximummultipleOfKendala string (,)
minLengthmaxLengthadditionalPropertiesdisetel ke apa pun selainfalse
API atau fitur yang didukung
Anda dapat menggunakan output terstruktur di seluruh fitur Amazon Bedrock berikut:
Converse dan ConverseStream API — Gunakan output terstruktur dengan Converse dan ConverseStream API untuk inferensi percakapan.
InvokeModel dan InvokeModelWithResponseStream API — Gunakan output terstruktur dengan InvokeModel dan InvokeModelWithResponseStream API untuk inferensi satu putaran.
Cross-Region inferensi — Gunakan output terstruktur dalam inferensi lintas wilayah tanpa pengaturan tambahan.
Inferensi Batch — Gunakan output terstruktur dalam inferensi batch tanpa pengaturan tambahan apa pun.
Anthropic Messages API pada bedrock-mantle titik akhir — Output terstruktur tidak didukung pada jalur Anthropic-style Messages API (). https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages output_config.formatParameter ditolak dengan kesalahan 400. Untuk menggunakan output terstruktur dengan Anthropic Claude model, kirim permintaan melalui Converse API atau InvokeModel API pada titik akhirbedrock-runtime.
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
Untuk melihat model mana yang mendukung output terstruktur, silakan buka model sekilas dan pilih model yang Anda minati.
Permintaan contoh
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 (Open-weight model)
{ "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 (Open-weight model)
{ "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 }