

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

# OpenAI互換 APIs
<a name="fine-tuning-openai-apis"></a>

Amazon Bedrock は、基盤モデルを微調整するためのOpenAI互換性のある API エンドポイントを提供します。これらのエンドポイントを使用すると、使い慣れた OpenAI SDK とツールを使用して、Amazon Bedrock モデルでファインチューニングジョブを作成、モニタリング、管理できます。 SDKs このページではAPIs を使用して強化ファインチューニングを行う方法について説明します。

## 主な機能
<a name="fine-tuning-openai-key-capabilities"></a>
+ **トレーニングファイルのアップロード** – Files API を使用して、ファインチューニングジョブのトレーニングデータをアップロードおよび管理します。
+ **ファインチューニングジョブの作成** – カスタムトレーニングデータと報酬関数を使用してファインチューニングジョブを開始します。
+ **ジョブを一覧表示して取得**する – すべてのファインチューニングジョブを表示し、特定のジョブに関する詳細情報を取得します。
+ **ジョブイベントのモニタリング** – 詳細なイベントログを使用してファインチューニングの進行状況を追跡する
+ **アクセスチェックポイント** – トレーニング中に作成された中間モデルチェックポイントを取得する
+ **即時推論** – ファインチューニングが完了したら、Amazon Bedrock の OpenAI 互換 APIs (Responses/chat completions API) を使用して、追加のデプロイ手順なしで、生成されたファインチューニングされたモデルを使用してオンデマンド推論を行います。
+ **簡単な移行** – 既存の OpenAI SDK コードベースと互換性があります

## オープンウェイトモデルの微調整ワークフローの強化
<a name="fine-tuning-openai-workflow"></a>

微調整する前に、Amazon Bedrock には微調整プロセスを作成および管理するための特定のアクセス許可が必要なため、前提条件があることを確認してください。セキュリティとアクセス許可の包括的な情報については、「」を参照してください[オープンウェイトモデルのアクセスとセキュリティ](rft-open-weight-access-security.md)。

オープンウェイトモデルの補強ファインチューニングを 5 つのステップで実行します。

1. **トレーニングデータセットのアップロード** – Files API を使用して、目的「ファインチューニング」をトレーニングデータセットとして、必要な形式 (JSONL など) でプロンプトをアップロードします。詳細については、「[オープンウェイトモデルのデータを準備する](rft-prepare-data-open-weight.md)」を参照してください。

1. **報酬関数の設定** – Lambda 関数を使用して、正確性、構造、トーン、またはその他の目標に基づいてモデルレスポンスをスコアリングするグレーダーを定義します。詳細については、「[オープンウェイトモデルの報酬関数の設定](reward-functions-open-weight.md)」を参照してください。

