翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
インポートされたモデルの高度な API 機能
このページでは、2025 年 11 月 11 日以降にインポートされたモデルで使用できる高度な機能の詳細な例を示します。これらの機能には、制御された生成のための構造化出力、マルチイメージ処理のための拡張ビジョンサポート、信頼インサイトのためのログ確率、GPT-OSSモデルのツール呼び出しが含まれます。
構造化出力
構造化出力は、特定の形式、スキーマ、またはパターンに従って制御された生成を可能にします。この機能は、モデルの応答が事前定義された制約に準拠していることを保証し、一貫したデータ形式、API 統合、または自動処理パイプラインを必要とするアプリケーションに最適です。
カスタムモデルインポートの構造化出力は、次の 2 つのパラメータでサポートされています。
カスタムモデルインポートで構造化出力を使用する場合、生成中の制約検証によるパフォーマンスのトレードオフを想定する必要があります。choice や などの単純な制約json_objectは影響を最小限に抑え、 json_schemaや などの複雑な制約はレイテンシーを大幅に増加させ、スループットを低下させるgrammar可能性があります。最適なパフォーマンスを得るには、可能な限りシンプルな制約タイプを使用し、深くネストされるのではなくスキーマを平らに保ちます。
次の例は、さまざまな API 形式にわたる構造化出力のサポートを示しています。Pydantic モデル定義は次のとおりです。
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 は、 json_objectおよび json_schemaタイプの response_formatパラメータのみを使用した構造化出力をサポートします。
例: 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())
レスポンスの例:
{
"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
-
OpenAICompletion は、 response_format (json_object、json_schema) パラメータと structured_outputs (json、regex、 choice、grammar) パラメータの両方をサポートしています。OpenAICompletion にリクエストをルーティングmax_gen_lenするには、 max_tokensの代わりに を使用します。
例: 構造化出力 - 選択
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())
レスポンスの例:
{
"id": "cmpl-01f94c4652d24870bbb4d5418a01c384",
"object": "text_completion",
"choices": [
{
"index": 0,
"text": "positive",
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 17,
"completion_tokens": 4
}
}
- OpenAIChatCompletion
-
OpenAIChatCompletion は、 response_format (json_object、json_schema) パラメータと structured_outputs (json、regex、 choice、grammar) パラメータの両方をサポートしています。
例: レスポンス形式 - 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())
レスポンスの例:
{
"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
}
}
ビジョンのサポート
ビジョン機能を使用すると、複雑なビジュアル分析タスクのマルチイメージサポートを強化して、テキスト入力とともにイメージを処理できます。カスタムモデルインポートは、以前の単一イメージの制限から拡張され、リクエストごとに最大 3 つのイメージをサポートするようになりました。
サポートされている API: OpenAIChatCompletion のみ。2025 年 11 月 11 日以降にインポートされたすべてのモデルは、ビジョン機能のためにデフォルトでこの API になります。
イメージの要件:
高解像度イメージでは、処理時間、メモリ使用量が大幅に増加し、タイムアウトエラーが発生する可能性があります。複数の高解像度イメージは、パフォーマンスに指数関数的に影響します。最適なパフォーマンスを得るには、イメージのサイズを適切に変更し、可能な限り低い詳細レベルを使用します。
- OpenAIChatCompletion
-
例: マルチイメージ処理
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())
レスポンスの例:
{
"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
}
ログの確率
ログ確率は、シーケンス内の各トークンの可能性を表し、log(p) として計算されます。p は、コンテキスト内の前のトークンが与えられた任意の位置でのトークンの確率です。ログ確率は加算的であるため、シーケンス確率は個々のトークンログ確率の合計と等しく、トークンごとの平均スコアによるランク付け生成に役立ちます。カスタムモデルインポートは常に、リクエストされたトークンの raw logprob 値を返します。
主要なアプリケーションには、ログプローブがカスタム信頼度しきい値を有効にする分類タスク、幻覚を減らすために信頼スコアを使用する取得 Q&A システム、トークンの可能性に基づくオートコンプリート提案、プロンプト間でモデルのパフォーマンスを比較するための多重度計算などがあります。ログプローブはトークンレベルの分析機能も提供するため、デベロッパーはモデルが考慮した代替トークンを調べることができます。
Logprobs はキャッシュされません。プロンプトログプローブを必要とするリクエストの場合、システムはプレフィックスキャッシュを無視し、完全なプロンプトの事前入力を再計算してログプローブを生成します。これは、logprobs を使用する場合に明らかなパフォーマンスのトレードオフを示します。
ログ確率のサポートは API 形式によって異なります。
BedrockCompletion - 出力トークンのみ
OpenAICompletion - プロンプトトークンと出力トークン
OpenAIChatCompletion - プロンプトトークンと出力トークン
- BedrockCompletion
-
BedrockCompletion は、出力トークンの logprobs のみをサポートします。これにより、出力トークンごとに上位 1 つの logprob が返されます。
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())
レスポンスの例 (切り捨て):
{
"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
-
OpenAIChatCompletion は、プロンプトトークンと出力トークンの両方の logprobs をサポートしています。top_logprobs=N と を設定できます。prompt_logprobs=Nここで、N は各位置の N 個の最も可能性の高いトークンのログ確率を表す整数です。
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())
レスポンスの例 (切り捨て):
{
"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
}
}