🦁

Azure上のGPT-4oを使用する方法

2024/05/22に公開

GPT-4oとは

  • GPT-4o(“o” for “omni)はOpenAI社のフラッグシップモデルです。
  • テキスト、画像、音声(今後対応)、さまざまなデータ形式を処理できるように設計されています。
  • 詳細はOpenAI社のブログをご参照ください。
  • GPT-4oによる画像解析にいくつか試したサンプルがあります。

Azure上でGPT-4oの利用方法

前提条件

  • Azureアカウントを持っていること
  • Azure OpenAI Serviceのサブスクリプションを持っていること
  • 現在 Azure OpenAI Service をご利用でない場合は、こちらのフォームに記入してアクセスを申請してください。

Azure PortalでAzure OpenAI Serviceのデプロイ

  • Azure Portalにログインし、Azure OpenAI Serviceを検索をして作成をクリックします。
  • Azure OpenAI のリソースをデプロイします。必要な情報を入力し、「次へ」をクリックし他の設定はデフォルトのままデプロイをします。
    • GPT-4oが使用できるリージョンである必要があります。
      • 現状サポートされているリージョンはeastus, eastus2, northcentralus, southcentralus, westus, westus3です。
      • 最新情報はこちらから確認してください。
    • 名前は一意の名前にしてください。重複する場合はエラーが表示されます。

  • デプロイが完了すると以下のような画面が表示されます。リソースに移動してください。
  • Azure OpenAI Studioに移動するを選択すると、別途OpenAI studioが起動します。こちらでモデルのデプロイ・変更などを行います。

Azure OpenAI Studioでモデルのデプロイ

  • モデルからgpt-4oを選択し、デプロイをクリックします。

  • 適切なモデルが選択されていることを確認し、デプロイの種類を選択します。「標準」と「グローバル標準」があります

  • 他のシステムと低レイテンシでのやり取りが必要ない場合や社内のポリシー上問題が無ければグローバル標準の方がクォータが高いので良いと思います。gpt-4o レートリミット

  • グローバル標準:トラフィックがグローバルに分散され、高スループットを実現します

Tier Quota Limit in tokens per minute (TPM) Requests per minute
Enterprise agreement 10 M 60 K
Default 450 K 2.7 K
  • 標準:指定したリージョンで処理されます。
Tier Quota Limit in tokens per minute (TPM) Requests per minute
Enterprise agreement 1 M 6 K
Default 150 K 900

プレイグラウンドの操作

  • チャット画面でデプロイしたモデルを使用できます。

  • Document Intelligenceで使用されているサンプル画像を使用します。

  • 画像などを入力すると、従来よりも早く返答が返ってきます。正面図、断面図なども割と正確に読み取っています。

  • プレイグラウンドで「コードを表示」を押すと、サンプルが表示されます。

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

# 環境変数から必要なエンドポイントとデプロイメント名を取得
endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]  # Azure OpenAIのエンドポイントURL
deployment = os.environ["CHAT_COMPLETIONS_DEPLOYMENT_NAME"]  # チャットコンプリーションのデプロイメント名
search_endpoint = os.environ["SEARCH_ENDPOINT"]  # Azure SearchのエンドポイントURL
search_index = os.environ["SEARCH_INDEX"]  # Azure Searchのインデックス名

# デフォルトのAzureクレデンシャルを使用してトークンプロバイダを取得
# ここでは、システムに設定されているAzureの認証情報を使用してトークンを取得します
token_provider = get_bearer_token_provider(
    DefaultAzureCredential(),  # デフォルトの認証情報プロバイダ
    "https://cognitiveservices.azure.com/.default"  # トークンを取得するためのスコープ
)

# AzureOpenAIクライアントを初期化
# クライアントは、エンドポイント、トークンプロバイダ、およびAPIバージョンを使用して設定されます
client = AzureOpenAI(
    azure_endpoint=endpoint,  # 取得したAzure OpenAIのエンドポイント
    azure_ad_token_provider=token_provider,  # 取得したトークンプロバイダ
    api_version="2024-02-01",  # 使用するAPIバージョン
)

# チャットコンプリーションを作成
# クライアントのchat.completions.createメソッドを使用して、チャットのコンプリーションリクエストを送信します
completion = client.chat.completions.create(
    model=deployment,  # 使用するチャットモデルのデプロイメント名
    messages=[
        {
            "role": "user",  # ユーザーのメッセージを指定
            "content": "Who is DRI?",  # ユーザーが質問する内容
        },
        {
            "role": "assistant",  # アシスタントのメッセージを指定
            "content": "DRI stands for Directly Responsible Individual of a service. Which service are you asking about?"  # アシスタントの回答内容
        },
        {
            "role": "user",  # ユーザーの次のメッセージを指定
            "content": "Opinion mining service"  # ユーザーが質問する特定のサービス
        }
    ],
    extra_body={  # 追加のリクエストボディを指定
        "data_sources": [  # 使用するデータソースを指定
            {
                "type": "azure_search",  # Azure Searchをデータソースとして指定
                "parameters": {
                    "endpoint": search_endpoint,  # Azure SearchのエンドポイントURL
                    "index_name": search_index,  # Azure Searchのインデックス名
                    "authentication": {
                        "type": "system_assigned_managed_identity"  # システム割り当てのマネージドIDを使用して認証
                    }
                }
            }
        ]
    }
)

# コンプリション結果をJSON形式で表示
# 結果の内容をJSON形式に変換して出力します
print(completion.to_json())


まとめ

  • Azure上でGPT-4oを利用する方法を紹介しました
  • プレイグラウンドですぐに使用できますので、是非お試しください

Discussion