Fitur API canggih untuk model yang diimpor - Amazon Bedrock

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

catatan

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

Awas

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.

catatan

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 } }