1. **ファインチューニングジョブの作成** – ベースモデル、データセット、報酬関数、ハイパーパラメータなどのその他のオプション設定を指定して、 OpenAI互換 API を使用して強化ファインチューニングジョブを起動します。詳細については、「[ファインチューニングジョブを作成する](fine-tuning-openai-job-create.md#fine-tuning-openai-create-job)」を参照してください。

1. **トレーニングの進行状況のモニタリング** – ファインチューニングジョブ APIs。詳細については、「[ファインチューニングイベントを一覧表示する](fine-tuning-openai-job-create.md#fine-tuning-openai-list-events)」を参照してください。中間モデルチェックポイントにアクセスして、さまざまなトレーニング段階でパフォーマンスを評価します。「」を参照してください[ファインチューニングチェックポイントを一覧表示する](fine-tuning-openai-job-create.md#fine-tuning-openai-list-checkpoints)。

1. **推論の実行** – Amazon Bedrock の OpenAI互換の Responses API または Chat Completions APIs を使用して、ファインチューニングされたモデル ID を直接推論に使用します。詳細については、「[微調整されたモデルで推論を実行する](fine-tuning-openai-job-create.md#fine-tuning-openai-inference)」を参照してください。

## サポートされているリージョンとエンドポイント
<a name="fine-tuning-openai-supported-regions"></a>

次の表は、OpenAI互換性のあるファインチューニング APIs をサポートする基盤モデルとリージョンを示しています。


**OpenAI 互換性のあるファインチューニング APIs でサポートされているモデルとリージョン**  

| プロバイダー | モデル | モデル ID | リージョン名 | リージョン | Endpoint | 
| --- | --- | --- | --- | --- | --- | 
| OpenAI | Gpt-oss-20B | openai.gpt-oss-20b | 米国西部 (オレゴン) | us-west-2 | bedrock-mantle.us-west-2.api.aws | 
| Qwen | Qwen3 32B | qwen.qwen3-32b | 米国西部 (オレゴン) | us-west-2 | bedrock-mantle.us-west-2.api.aws | 

# オープンウェイトモデルのアクセスとセキュリティ
<a name="rft-open-weight-access-security"></a>

強化ファインチューニング (RFT) を開始する前に、Amazon Bedrock が RFT 固有のオペレーションに必要なアクセスの種類を理解していることを確認してください。RFT には、報酬関数の実行機能のため、標準のファインチューニングを超える追加のアクセス許可が必要です。

## 前提条件
<a name="fine-tuning-openai-prereq"></a>

Amazon Bedrock の OpenAI互換ファインチューニング APIs を使用する前に、以下があることを確認してください。

1. Amazon Bedrock にアクセスするための適切なアクセス許可を持つ AWS アカウント

1. **認証** – 以下を使用して認証できます。
   + Amazon Bedrock API キー (OpenAISDK に必要で、HTTP リクエストで使用可能)
   + AWS 認証情報 (HTTP リクエストでサポート)
**注記**  
Amazon Bedrock の短期/長期 API キーを使用している場合は、ロールが `AmazonBedrockMantleFullAccess`および [AWSLambdaRole](https://docs.aws.amazon.com/bedrock/latest/ug/rft-open-weight-access-security#openai-fine-tuning-lambda-permissions) の IAM ポリシーアクセス許可にアクセスできることを確認してください。

1. **OpenAI SDK (オプション)** – SDK OpenAI ベースのリクエストを使用している場合は、Python SDK をインストールします。

1. **環境変数** – 次の環境変数を設定します。
   + `OPENAI_API_KEY` – Amazon Bedrock API キーに設定する
   + `OPENAI_BASE_URL` – リージョンの Amazon Bedrock エンドポイントに設定します (例: `https://bedrock-mantle.us-west-2.api.aws/v1`)

   詳細については、「[レスポンス API](bedrock-mantle.md#bedrock-mantle-responses)」を参照してください。

1. 目的の JSONL ファイルとしてフォーマットされた**トレーニングデータ**`fine-tune`。詳細については、「[オープンウェイトモデルのデータを準備する](rft-prepare-data-open-weight.md)」を参照してください。

## 報酬関数の Lambda アクセス許可
<a name="openai-fine-tuning-lambda-permissions"></a>

Lambda 呼び出しアクセス許可を追加する必要があります。使用できるポリシーの例を次に示します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:reward-function-name"
            ]
        }
    ]
}
```

Amazon Bedrock がホストするモデルを報酬関数を設定するための審査員として使用することもできます。Lambda 実行ロールに基盤モデルを呼び出すには、特定のアクセス許可を追加する必要があります。Lambda ロールでは、LLMs のこれらの管理ポリシーをグレーディング用に設定できます。「[AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockLimitedAccess.html)」を参照してください。

以下は、Invoke API を使用して Amazon Bedrock 基盤モデルを審査者として呼び出す例です。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:*:*:foundation-model/*"
            ]
        }
    ]
}
```

# オープンウェイトモデルのデータを準備する
<a name="rft-prepare-data-open-weight"></a>

OpenAI 互換 APIs を使用して強化ファインチューニングを使用してオープンウェイトモデルをファインチューニングする場合は、目的 を使用して独自のプロンプトを JSONL 形式で取得してトレーニングデータを提供します`fine-tune`。

## トレーニングデータの形式と要件
<a name="rft-data-format-open-weight"></a>

トレーニングデータは、100-20K000 の例を含む OpenAI チャット完了形式に従う必要があります。各トレーニングの例は次のとおりです。
+ `messages`: このフィールドには、モデルに提供される入力プロンプトを含むユーザー、システム、またはアシスタントロールを含めます。
+ `reference_answer`: このフィールドには、報酬関数がモデルのレスポンスをスコアリングするために使用する期待される出力または評価基準が含まれている必要があります。これは構造化された出力に限定されず、報酬関数が品質を評価するのに役立つ任意の形式を含めることができます。
+ [オプション] グレーディングにグレーダー Lambda が使用するフィールドを追加できます。

**要件:**
+ OpenAI チャット完了形式のプロンプトを含む JSONL 形式 (1 行あたり 1 つのプロンプト)
+ 目的は に設定する必要があります `fine-tune`
+ トレーニングデータセットに最低 100 レコード
+ Amazon Bedrock はトレーニングデータセットの形式を自動的に検証します

------
#### [ Example: General question-answering ]

```
{
            "messages": [
                {
                    "role": "system", 
                    "content": "You are a helpful assistant"
                },
                {
                    role": "user", 
                    "content": "What is machine learning?"}
            ],
            "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed."
            }
```

------
#### [ Example: Math problem ]

```
{
  "id": "sample-001",
  "messages": [
    {
      "role": "system",
      "content": "You are a math tutor"
    },
    {
      "role": "user",
      "content": "Solve: 2x + 5 = 13"
    }
  ],
  "reference_answer": {
    "solution": "x = 4",
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]
  }
}
```

------

## ファイル API
<a name="fine-tuning-openai-files-api"></a>

OpenAI 互換ファイル API を使用して、ファインチューニングジョブのトレーニングデータをアップロードできます。ファイルは Amazon Bedrock に安全に保存され、ファインチューニングジョブを作成するときに使用されます。API の詳細については、[OpenAIファイルドキュメント](https://platform.openai.com/docs/api-reference/files)を参照してください。

### トレーニングファイルをアップロードする
<a name="fine-tuning-openai-upload-file"></a>

トレーニングファイルをアップロードするには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Upload training file
with open(TRAINING_FILE_PATH, 'rb') as f:
    file_response = client.files.create(
        file=f,
        purpose='fine-tune'
    )

# Store file ID for next steps
training_file_id = file_response.id
print(f"✅ Training file uploaded successfully: {training_file_id}")
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/files`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="fine-tune" \
  -F file="@training_data.jsonl"
```

------

### ファイルの詳細を取得する
<a name="fine-tuning-openai-retrieve-file"></a>

特定のファイルの詳細を取得するには、任意の方法のタブを選択し、手順に従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Retrieve file details
file_details = client.files.retrieve(training_file_id)

# Print raw response
print(json.dumps(file_details.model_dump(), indent=2))
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/files/{file_id}`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

### ファイルのリスト
<a name="fine-tuning-openai-list-files"></a>

アップロードされたファイルを一覧表示するには、任意の方法のタブを選択し、手順に従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List files
files_response = client.files.list(purpose='fine-tune')

# Print raw response
print(json.dumps(files_response.model_dump(), indent=2))
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/files`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files?purpose=fine-tune \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

### ファイルを削除する
<a name="fine-tuning-openai-delete-file"></a>

ファイルを削除するには、任意の方法のタブを選択し、手順に従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Delete file
delete_response = client.files.delete(training_file_id)
```

------
#### [ HTTP request ]

に DELETE リクエストを行います`/v1/files/{file_id}`。

```
curl -X DELETE https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## 効果的なトレーニングデータの特徴
<a name="rft-data-characteristics-open-weight"></a>

効果的な RFT トレーニングデータには、次の 3 つの主要な特性が必要です。
+ **明確性と一貫性** – 明確であいまいなプロンプトを一貫したフォーマットで使用します。トレーニングを誤解する矛盾するラベル、あいまいな指示、または矛盾する参照回答は避けてください。
+ **多様性** – さまざまな入力形式、エッジケース、およびさまざまなユーザータイプやシナリオにわたる本番稼働用の使用パターンを反映する難易度レベルが含まれます。
+ **効率的な報酬関数 – **すばやく (分ではなく秒単位) 実行し、 と並列化し AWS Lambda、一貫したスコアを返す関数を設計して、費用対効果の高いトレーニングを実現します。

## その他のプロパティ
<a name="rft-additional-properties-open-weight"></a>

RFT データ形式は、コアスキーマ要件 (`messages` および ) を超えるカスタムフィールドをサポートします`reference_answer`。この柔軟性により、報酬関数が適切な評価に必要な追加データを追加できます。

**注記**  
レシピでこれを設定する必要はありません。データ形式は、本質的に追加のフィールドをサポートします。トレーニングデータ JSON に含めるだけで、 `metadata`フィールドの報酬関数に渡されます。

**一般的な追加プロパティ**
+ `task_id` – 追跡用の一意の識別子
+ `difficulty_level` – 問題の複雑さインジケータ
+ `domain` – サブジェクトエリアまたはカテゴリ
+ `expected_reasoning_steps` – ソリューションのステップ数

これらの追加フィールドは評価中に報酬関数に渡されるため、特定のユースケースに合わせた高度なスコアリングロジックが可能になります。

**追加プロパティの例**

------
#### [ Chemistry problem ]

```
{
  "id": "chem-001",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful chemistry assistant"
    },
    {
      "role": "user",
      "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C"
    }
  ],
  "reference_answer": {
    "donor_bond_counts": 2,
    "acceptor_bond_counts": 4
  }
}
```

`reference_answer` フィールドには、報酬関数がモデルのレスポンスをスコアリングするために使用する期待される出力または評価基準が含まれます。構造化された出力に限定されず、報酬関数が品質を評価するのに役立つ任意の形式を含めることができます。

------
#### [ Math problem with metadata ]

```
{
  "messages": [
    {
      "role": "system",
      "content": "You are a math tutor"
    },
    {
      "role": "user",
      "content": "Solve: 2x + 5 = 13"
    }
  ],
  "reference_answer": {
    "solution": "x = 4",
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]
  },
  "task_id": "algebra_001",
  "difficulty_level": "easy",
  "domain": "algebra",
  "expected_reasoning_steps": 3
}
```

------

# オープンウェイトモデルの報酬関数の設定
<a name="reward-functions-open-weight"></a>

報酬関数は、応答品質を評価し、モデルトレーニングのフィードバックシグナルを提供します。カスタム Lambda 関数を使用して報酬関数を設定できます。タスク要件に一致するアプローチを選択します。

## 報酬評価用のカスタム Lambda 関数
<a name="rft-custom-lambda-functions"></a>

カスタム Lambda 関数を使用して報酬関数を設定できます。Lambda 関数内では、評価ロジックの実装方法に柔軟性があります。
+ **目標タスク** – コード生成や数学の推論などの目標タスクでは、既知の標準やテストケースに照らして正確性をチェックする検証可能なルールベースのグレーダーを使用します。
+ **主観的なタスク** – 指示に従うタスクやチャットボットとのやり取りなどの主観的なタスクについては、Lambda 関数内の審査者として Amazon Bedrock 基盤モデルを呼び出して、基準に基づいてレスポンスの品質を評価します。

Lambda 関数は、複雑なロジックを実装したり、外部 APIs、複数ステップの計算を実行したり、タスクの要件に応じて複数の評価基準を組み合わせることができます。

**注記**  
カスタム Lambda 関数を使用する場合:  
複雑な評価では、Lambda タイムアウトをデフォルトの 3 秒から最大 15 分に増やします。
Lambda 実行ロールには、「」で説明されているように Lambda 関数を呼び出すためのアクセス許可が必要です[報酬関数の Lambda アクセス許可](rft-open-weight-access-security.md#openai-fine-tuning-lambda-permissions)。

## Lambda 関数の実装の詳細
<a name="rft-lambda-implementation-open-weight"></a>

カスタム Lambda 報酬関数を実装する場合、関数は次の形式でデータを受け入れて返す必要があります。

------
#### [ Input structure ]

```
[{
  "id": "123",
  "messages": [
    {
      "role": "user",
      "content": "Do you have a dedicated security team?"
    },
    {
      "role": "assistant",
      "content": "As an AI developed by Amazon, I don not have a dedicated security team..."
    }
  ],
  "metadata": {
    "reference_answer": {
      "compliant": "No",
      "explanation": "As an AI developed by Company, I do not have a traditional security team..."
    },
    "my_key": "sample-001"
  }
}]
```

------
#### [ Output structure ]

```
[{
  "id": "123",
  "aggregate_reward_score": 0.85,
  "metrics_list": [
    {
      "name": "accuracy",
      "value": 0.9,
      "type": "Reward"
    },
    {
      "name": "policy_compliance",
      "value": 0.8,
      "type": "Metric"
    }
  ]
}]
```

------

**設計ガイドライン**
+ **回答をランク**付けする – 最も良い回答に明らかに高いスコアを付けます
+ **一貫したチェックを使用する** – タスクの完了、形式の遵守、安全性、妥当な長さを評価する
+ **安定したスケーリングを維持する** – スコアを正規化し、爆発させない

# OpenAI APIs を使用したオープンウェイトモデルのファインチューニングジョブの作成と管理
<a name="fine-tuning-openai-job-create"></a>

OpenAI 互換のファインチューニングジョブ APIs を使用すると、ファインチューニングジョブを作成、モニタリング、管理できます。このページではAPIs を使用して強化ファインチューニングを行う方法について説明します。API の詳細については、[OpenAIファインチューニングドキュメント](https://platform.openai.com/docs/api-reference/fine-tuning)を参照してください。

## ファインチューニングジョブを作成する
<a name="fine-tuning-openai-create-job"></a>

特定のデータセットから新しいモデルを作成するプロセスを開始するファインチューニングジョブを作成します。API の詳細については、[OpenAI「ファインチューニングジョブの作成」のドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/create)を参照してください。

### 例
<a name="fine-tuning-openai-create-job-examples"></a>

RFT メソッドを使用してファインチューニングジョブを作成するには、任意のメソッドのタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Create fine-tuning job with RFT method
job_response = client.fine_tuning.jobs.create(
    model=MODEL_ID,
    training_file=training_file_id,
    # Suffix field is not supported so commenting for now.
    # suffix="rft-example",  # Optional: suffix for fine-tuned model name
    extra_body={
        "method": {
            "type": "reinforcement", 
            "reinforcement": {
                "grader": {
                    "type": "lambda",
                    "lambda": {
                        "function": "arn:aws:lambda:us-west-2:123456789012:function:my-reward-function"  # Replace with your Lambda ARN
                    }
                },
                "hyperparameters": {
                    "n_epochs": 1,  # Number of training epochs
                    "batch_size": 4,  # Batch size
                    "learning_rate_multiplier": 1.0  # Learning rate multiplier
                }
            }
        }
    }
)

# Store job ID for next steps
job_id = job_response.id
print({job_id})
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/fine_tuning/jobs`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-abc123",
    "model": "gpt-4o-mini",
    "method": {
      "type": "reinforcement",
      "reinforcement": {
        "grader": {
          "type": "lambda",
          "lambda": {
            "function": "arn:aws:lambda:us-west-2:123456789012:function:my-grader"
          }
        },
        "hyperparameters": {
          "n_epochs": 1,
          "batch_size": 4,
          "learning_rate_multiplier": 1.0
        }
      }
    }
  }'
```

------

## ファインチューニングイベントを一覧表示する
<a name="fine-tuning-openai-list-events"></a>

ファインチューニングジョブのイベントを一覧表示します。ファインチューニングイベントは、トレーニングメトリクス、チェックポイントの作成、エラーメッセージなど、ジョブの進行状況に関する詳細情報を提供します。API の詳細については、[OpenAI「ファインチューニングイベントのリスト」のドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/list_events)を参照してください。

### 例
<a name="fine-tuning-openai-list-events-examples"></a>

ファインチューニングイベントを一覧表示するには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List fine-tuning events
events = client.fine_tuning.jobs.list_events(
    fine_tuning_job_id="ftjob-abc123",
    limit=50
)

for event in events.data:
    print(f"[{event.created_at}] {event.level}: {event.message}")
    if event.data:
        print(f"  Metrics: {event.data}")
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/fine_tuning/jobs/{fine_tuning_job_id}/events`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=50
```

------

イベントには、次のような情報が含まれます。
+ トレーニングの開始メッセージと完了メッセージ
+ チェックポイント作成通知
+ 各ステップでのトレーニングメトリクス (損失、精度)
+ ジョブが失敗した場合のエラーメッセージ

すべてのイベントをページ分割するには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Paginate through all events
all_events = []
after = None

while True:
    events = client.fine_tuning.jobs.list_events(
        fine_tuning_job_id="ftjob-abc123",
        limit=100,
        after=after
    )
    
    all_events.extend(events.data)
    
    if not events.has_more:
        break
    
    after = events.data[-1].id
```

------
#### [ HTTP request ]

`after` パラメータを使用して複数の GET リクエストを実行します。

```
# First request
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=100

# Subsequent requests with 'after' parameter
curl "https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=100&after=ft-event-abc123"
```

------

## ファインチューニングジョブを取得する
<a name="fine-tuning-openai-retrieve-job"></a>

ファインチューニングジョブに関する詳細情報を取得します。API の詳細については、[OpenAI「ファインチューニングジョブの取得」ドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/retrieve)を参照してください。

### 例
<a name="fine-tuning-openai-retrieve-job-examples"></a>

特定のジョブの詳細を取得するには、任意の方法のタブを選択し、手順に従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Retrieve specific job details
job_details = client.fine_tuning.jobs.retrieve(job_id)

# Print raw response
print(json.dumps(job_details.model_dump(), indent=2))
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/fine_tuning/jobs/{fine_tuning_job_id}`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## ファインチューニングジョブを一覧表示する
<a name="fine-tuning-openai-list-jobs"></a>

ページ分割サポートによる組織のファインチューニングジョブを一覧表示します。API の詳細については、[OpenAI「ファインチューニングジョブのリスト」のドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/list)を参照してください。

### 例
<a name="fine-tuning-openai-list-jobs-examples"></a>

制限とページ分割を含むファインチューニングジョブを一覧表示するには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List fine-tuning jobs with limit and pagination
response = client.fine_tuning.jobs.list(
    limit=20  # Maximum number of jobs to return
)

# Print raw response
print(json.dumps(response.model_dump(), indent=2))
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/fine_tuning/jobs`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs?limit=20 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## ファインチューニングジョブをキャンセルする
<a name="fine-tuning-openai-cancel-job"></a>

進行中のファインチューニングジョブをキャンセルします。キャンセルすると、ジョブを再開することはできません。API の詳細については、[OpenAI「ファインチューニングジョブのキャンセル」ドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/cancel)を参照してください。

### 例
<a name="fine-tuning-openai-cancel-job-examples"></a>

ファインチューニングジョブをキャンセルするには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Cancel fine-tuning job
cancel_response = client.fine_tuning.jobs.cancel("ftjob-abc123")

print(f"Job ID: {cancel_response.id}")
print(f"Status: {cancel_response.status}")  # Should be "cancelled"
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel`。

```
curl -X POST https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/cancel \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## ファインチューニングチェックポイントを一覧表示する
<a name="fine-tuning-openai-list-checkpoints"></a>

ファインチューニングジョブのチェックポイントを一覧表示します。チェックポイントは、微調整中に作成された中間モデルスナップショットで、さまざまなトレーニング段階でパフォーマンスを評価するために推論に使用できます。詳細については、[OpenAI「ファインチューニングチェックポイントのリスト」ドキュメント](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/subresources/checkpoints/methods/list)を参照してください。

### 例
<a name="fine-tuning-openai-list-checkpoints-examples"></a>

ファインチューニングジョブのチェックポイントを一覧表示するには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List checkpoints for a fine-tuning job
checkpoints = client.fine_tuning.jobs.checkpoints.list(
    fine_tuning_job_id="ftjob-abc123",
    limit=10
)

for checkpoint in checkpoints.data:
    print(f"Checkpoint ID: {checkpoint.id}")
    print(f"Step: {checkpoint.step_number}")
    print(f"Model: {checkpoint.fine_tuned_model_checkpoint}")
    print(f"Metrics: {checkpoint.metrics}")
    print("---")
```

------
#### [ HTTP request ]

に GET リクエストを行います`/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/checkpoints?limit=10
```

------

各チェックポイントには以下が含まれます。
+ **チェックポイント ID – **チェックポイントの一意の識別子
+ **ステップ番号** – チェックポイントが作成されたトレーニングステップ
+ **モデルチェックポイント** – 推論に使用できるモデル識別子
+ **メトリクス** – このチェックポイントでの検証の損失と精度

推論にチェックポイントモデルを使用するには、任意の方法のタブを選択し、ステップに従います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Test inference with a checkpoint
response = client.chat.completions.create(
    model=checkpoint.fine_tuned_model_checkpoint,
    messages=[{"role": "user", "content": "What is AI?"}],
    max_tokens=100
)

print(response.choices[0].message.content)
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/chat/completions`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom:7p4lURel:ckpt-step-1000",
    "messages": [{"role": "user", "content": "What is AI?"}],
    "max_tokens": 100
  }'
```

------

## 微調整されたモデルで推論を実行する
<a name="fine-tuning-openai-inference"></a>

ファインチューニングジョブが完了したら、 Responses API または Chat Completions API を使用して、ファインチューニングされたモデルを推論に使用できます。API の詳細については、「」を参照してください[OpenAI APIsを使用してレスポンスを生成する](bedrock-mantle.md)。

### レスポンス API
<a name="fine-tuning-openai-responses-api"></a>

Responses API を使用して、ファインチューニングされたモデルでシングルターンテキスト生成を行います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Get the fine-tuned model ID
job_details = client.fine_tuning.jobs.retrieve("ftjob-abc123")

if job_details.status == 'succeeded' and job_details.fine_tuned_model:
    fine_tuned_model = job_details.fine_tuned_model
    print(f"Using fine-tuned model: {fine_tuned_model}")
    
    # Run inference with Responses API
    response = client.completions.create(
        model=fine_tuned_model,
        prompt="What is the capital of France?",
        max_tokens=100,
        temperature=0.7
    )
    
    print(f"Response: {response.choices[0].text}")
else:
    print(f"Job status: {job_details.status}")
    print("Job must be in 'succeeded' status to run inference")
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/completions`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom-model:7p4lURel",
    "prompt": "What is the capital of France?",
    "max_tokens": 100,
    "temperature": 0.7
  }'
```

------

### チャット完了 API
<a name="fine-tuning-openai-inference-examples"></a>

チャット完了 API を使用して、微調整されたモデルとの会話型インタラクションを行います。

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

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Get the fine-tuned model ID
job_details = client.fine_tuning.jobs.retrieve("ftjob-abc123")

if job_details.status == 'succeeded' and job_details.fine_tuned_model:
    fine_tuned_model = job_details.fine_tuned_model
    print(f"Using fine-tuned model: {fine_tuned_model}")
    
    # Run inference
    inference_response = client.chat.completions.create(
        model=fine_tuned_model,
        messages=[
            {"role": "user", "content": "What is the capital of France?"}
        ],
        max_tokens=100
    )
    
    print(f"Response: {inference_response.choices[0].message.content}")
else:
    print(f"Job status: {job_details.status}")
    print("Job must be in 'succeeded' status to run inference")
```

------
#### [ HTTP request ]

に POST リクエストを行います`/v1/chat/completions`。

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom-model:7p4lURel",
    "messages": [
      {"role": "user", "content": "What is the capital of France?"}
    ],
    "max_tokens": 100
  }'
```

------