次の方法で共有


Azure OpenAI の格納済み入力候補および蒸留 (プレビュー)

保存された入力候補を利用すると、チャット入力候補セッションから会話履歴をキャプチャして、評価微調整のためのデータセットとして使用できます。

格納済み入力候補のサポート

API のサポート

2024-10-01-previewで最初に追加されたサポートは、最新の機能にアクセスするために2025-02-01-preview以降を使用します。

デプロイの種類

保存された完了は、すべての Azure OpenAI デプロイの種類 (標準、グローバル、データゾーン、プロビジョニング) でサポートされます。

モデルと利用可能なリージョン

推論に Chat Completions API を使用している限り、保存された結果を活用できます。 これは、すべての Azure OpenAI モデルと、サポートされているすべてのリージョン (グローバルのみのリージョンを含む) でサポートされます。

格納済み入力候補を構成する

Azure OpenAI デプロイで保存された完了を有効にするには、store パラメーターを True に設定します。 保存された入力候補データセットを追加情報でエンリッチするには、metadata パラメーターを使用します。

import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

completion = client.chat.completions.create(
    
    model="gpt-4o", # replace with model deployment name
    store= True,
    metadata =  {
    "user": "admin",
    "category": "docs-test",
  },
    messages=[
    {"role": "system", "content": "Provide a clear and concise summary of the technical content, highlighting key concepts and their relationships. Focus on the main ideas and practical implications."},
    {"role": "user", "content": "Ensemble methods combine multiple machine learning models to create a more robust and accurate predictor. Common techniques include bagging (training models on random subsets of data), boosting (sequentially training models to correct previous errors), and stacking (using a meta-model to combine base model predictions). Random Forests, a popular bagging method, create multiple decision trees using random feature subsets. Gradient Boosting builds trees sequentially, with each tree focusing on correcting the errors of previous trees. These methods often achieve better performance than single models by reducing overfitting and variance while capturing different aspects of the data."}
    ]   
)

print(completion.choices[0].message)


保存された入力候補が Azure OpenAI デプロイに対して有効になると、Azure AI Foundry ポータル[保存された入力候補] ウィンドウに表示されるようになります。

格納済み入力候補ユーザー エクスペリエンスのスクリーンショット。

蒸留

蒸留を使用すると、保存された入力候補を微調整データセットに変えることができます。 特定のタスクのために、より大きくて強力なモデルで保存された生成結果を使用し、その後、モデル対話の高品質な例を用いてその保存された生成結果で小さいモデルをトレーニングすることが一般的なユースケースです。

蒸留には少なくとも 10 個の保存された入力候補が必要ですが、最適な結果を得るには、数百から数千の保存された入力候補を提供することをお勧めします。

  1. Azure AI Foundry ポータル[保存された入力候補] ウィンドウで、[フィルター] オプションを使用して、モデルのトレーニングに使用する入力候補を選択します。

  2. 蒸留を開始するには、[Distill]\(蒸留\) を選択します

    [蒸留] が強調表示された、保存された入力候補ユーザー エクスペリエンスのスクリーンショット。

  3. 保存された完了データセットで微調整したいモデルを選択してください。

    保存された補完蒸留モデル選択のスクリーンショット。

  4. 微調整するモデルのバージョンを確認します。

    保存された補完蒸留バージョンのスクリーンショット。

  5. 保存された完了結果からトレーニングデータセットとして、ランダムに生成された名前を持つ .jsonl ファイルが作成されます。 ファイル >[次へ] を選択します。

    保存されたコンプリートディスティレーショントレーニングファイルに直接アクセスすることはできず、外部にエクスポートしたりダウンロードすることもできません。

    保存された補完トレーニングデータセットのjsonlファイルのスクリーンショット。

残りの手順は、一般的な Azure OpenAI の微調整手順に対応しています。 詳細については、微調整のファースト ステップ ガイドを参照してください。

評価

