インポートされたモデルの高度な API 機能 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インポートされたモデルの高度な API 機能

このページでは、2025 年 11 月 11 日以降にインポートされたモデルで使用できる高度な機能の詳細な例を示します。これらの機能には、制御された生成のための構造化出力、マルチイメージ処理のための拡張ビジョンサポート、信頼インサイトのためのログ確率、GPT-OSSモデルのツール呼び出しが含まれます。

構造化出力

構造化出力は、特定の形式、スキーマ、またはパターンに従って制御された生成を可能にします。この機能は、モデルの応答が事前定義された制約に準拠していることを保証し、一貫したデータ形式、API 統合、または自動処理パイプラインを必要とするアプリケーションに最適です。

カスタムモデルインポートの構造化出力は、次の 2 つのパラメータでサポートされています。

  • response_format - json_objectおよび json_schemaタイプをサポート

  • structured_outputs - jsonregexchoice、および grammarタイプをサポート

注記

カスタムモデルインポートで構造化出力を使用する場合、生成中の制約検証によるパフォーマンスのトレードオフを想定する必要があります。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 になります。

イメージの要件:

  • Base64 エンコーディングが必要 - イメージ URLsによりリクエストが失敗する

  • リクエストあたり最大 3 つのイメージ

  • 高解像度イメージにより処理時間とメモリ使用量が大幅に増加

警告

高解像度イメージでは、処理時間、メモリ使用量が大幅に増加し、タイムアウトエラーが発生する可能性があります。複数の高解像度イメージは、パフォーマンスに指数関数的に影響します。最適なパフォーマンスを得るには、イメージのサイズを適切に変更し、可能な限り低い詳細レベルを使用します。

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