

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

# OpenAI モデル
<a name="model-parameters-openai"></a>

OpenAI には、次のオープンウェイトモデルが用意されています。
+ [https://huggingface.co/openai/gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) – 低レイテンシーとローカルまたは特殊なユースケース向けに最適化された小さなモデル。
+ [https://huggingface.co/openai/gpt-oss-120b](https://huggingface.co/openai/gpt-oss-120b) – 本番環境および汎用または高度な推論のユースケース向けに最適化された大規模なモデル。

次のテーブルは、モデルに関する情報を要約したものです。


| 情報 | gpt-oss-20b | gpt-oss-120b | 
| --- | --- | --- | 
| リリース日 | 2025 年 8 月 5 日 | 2025 年 8 月 5 日 | 
| モデル ID | openai.gpt-oss-20b-1:0 | openai.gpt-oss-120b-1:0 | 
| 製品 ID | 該当なし | 該当なし | 
| サポートされている入力モダリティ | テキスト | テキスト | 
| サポートされている出力モダリティ | テキスト | テキスト | 
| コンテキストウィンドウ | 128,000 | 128,000 | 

OpenAI モデルでは次の機能がサポートされています。
+ 次のオペレーションによる[モデル呼び出し](inference.md):
  + [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)
  + [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html)
  + [OpenAI Chat completions API](inference-chat-completions.md)
+ [CreateModelInvocationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelInvocationJob.html) による[バッチ推論](batch-inference.md)。
+ モデル呼び出しオペレーションでのヘッダーの使用を通じた[ガードレール](guardrails.md)の適用。

**Topics**
+ [OpenAI リクエスト本文](#model-parameters-openai-request)
+ [OpenAI レスポンス本文](#model-parameters-openai-response)
+ [OpenAI モデルの使用例](#model-parameters-openai-use)

## OpenAI リクエスト本文
<a name="model-parameters-openai-request"></a>

リクエスト本文のパラメータとその説明については、OpenAI ドキュメントの「[Create chat completion](https://platform.openai.com/docs/api-reference/chat/create)」を参照してください。

次の方法でリクエスト本文フィールドを使用します。
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) または OpenAI Chat Completions リクエストでは、リクエスト本文にフィールドを含めます。
+ [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) リクエストでは、次の操作を行います。
  + `messages` を次のようにマッピングします。
    + `developer` のロールを持つメッセージごとに、`system` 配列の [SystemContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_SystemContentBlock.html) に `content` を追加します。
    + `user` または `assistant` のロールを持つメッセージごとに、`content` フィールドの [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html) に `content` を追加し、`messages` 配列内の [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) の `role` フィールドで `role` を指定します。
  + 次のフィールドの値を `inferenceConfig` オブジェクトの対応するフィールドにマッピングします。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-parameters-openai.html)
  + `additionalModelRequestFields` オブジェクトに他のフィールドを含めます。

**リクエスト本文を作成する際の考慮事項**
+ OpenAI モデルは、テキスト入力とテキスト出力のみをサポートします。
+ `model` フィールドの値は、ヘッダーの値と一致する必要があります。このフィールドを省略すると、ヘッダーと同じ値が自動的に入力されます。
+ `stream` フィールドの値は、使用する API オペレーションと一致する必要があります。このフィールドを省略すると、正しい値が自動的に入力されます。
  + [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) を使用する場合、`stream` 値は `false` である必要があります。

## OpenAI レスポンス本文
<a name="model-parameters-openai-response"></a>

OpenAI モデルのレスポンス本文は、OpenAI によって返される chat completion オブジェクトに準拠しています。レスポンスフィールドの詳細については、OpenAI ドキュメントの「[chat completion オブジェクト](https://platform.openai.com/docs/api-reference/chat/object)」を参照してください。

**注記**  
`InvokeModel` を使用する場合、`<reasoning>` タグで囲まれたモデル推論は、レスポンスのテキストコンテンツの前にきます。

## OpenAI モデルの使用例
<a name="model-parameters-openai-use"></a>

このセクションでは、OpenAI モデルの使用方法の例をいくつか紹介します。

### 前提条件
<a name="model-parameters-openai-use-prereq"></a>

これらの例を試す前に、前提条件を満たしていることを確認してください。
+ **認証** – 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 キー」セクションを参照してください。
**注記**  
OpenAI Chat completions API を使用する場合は、Amazon Bedrock 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 と CLI を使用してモデルアクセスを管理する](model-access.md#model-access-modify)」を参照してください。
+ **(例で SDK を使用している場合) SDK **をインストールする – インストール後、デフォルトの認証情報とデフォルトの AWS リージョンを設定します。デフォルトの認証情報またはリージョンを設定しない場合は、関連するコード例で明示的に指定する必要があります。標準化された認証情報プロバイダーの詳細については、「[AWS SDK とツールの標準化された認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)」を参照してください。
**注記**  
OpenAI SDK を使用する場合は、Amazon Bedrock API キーでのみ認証でき、Amazon Bedrock エンドポイントを明示的に設定する必要があります。

確認したい例のセクションを展開してください。

### OpenAI Create chat completion
<a name="model-parameters-openai-use-chat-completions"></a>

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

------
#### [ OpenAI SDK (Python) ]

次の Python スクリプトは、OpenAI Python SDK を使用して Create chat completion 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 using curl ]

ターミナルで次のコマンドを実行すると、curl を使用して Create chat completion 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!"
        }
    ]
}'
```

------

### InvokeModel
<a name="model-parameters-openai-use-invoke"></a>

任意の方法のタブを選択し、その手順に従います。

------
#### [ Python ]

```
import boto3
import json

# Initialize the Bedrock Runtime client
client = boto3.client('bedrock-runtime')

# Model ID
model_id = 'openai.gpt-oss-20b-1:0'

# Create the request body
native_request = {
  "model": model_id, # You can omit this field
  "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?"
    }
  ],
  "max_completion_tokens": 150,
  "temperature": 0.7,
  "top_p": 0.9,
  "stream": False # You can omit this field
}

