OpenAI Chat Completions API を使用してモデルを呼び出す - Amazon Bedrock

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

OpenAI Chat Completions API を使用してモデルを呼び出す

Amazon Bedrock モデルでOpenAIチャット完了の作成 API を使用してモデル推論を実行できます。

チャット完了の作成 API は、次の方法で呼び出すことができます。

  • Amazon Bedrock ランタイムエンドポイントを使用して HTTP リクエストを行います。

  • Amazon Bedrock ランタイムエンドポイントで OpenAI SDK リクエストを使用します。

詳細については、トピックを選択してください。

OpenAI Chat Completions API でサポートされているモデルとリージョン

Create chat completion API は、Amazon Bedrock およびこれらのOpenAIモデルをサポートする AWS リージョンでサポートされているすべてのモデルで使用できます。サポートされているモデルとリージョンの詳細については、「」を参照してくださいAmazon Bedrock でサポートされている基盤モデル

Chat Completions API を使用するための前提条件

Chat Completions API を使用するための前提条件を確認するには、任意の方法のタブを選択し、ステップに従います。

OpenAI SDK
  • 認証 – OpenAI SDK は Amazon Bedrock API キーを使用した認証のみをサポートします。Amazon Bedrock API キーを生成してリクエストを認証します。Amazon Bedrock API キーとその生成方法については、「」を参照してくださいAmazon Bedrock API キーを生成して Amazon Bedrock API に簡単に認証する

  • エンドポイント – Amazon Bedrock ランタイムエンドポイントとクォータで使用する AWS リージョンに対応するエンドポイントを見つけます。 https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt AWS SDK を使用する場合は、クライアントの設定時にエンドポイント全体ではなく、リージョンコードを指定するだけで済みます。

  • モデルアクセス – この機能をサポートする Amazon Bedrock モデルへのアクセスをリクエストします。詳細については、「Add or remove access to Amazon Bedrock foundation models」を参照してください。

  • OpenAI SDK のインストール – 詳細については、 OpenAIドキュメントの「ライブラリ」を参照してください。

HTTP request

チャット完了を作成する

Create chat completion API の詳細については、 OpenAIドキュメントの以下のリソースを参照してください。

注記

Amazon Bedrock は現在、他のOpenAIチャット完了 API オペレーションをサポートしていません。

Create chat completion API OpenAI の使用方法を確認するには、任意の方法のタブを選択し、ステップに従います。

OpenAI SDK (Python)

OpenAI SDK でチャット完了を作成するには、次の手順を実行します。

  1. OpenAI SDK をインポートし、次のフィールドを使用してクライアントを設定します。

    • base_url – 次の形式のように/openai/v1、Amazon Bedrock ランタイムエンドポイントのプレフィックスを に設定します。

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key – Amazon Bedrock API キーを指定します。

    • default_headers – ヘッダーを含める必要がある場合は、キーと値のペアとしてこのオブジェクトに含めることができます。または、特定の API コールを行うextra_headersときに でヘッダーを指定することもできます。

  2. クライアントで chat.completions.create()メソッドを使用し、リクエスト本文messagesで少なくとも modelと を指定します。

次の例では、 でチャット完了の作成 API を呼び出しますus-west-2$AWS_BEARER_TOKEN_BEDROCK を実際の API キーに置き換えます。

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) completion = client.chat.completions.create( model="openai.gpt-oss-20b-1:0", messages=[ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] ) print(completion.choices[0].message)
HTTP request

直接 HTTTP リクエストを使用してチャット完了を作成するには、次の手順を実行します。

  1. 次の形式で、Amazon Bedrock ランタイムエンドポイントのプレフィックスを に設定して /openai/v1/chat/completionsURL を指定します。

    https://${bedrock-runtime-endpoint}/openai/v1/chat/completions
  2. Authorization ヘッダーで AWS 認証情報または Amazon Bedrock API キーを指定します。

  3. リクエスト本文で、リクエスト本文messagesに少なくとも modelと を指定します。

次の例では、curl を使用して でチャット完了の作成 API を呼び出しますus-west-2$AWS_BEARER_TOKEN_BEDROCK を実際の API キーに置き換えます。

curl -X POST https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \ -d '{ "model": "openai.gpt-oss-20b-1:0", "messages": [ { "role": "developer", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }'