大規模な言語モデルの評価は、さまざまなタスクとディメンションのパフォーマンスを測定する上で重要なステップです。 これは、トレーニングによるパフォーマンスの向上 (または損失) を評価することが重要な微調整されたモデルでは特に重要です。 徹底的な評価は、さまざまなバージョンのモデルがアプリケーションまたはシナリオに与える影響を理解するのに役立ちます。

保存された完了項目は、評価を実行するためのデータセットとして使用できます。

  1. Azure AI Foundry ポータル[保存された入力候補] ウィンドウで、[フィルター] オプションを使用して、評価データ・セットに含める入力候補を選択します。

  2. 評価を構成するには、[評価] を選択します。

    [Evaluate] が選択されている保存された完了ウィンドウのスクリーンショット。

  3. これにより、[評価]ウィンドウが表示されます。ランダムに生成された名前の事前にデータが入力された.jsonlファイルが、あなたが保存した完了データから評価用データセットとして生成されます。

    保存された補完評価データファイルに直接アクセスすることはできず、外部へのエクスポートやダウンロードもできません。

    評価ウィンドウのスクリーンショット。

評価の詳細については、評価の概要に関するページを参照してください。

格納済み入力候補 API

保存されている入力候補 API コマンドにアクセスするには、OpenAI ライブラリのバージョンをアップグレードする必要がある場合があります。

pip install --upgrade openai

格納済み入力候補を一覧表示する

その他のパラメーター:

  • metadata: 保存されている完了のキーと値のペアでフィルター処理します
  • after: 前回のページネーション要求から最後に保存された完了メッセージの識別子。
  • limit: 取得する格納済み完了メッセージの数。
  • order: インデックスによる結果の順序 (昇順または降順)。
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.list()

print(response.model_dump_json(indent=2))

格納済み入力候補を取得する

ID で保存された完了データを取得します。

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.retrieve("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u")

print(response.model_dump_json(indent=2))

保存されたチャット完了メッセージを取得する

その他のパラメーター:

  • after: 前回のページネーション要求から最後に保存された完了メッセージの識別子。
  • limit: 取得する格納済み完了メッセージの数。
  • order: インデックスによる結果の順序 (昇順または降順)。
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.messages.list("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u", limit=2)

print(response.model_dump_json(indent=2))

保存されているチャットの完了を更新する

メタデータ キーと値のペアを既存の格納済み完了に追加します。

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.update(
    "chatcmpl-C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w",
    metadata={"fizz": "buzz"}
)

print(response.model_dump_json(indent=2))

保存されているチャットの完了を削除する

格納済み入力候補を入力候補 ID で削除します。

マイクロソフト エントラ ID

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2025-02-01-preview"
)

response = client.chat.completions.delete("chatcmpl-A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u")

print(response.model_dump_json(indent=2))

トラブルシューティング

保存された入力候補を使用するには、特別なアクセス許可が必要ですか?

保存された入力候補へのアクセスは、次の 2 つの DataActions によって制御されます。

  • Microsoft.CognitiveServices/accounts/OpenAI/stored-completions/read
  • Microsoft.CognitiveServices/accounts/OpenAI/stored-completions/action

既定では、Cognitive Services OpenAI Contributor はこれらの両方のアクセス許可にアクセスできます。

保存された入力候補のアクセス許可のスクリーンショット。

保存されたデータを削除するにはどうすればよいですか?

関連付けられている Azure OpenAI リソースを削除することで、データを削除できます。 保存されている入力候補データのみを削除したい場合は、お客様サポートでケースを開く必要があります。

どのくらいの量の完成データを保存できますか?

最大 10 GB のデータを保存できます。

保存された入力候補がサブスクリプションで有効にならないようにすることができますか?

保存された入力候補をサブスクリプション レベルで無効にするには、カスタマーサポートでケースを開く必要があります。

TypeError: Completions.create() got an unexpected argument 'store' (TypeError: Completions.create() で予期しない引数 'store' を取得しました)

このエラーが発生するのは、保存された入力候補機能がリリースされる前の古いバージョンの OpenAI クライアント ライブラリを実行している場合です。 pip install openai --upgrade を実行します。