# Make the InvokeModel request
response = client.invoke_model(
    modelId=model_id,
    body=json.dumps(native_request)
)

# Parse and print the message for each choice in the chat completion
response_body = json.loads(response['body'].read().decode('utf-8'))

for choice in response_body['choices']:
    print(choice['message']['content'])
```

------

### Converse
<a name="model-parameters-openai-use-converse"></a>

統合 [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) API を使用する場合は、OpenAI Create chat completion フィールドを Converse リクエスト本文の対応するフィールドにマッピングする必要があります。

例えば、次の chat completion リクエスト本文と、対応する Converse リクエスト本文を比較します。

------
#### [ Create chat completion request body ]

```
{
  "model": "openai.gpt-oss-20b-1:0",
  "messages": [
    {
      "role": "developer",
      "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?"
    }
  ],
  "max_completion_tokens": 150,
  "temperature": 0.7
}
```

------
#### [ Converse request body ]

```
{
    "messages": [
        {
            "role": "user", 
            "content": [
                {
                    "text": "Hello! How can I help you today?"
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "text": "What is the weather like today?"
                }
            ]
        }
    ],
    "system": [
        {
            "text": "You are a helpful assistant."
        }
    ],
    "inferenceConfig": {
        "maxTokens": 150,
        "temperature": 0.7
    }
}
```

------

任意の方法のタブを選択し、その手順に従います。

------
#### [ Python ]

```
# Use the Conversation API to send a text message to Anthropic Claude.

import boto3
from botocore.exceptions import ClientError

# Initialize the Bedrock Runtime client
client = boto3.client("bedrock-runtime")

# Set the model ID
model_id = "openai.gpt-oss-20b-1:0"

# Set up messages and system message
messages = [
    {
        "role": "assistant", 
        "content": [
            {
                "text": "Hello! How can I help you today?"
            }
        ]
    },
    {
        "role": "user",
        "content": [
            {
                "text": "What is the weather like today?"
            }
        ]
    }
]

system = [
    {
        "text": "You are a helpful assistant."
    }
]

