Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fitur API canggih untuk model yang diimpor
Halaman ini memberikan contoh rinci fitur-fitur canggih yang tersedia untuk model yang diimpor setelah 11 November 2025. Kemampuan ini termasuk output terstruktur untuk generasi terkontrol, dukungan penglihatan yang ditingkatkan untuk pemrosesan multi-gambar, probabilitas log untuk wawasan kepercayaan, dan pemanggilan alat untuk model. GPT-OSS
Output Terstruktur
Output terstruktur memungkinkan pembuatan terkontrol mengikuti format, skema, atau pola tertentu. Fitur ini memastikan bahwa respons model mematuhi batasan yang telah ditentukan, sehingga ideal untuk aplikasi yang membutuhkan format data yang konsisten, integrasi API, atau pipeline pemrosesan otomatis.
Output terstruktur pada Impor Model Kustom didukung melalui dua parameter:
response_format- Mendukung json_object dan json_schema jenis
structured_outputs- Mendukungjson,regex,choice, dan grammar jenis
Saat menggunakan output terstruktur pada Impor Model Kustom, pelanggan harus mengharapkan pertukaran kinerja karena validasi kendala selama pembuatan. Kendala sederhana menyukai choice dan json_object memiliki dampak minimal, sementara kendala kompleks menyukai dan grammar dapat secara signifikan meningkatkan latensi json_schema dan mengurangi throughput. Untuk kinerja optimal, gunakan tipe kendala yang lebih sederhana bila memungkinkan dan jaga agar skema tetap rata daripada bersarang dalam.
Contoh berikut menunjukkan dukungan output terstruktur di berbagai format API. Definisi model Pydantic adalah:
from pydantic import BaseModel
from enum import Enum
class CarType(str, Enum):
sedan = "sedan"
suv = "SUV"
truck = "Truck"
coupe = "Coupe"
class CarDescription(BaseModel):
brand: str
model: str
car_type: CarType
- BedrockCompletion
-
BedrockCompletion mendukung output terstruktur menggunakan response_format parameter dengan json_object dan json_schema tipe saja.
Contoh: Skema JSON
payload = {
"prompt": "Generate a JSON with the brand, model and car_type of the most iconic car from the 90's",
"response_format": {
"type": "json_schema",
"json_schema": CarDescription.model_json_schema()
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons:
{
"generation": "{\n \"brand\": \"Ferrari\",\n \"model\": \"F40\",\n \"car_type\": \"SUV\"\n }",
"prompt_token_count": 22,
"generation_token_count": 30,
"stop_reason": "stop",
"logprobs": null
}
- OpenAICompletion
-
Open AICompletion mendukung parameter response_format (json_object, json_schema) dan structured_outputs (json, regex, choice, grammar). Gunakan max_tokens bukan max_gen_len untuk merutekan permintaan ke BukaAICompletion.
Contoh: Output Terstruktur - Pilihan
payload = {
"prompt": "Classify the sentiment of this sentence. Amazon Bedrock CMI is Amazing!",
"max_tokens": 10,
"structured_outputs": {
"choice": ["positive", "negative"]
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons:
{
"id": "cmpl-01f94c4652d24870bbb4d5418a01c384",
"object": "text_completion",
"choices": [
{
"index": 0,
"text": "positive",
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 4
}
}
- OpenAIChatCompletion
-
Open AIChat Completion mendukung parameter response_format (json_object, json_schema) dan structured_outputs (json, regex, choice, grammar).
Contoh: Format Respons - Skema JSON
payload = {
"messages": [
{"role": "user", "content": "Generate a JSON with the brand, model and car_type of the most iconic car from the 90's"}
],
"max_tokens": 100,
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "car-description",
"schema": CarDescription.model_json_schema()
}
}
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons:
{
"id": "chatcmpl-cae5a43b0a924b8eb434510cbf978a19",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "{\"brand\": \"Dodge\", \"model\": \"Viper\", \"car_type\": \"Coupe\"}"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 56,
"completion_tokens": 23
}
}
Dukungan Visi
Kemampuan penglihatan memungkinkan pemrosesan gambar bersama input teks, dengan dukungan multi-gambar yang disempurnakan untuk tugas analisis visual yang kompleks. Impor Model Kustom sekarang mendukung hingga 3 gambar per permintaan, ditingkatkan dari batasan gambar tunggal sebelumnya.
API yang didukung: Buka AIChat Penyelesaian saja. Semua model yang diimpor setelah 11 November 2025 akan default ke API ini untuk kemampuan penglihatan.
Persyaratan Gambar:
Diperlukan pengkodean Base64 - Gambar URLs akan menyebabkan kegagalan permintaan
Maksimal 3 gambar per permintaan
Gambar resolusi tinggi secara signifikan meningkatkan waktu pemrosesan dan penggunaan memori
Gambar resolusi tinggi secara signifikan meningkatkan waktu pemrosesan, penggunaan memori, dan dapat menyebabkan kesalahan batas waktu. Beberapa gambar resolusi tinggi menambah dampak kinerja secara eksponensial. Untuk kinerja optimal, ubah ukuran gambar dengan tepat dan gunakan tingkat detail yang lebih rendah jika memungkinkan.
- OpenAIChatCompletion
-
Contoh: Pemrosesan Multi-Gambar
import json
import boto3
import base64
client = boto3.client('bedrock-runtime', region_name='us-east-1')
# Load and encode images
with open('/path/to/car_image_1.jpg', 'rb') as f:
image_data_1 = base64.b64encode(f.read()).decode('utf-8')
with open('/path/to/car_image_2.jpg', 'rb') as f:
image_data_2 = base64.b64encode(f.read()).decode('utf-8')
payload = {
"messages": [
{
"role": "system",
"content": "You are a helpful assistant that can analyze images."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Spot the difference between the two images?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_data_1}"
}
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_data_2}"
}
}
]
}
],
"max_tokens": 300,
"temperature": 0.5
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons:
{
"id": "chatcmpl-ccae8a67e62f4014a9ffcbedfff96f44",
"object": "chat.completion",
"created": 1763167018,
"model": "667387627229-g6vkuhd609s4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "There are no differences between the two images provided. They appear to be identical.",
"refusal": null,
"annotations": null,
"audio": null,
"function_call": null,
"tool_calls": [],
"reasoning_content": null
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"token_ids": null
}
],
"service_tier": null,
"system_fingerprint": null,
"usage": {
"prompt_tokens": 2795,
"total_tokens": 2812,
"completion_tokens": 17,
"prompt_tokens_details": null
},
"prompt_logprobs": null,
"prompt_token_ids": null,
"kv_transfer_params": null
}
Probabilitas Log
Probabilitas log mewakili kemungkinan setiap token dalam urutan, dihitung sebagai log (p) di mana p adalah probabilitas token pada posisi apa pun yang diberikan token sebelumnya dalam konteks. Karena log probs bersifat aditif, probabilitas urutan sama dengan jumlah prob log token individu, membuatnya berguna untuk peringkat generasi dengan skor rata-rata per token. Impor Model Kustom akan selalu mengembalikan nilai logprob mentah untuk token yang diminta.
Aplikasi utama mencakup tugas klasifikasi di mana masalah log memungkinkan ambang kepercayaan khusus, sistem Tanya Jawab pengambilan yang menggunakan skor kepercayaan untuk mengurangi halusinasi, saran pelengkapan otomatis berdasarkan kemungkinan token, dan perhitungan kebingungan untuk membandingkan kinerja model di seluruh petunjuk. Probs log juga menyediakan kemampuan analisis tingkat token, memungkinkan pengembang untuk memeriksa token alternatif model yang dipertimbangkan.
Logprobs tidak di-cache. Untuk permintaan yang membutuhkan logprob prompt, sistem akan mengabaikan cache awalan dan menghitung ulang prefill prompt penuh untuk menghasilkan logprobs. Ini menyajikan tradeoff kinerja yang jelas saat menggunakan logprobs.
Dukungan probabilitas log bervariasi menurut format API:
BedrockCompletion - Hanya token keluaran
Buka AICompletion - Prompt dan output token
Open AIChat Completion - Prompt dan output token
- BedrockCompletion
-
BedrockCompletion hanya mendukung logprobs token keluaran. Ini akan mengembalikan 1 logprob teratas untuk setiap token keluaran.
payload = {
"prompt": "How is the rainbow formed?",
"max_gen_len": 10,
"temperature": 0.5,
"return_logprobs": True
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons (terpotong):
{
"generation": " A rainbow is formed when sunlight passes through water dro",
"prompt_token_count": 7,
"generation_token_count": 10,
"stop_reason": "length",
"logprobs": [
{
"362": -2.1413702964782715
},
{
"48713": -0.8180374503135681
},
{
"374": -0.09657637774944305
},
...
]
}
- OpenAIChatCompletion
-
Open AIChat Completion mendukung logprobs token prompt dan output. Anda dapat mengatur top_logprobs=N dan prompt_logprobs=N di mana N adalah bilangan bulat yang mewakili probabilitas log untuk N token yang paling mungkin di setiap posisi.
payload = {
"messages": [
{
"role": "user",
"content": "How is the rainbow formed?"
}
],
"max_tokens": 10,
"temperature": 0.5,
"logprobs": True,
"top_logprobs": 1,
"prompt_logprobs": 1
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
Contoh respons (terpotong):
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A rainbow is formed..."
},
"logprobs": {
"content": [
{
"token": "A",
"logprob": -0.07903262227773666,
"bytes": [65],
"top_logprobs": [
{
"token": "A",
"logprob": -0.07903262227773666,
"bytes": [65]
}
]
},
{
"token": " rainbow",
"logprob": -0.20187227427959442,
"bytes": [32, 114, 97, 105, 110, 98, 111, 119],
"top_logprobs": [...]
},
...
]
},
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 41,
"completion_tokens": 10,
"total_tokens": 51
}
}