チャットの完了にガードレールを含める

モデルの入力とレスポンスに保護を含めるには、次の追加のパラメータをリクエスト本文のフィールドとして含めて、モデル呼び出しを実行するときにガードレールを適用します。

  • extra_headers – リクエストに追加のヘッダーを指定する次のフィールドを含むオブジェクトにマッピングします。

    • X-Amzn-Bedrock-GuardrailIdentifier (必須) – ガードレールの ID。

    • X-Amzn-Bedrock-GuardrailVersion (必須) – ガードレールのバージョン。

    • X-Amzn-Bedrock-Trace (オプション) – ガードレールトレースを有効にするかどうか。

  • extra_body – オブジェクトにマッピングします。そのオブジェクトには、次のamazon-bedrock-guardrailConfigフィールドを含むオブジェクトにマッピングされる フィールドを含めることができます。

Amazon Bedrock ガードレールのこれらのパラメータの詳細については、「」を参照してくださいガードレールをテストする

OpenAI チャットの完了時にガードレールを使用する例を確認するには、任意の方法のタブを選択し、ステップに従います。

OpenAI SDK (Python)
import openai from openai import OpenAIError # Endpoint for Amazon Bedrock Runtime bedrock_endpoint = "https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" # Model ID model_id = "openai.gpt-oss-20b-1:0" # Replace with actual values bedrock_api_key = "$AWS_BEARER_TOKEN_BEDROCK" guardrail_id = "GR12345" guardrail_version = "DRAFT" client = openai.OpenAI( api_key=bedrock_api_key, base_url=bedrock_endpoint, ) try: response = client.chat.completions.create( model=model_id, # Specify guardrail information in the header extra_headers={ "X-Amzn-Bedrock-GuardrailIdentifier": guardrail_id, "X-Amzn-Bedrock-GuardrailVersion": guardrail_version, "X-Amzn-Bedrock-Trace": "ENABLED", }, # Additional guardrail information can be specified in the body extra_body={ "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz" # Used for input tagging } }, messages=[ { "role": "system", "content": "You are a helpful assistant." }, { "role": "assistant", "content": "Hello! How can I help you today?" }, { "role": "user", "content": "What is the weather like today?" } ] ) request_id = response._request_id print(f"Request ID: {request_id}") print(response) except OpenAIError as e: print(f"An error occurred: {e}") if hasattr(e, 'response') and e.response is not None: request_id = e.response.headers.get("x-request-id") print(f"Request ID: {request_id}")
OpenAI SDK (Java)
import com.openai.client.OpenAIClient; import com.openai.client.okhttp.OpenAIOkHttpClient; import com.openai.core.http.HttpResponseFor; import com.openai.models.chat.completions.ChatCompletion; import com.openai.models.chat.completions.ChatCompletionCreateParams; // Endpoint for Amazon Bedrock Runtime String bedrockEndpoint = "http://bedrock-runtime.us-west-2.amazonaws.com/openai/v1" // Model ID String modelId = "openai.gpt-oss-20b-1:0" // Replace with actual values String bedrockApiKey = "$AWS_BEARER_TOKEN_BEDROCK" String guardrailId = "GR12345" String guardrailVersion = "DRAFT" OpenAIClient client = OpenAIOkHttpClient.builder() .apiKey(bedrockApiKey) .baseUrl(bedrockEndpoint) .build() ChatCompletionCreateParams request = ChatCompletionCreateParams.builder() .addUserMessage("What is the temperature in Seattle?") .model(modelId) // Specify additional headers for the guardrail .putAdditionalHeader("X-Amzn-Bedrock-GuardrailIdentifier", guardrailId) .putAdditionalHeader("X-Amzn-Bedrock-GuardrailVersion", guardrailVersion) // Specify additional body parameters for the guardrail .putAdditionalBodyProperty( "amazon-bedrock-guardrailConfig", JsonValue.from(Map.of("tagSuffix", JsonValue.of("xyz"))) // Allows input tagging ) .build(); HttpResponseFor<ChatCompletion> rawChatCompletionResponse = client.chat().completions().withRawResponse().create(request); final ChatCompletion chatCompletion = rawChatCompletionResponse.parse(); System.out.println(chatCompletion);