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 yang ditentukan pengguna dan definisi alat, mengurangi kebutuhan akan mekanisme penguraian dan validasi khusus dalam penerapan AI produksi.
Manfaat
Output terstruktur mengatasi tantangan penting dalam aplikasi AI produksi:
-
Memastikan kepatuhan skema — Menghilangkan tingkat kesalahan dan loop coba ulang dari pendekatan berbasis prompt
-
Mengurangi kompleksitas pengembangan — Menghilangkan kebutuhan untuk logika penguraian dan validasi khusus
-
Biaya operasional yang lebih rendah — Mengurangi permintaan dan percobaan ulang yang gagal
-
Keandalan produksi - Memungkinkan penyebaran 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 diuraikan untuk pemrosesan hilir. Anda dapat menggunakan output terstruktur melalui dua mekanisme pelengkap:
Format keluaran Skema JSON
Untuk InvokeModel API dengan model Anthropic Claude, gunakan kolom output_config.format permintaan. Dengan model bobot terbuka, gunakan bidang response_format permintaan. Untuk Converse API, gunakan kolom outputConfig.textFormat permintaan. Respons model akan sesuai dengan skema JSON yang ditentukan.
Penggunaan alat yang ketat
Tambahkan strict: true flag ke definisi alat untuk mengaktifkan validasi skema pada nama alat dan input. 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 cara 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: trueflag dalam permintaan inferensi Anda. -
Validasi skema — Amazon Bedrock memvalidasi format skema JSON terhadap subset Draf Skema JSON 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 disimpan dalam cache selama 24 jam sejak akses pertama. Tata bahasa yang di-cache dienkripsi dengan kunci yang dikelola AWS.
-
Permintaan selanjutnya — Skema identik dari akun yang sama menggunakan tata bahasa cache, menghasilkan latensi inferensi yang sebanding dengan permintaan standar dengan overhead minimal.
-
Respon — Anda menerima respons inferensi standar dengan kepatuhan skema yang ketat.
Fitur Skema JSON yang didukung
Fitur Draf Skema JSON 2020-12 berikut didukung:
Semua jenis dasar:
object,array,string,integer,number,boolean,nullenum(string, angka, boolean, atau nol saja)const,anyOf,allOf(dengan keterbatasan)$ref,$def, dandefinitions(hanya referensi internal)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 (
minimum,maximum,multipleOf)Kendala string (
minLength,maxLength)additionalPropertiesdiatur untuk apa pun selainfalse
API atau fitur yang didukung
Anda dapat menggunakan output terstruktur di seluruh fitur Amazon Bedrock berikut:
| API atau fitur | Didukung | Catatan |
|---|---|---|
| Converse dan API ConverseStream | Ya | Inferensi percakapan. |
| InvokeModeldan InvokeModelWithResponseStream API | Ya | Single-turn kesimpulan. |
| Cross-Region kesimpulan | Ya | Bekerja tanpa pengaturan tambahan. |
| Inferensi batch | Ya | Bekerja tanpa pengaturan tambahan. |
AnthropicPesan API di titik bedrock-mantle akhir (https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages) |
Tidak | output_config.formatParameter ditolak dengan kesalahan 400. Untuk menggunakan output terstruktur dengan Anthropic Claude model, kirim permintaan melalui API Converse atau InvokeModel API di bedrock-runtime titik akhir. |
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.
Contoh permintaan
Format keluaran Skema JSON
Contoh berikut menunjukkan cara 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 (Claude yang Antropik)
{ "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 (Claude yang Antropik)
{ "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 }