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

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

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

Amazon Bedrock モデルでOpenAI Create chat completion API を使用してモデル推論を実行できます。

以下の方法で Create chat completion API を呼び出すことができます。

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

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

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

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

Create chat completion API は、Amazon Bedrock とこれらのモデルをサポートする AWS リージョンでサポートされているすべての OpenAI モデルで使用できます。サポートされているモデルとリージョンの詳細については、「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 リージョンに対応するエンドポイントを見つけます。AWS SDK を使用する場合、クライアントの設定時にはエンドポイント全体ではなく、リージョンコードのみを指定する必要がある場合があります。

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

HTTP request

チャット完了を作成する

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

注記

Amazon Bedrock では現在、他のOpenAI Chat completion API オペレーションがサポートされていません。

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

OpenAI SDK (Python)

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

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

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

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

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

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

次の例では、us-west-2 で Create chat completion API を呼び出します。$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

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

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

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

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

次の例では、us-west-2 で curl を使用して Create chat completion API を呼び出します。$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 フィールドを含めることができます。

    • tagSuffix (オプション) – 入力タグ付けにこのフィールドを含めます。

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

OpenAI chat completion を使用したガードレールの使用例を確認するには、任意の方法のタブを選択し、そのステップに従ってください。

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);