try:
    # Send the message to the model, using a basic inference configuration.
    response = client.converse(
        modelId=model_id,
        messages=messages,
        system=system,
        inferenceConfig={
            "maxTokens": 150, 
            "temperature": 0.7, 
            "topP": 0.9
        },
    )

    # Extract and print the response text.
    for content_block in response["output"]["message"]["content"]:
        print(content_block)

except (ClientError, Exception) as e:
    print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}")
    exit(1)
```

------

### InvokeModel を使用したガードレール
<a name="model-parameters-openai-use-guardrails-invoke"></a>

モデル呼び出しリクエストのヘッダーでガードレール ID、バージョン、ガードレールトレースを有効にするかどうかを指定して、モデル呼び出しを実行するときにガードレールを適用します。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Python ]

```
import boto3
from botocore.exceptions import ClientError
import json

# Initiate the Amazon Bedrock Runtime client
bedrock_runtime = boto3.client("bedrock-runtime")

# Model ID
model_id = "openai.gpt-oss-20b-1:0"

# Replace with actual values from your guardrail
guardrail_id = "GR12345"
guardrail_version = "DRAFT"

# Create the request body
native_request = {
  "model": model_id, # You can omit this field
  "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?"
    }
  ],
  "max_completion_tokens": 150,
  "temperature": 0.7,
  "top_p": 0.9,
  "stream": False # You can omit this field
}

try:
    response = bedrock_runtime.invoke_model(
        modelId=model_id,
        body=json.dumps(native_request),
        guardrailIdentifier=guardrail_id,
        guardrailVersion=guardrail_version,
        trace='ENABLED',
    )
    response_body = json.loads(response.get('body').read())
    print("Received response from InvokeModel API (Request Id: {})".format(response['ResponseMetadata']['RequestId']))
    print(json.dumps(response_body, indent=2))

except ClientError as err:
    print("RequestId = " + err.response['ResponseMetadata']['RequestId'])
    raise err
```

------

### OpenAI chat completion を使用したガードレール
<a name="model-parameters-openai-use-guardrails-chat-completions"></a>

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

------

### バッチ推論
<a name="model-parameters-openai-use-batch"></a>

[バッチ推論](batch-inference.md)を使用すると、複数のプロンプトを使用してモデル推論を非同期的に実行できます。OpenAI モデルでバッチ推論を実行するには、次を実行します。

1. JSONL ファイルを作成し、最低限必要な数の JSON オブジェクトを入力します。各オブジェクトは改行で区切ります。各 `modelInput` オブジェクトは、[OpenAI create chat completion](https://platform.openai.com/docs/api-reference/chat/create) リクエスト本文の形式に従う必要があります。OpenAI のリクエスト本文を含む JSONL ファイルの最初の 2 行の例を次に示します。

   ```
   {
       "recordId": "RECORD1", 
       "modelInput": {
           "messages": [
               {
                   "role": "system", 
                   "content": "You are a helpful assistant."
               }, 
               {
                   "role": "user", 
                   "content": "Can you generate a question with a factual answer?"
               }
           ], 
           "max_completion_tokens": 1000
       }
   }
   {
       "recordId": "RECORD2", 
       "modelInput": {
           "messages": [
               {
                   "role": "system", 
                   "content": "You are a helpful assistant."
               }, 
               {
                   "role": "user", 
                   "content": "What is the weather like today?"
               }
           ], 
           "max_completion_tokens": 1000
       }
   }
   ...
   ```
**注記**  
`model` フィールドは、省略された場合、ヘッダーに応じてバッチ推論サービスにより挿入されるため、オプションになります。  
「[バッチ推論データをフォーマットしてアップロードする](batch-inference-data.md)」で説明されているように、JSONL ファイルがバッチ推論クォータに準拠していることを確認してください。

1. Amazon S3 バケットにファイルをアップロードします。

1. 前のステップの S3 バケットを `inputDataConfig` フィールドに指定し、OpenAI モデルを `modelId` フィールドに指定して、[Amazon Bedrock コントロールプレーンエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-cp)で [CreateModelInvocationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelInvocationJob.html) リクエストを送信します。

エンドツーエンドのコードの例については、「[バッチ推論のコード例](batch-inference-example.md)」を参照してください。OpenAI モデルに適した設定に置き換えます。