

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

# OpenAI Chat Completions API を使用してモデルを呼び出す
<a name="inference-chat-completions"></a>

Amazon Bedrock モデルで[OpenAI Create chat completion API](https://platform.openai.com/docs/api-reference/chat/create) を使用してモデル推論を実行できます。

以下の方法で Create chat completion API を呼び出すことができます。
+ Amazon Bedrock ランタイムエンドポイントを使用して HTTP リクエストを行う。
+ Amazon Bedrock ランタイムエンドポイントで OpenAI SDK リクエストを使用する。

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

**Topics**
+ [OpenAI Chat Completions API でサポートされているモデルとリージョン](#inference-chat-completions-supported)
+ [Chat Completions API を使用するための前提条件](#inference-chat-completions-prereq)
+ [チャット完了を作成する](#inference-chat-completions-create)
+ [チャット完了にガードレールを含める](#inference-chat-completions-guardrails)

## OpenAI Chat Completions API でサポートされているモデルとリージョン
<a name="inference-chat-completions-supported"></a>

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

## Chat Completions API を使用するための前提条件
<a name="inference-chat-completions-prereq"></a>

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

------
#### [ OpenAI SDK ]
+ **認証** – OpenAI SDK は Amazon Bedrock API キーを使用した認証のみをサポートします。Amazon Bedrock API キーを生成してリクエストを認証します。Amazon Bedrock API キーとその生成方法については、「ビルド」章の「API キー」セクションを参照してください。
+ **エンドポイント** – Amazon Bedrock ランタイムエンドポイントとクォータで使用する AWS リージョンに対応するエンドポイントを見つけます。 [https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt) AWS SDK を使用する場合は、クライアントの設定時にエンドポイント全体ではなく、リージョンコードを指定するだけで済みます。
+ **OpenAI SDK のインストール** – 詳細については、「OpenAI ドキュメント」の「[ライブラリ](https://platform.openai.com/docs/libraries)」を参照してください。

------
#### [ HTTP request ]
+ **認証** – AWS 認証情報または Amazon Bedrock API キーを使用して認証できます。

   AWS 認証情報を設定するか、Amazon Bedrock API キーを生成してリクエストを認証します。
  +  AWS 認証情報の設定については、[AWS 「セキュリティ認証情報を使用したプログラムによるアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html)」を参照してください。
  + Amazon Bedrock API キーとその生成方法については、「ビルド」章の「API キー」セクションを参照してください。
+ **エンドポイント** – Amazon Bedrock ランタイムエンドポイントとクォータで使用する AWS リージョンに対応するエンドポイントを見つけます。 [https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt) AWS SDK を使用する場合は、クライアントの設定時にエンドポイント全体ではなく、リージョンコードを指定するだけで済みます。

------

## チャット完了を作成する
<a name="inference-chat-completions-create"></a>

Create chat completion API の詳細については、OpenAI ドキュメントの以下のリソースを参照してください。
+ [リクエストボディパラメータ](https://platform.openai.com/docs/api-reference/chat/create)
+ [レスポンス本文パラメータ](https://platform.openai.com/docs/api-reference/chat/object)

**注記**  
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` でヘッダーを指定することもできます。

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

次の例では、`us-west-2` で Create chat completion API を呼び出します。*\$1AWS\$1BEARER\$1TOKEN\$1BEDROCK* を実際の 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
   ```

1. `Authorization` ヘッダーで AWS 認証情報または Amazon Bedrock API キーを指定します。

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

次の例では、`us-west-2` で curl を使用して Create chat completion API を呼び出します。*\$1AWS\$1BEARER\$1TOKEN\$1BEDROCK* を実際の 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!"
        }
    ]
}'
```

------

## チャット完了にガードレールを含める
<a name="inference-chat-completions-guardrails"></a>

モデルの入力とレスポンスに保護対策を追加するには、モデル呼び出しを実行するとき、次の[追加のパラメータ](https://github.com/openai/openai-python#undocumented-request-params)をリクエスト本文にフィールドとして含めることにより[ガードレール](guardrails.md)を適用します。
+ `extra_headers` – リクエストで追加のヘッダーを指定する次のフィールドを含むオブジェクトにマッピングします。
  + `X-Amzn-Bedrock-GuardrailIdentifier` (必須) – ガードレールの ID。
  + `X-Amzn-Bedrock-GuardrailVersion` (必須) – ガードレールのバージョン。
  + `X-Amzn-Bedrock-Trace` (オプション) – ガードレールトレースを有効にするかどうか。
+ `extra_body` – オブジェクトにマッピングします。そのオブジェクトには、次のフィールドを含むオブジェクトにマッピングされる `amazon-bedrock-guardrailConfig` フィールドを含めることができます。
  + `tagSuffix` (オプション) – [入力タグ付け](guardrails-tagging.md)にこのフィールドを含めます。

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

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

------