Azure OpenAI Serviceを用いたLLM導入のはじめ方

はじめに

近年、ChatGPTやGPT-4に代表される大規模言語モデル(LLM:Large Language Models)が、企業内での業務効率化や新規サービス開発に幅広く利用され始めています。これらのモデルは、自然言語での高度な質問応答、文章生成、要約、翻訳などを実現し、情報処理ワークフローを劇的に変革するポテンシャルを持っています。

Microsoft Azureでは、Azure OpenAI Serviceを通じてOpenAIの最先端モデル(GPT-3.5、GPT-4、Embeddingsモデルなど)をクラウド環境で利用可能にしています。本記事では、「これから自社でLLMを試してみたい」「PoC段階でAzure OpenAIを触り始めたい」というエンジニアやPoC推進担当者向けに、Azure OpenAI Serviceの基本的な導入手順と初歩的な利用方法をわかりやすく解説します。

本記事のゴール

  • Azure OpenAI Serviceとは何か理解する
  • Azure環境でOpenAIリソースを作成する手順を把握
  • Python SDKを用いて簡単なサンプルコードでLLMへ問い合わせる流れを体験

ここで紹介するステップを踏めば、社内でのPoCに着手したり、アプリケーションにLLMを組み込むための基礎を習得できます。

Azure OpenAI Serviceとは

Azure OpenAI Serviceは、Microsoftが提供するクラウド上のAIモデル実行環境で、OpenAIの大規模言語モデル(GPT-3.5、GPT-4、GPT-4oなど)に安全かつスケーラブルにアクセスできます。主な特徴は以下の通りです。

  • セキュアな企業利用:Azureの厳格なセキュリティ・コンプライアンス基準のもとでモデルを利用可能
  • スケーラビリティ:Azure上で自動スケーリングや負荷分散が可能。
  • エンタープライズ連携:Azure Cognitive ServicesやAzure Machine Learningとの統合、各種ストレージ・データサービスとの連携が容易。
  • 最新モデルアクセス:GPT-4や埋め込みモデルなど、OpenAI最新技術の迅速な利用が可能。

要するに、Azure OpenAI Serviceは「エンタープライズグレードのセキュアなLLM利用環境」を提供するプラットフォームです。

前提条件と準備

本記事を進めるにあたり、以下が必要となります。

  1. Azureアカウント
    • Azureポータル(https://portal.azure.com/)にアクセスし、Azureアカウントを作成してください。
    • 無料試用期間や既存の企業アカウントをお持ちであればそちらでも可。
  2. 適切なサブスクリプションとアクセス権限
    • ビジネス用途なら、Azure商用環境での利用をおすすめします。
  3. ローカル開発環境(任意)
    • Python 3.8以上
    • pipやvenvなどのPython仮想環境ツール
    • エディタ(VS Code等)

AzureポータルでのAzure OpenAIリソース作成手順

ここでは、Azureポータルを用いてAzure OpenAI Serviceリソースを作成するプロセスを説明します。

Step 1: Azureポータルへログイン

Step 2: リソースの作成

  1. ポータル左上の「リソースの作成」ボタンをクリック。
  2. 検索バーに「Azure OpenAI」と入力し、「Azure OpenAI」を選択。
  3. 「作成」ボタンを押して、リソース作成画面へ進みます。

Step 3: 基本設定

リソース作成画面で以下を設定します。

  • サブスクリプション:利用するAzureサブスクリプションを選択。
  • リソースグループ:新規作成または既存のリソースグループを選択。
  • リージョン:利用可能なリージョンから選択(例:East USなど)。
  • 名前:わかりやすい名前(例:my-openai-service)。
  • 価格レベル:Standard S0

入力後、「確認および作成」→「作成」をクリックするとデプロイが開始されます。デプロイが完了するまで数分待ちます。

Step 4: モデル展開(Deployment)

Azure OpenAIリソースが作成されたら、対象のリソース画面へ移動します。そこで、次の手順を行います。

  1. 「Go To Azure AI Foundry Portal」をクリック
  2. 左メニューの「Deployments」へ移動
  3. 「Deploy Model」ボタンを押し、「Deploy base model」をクリック。
  4. 選択肢の中から展開したいモデルを選択(GPT-4oなど)
  5. デプロイ名(例:gpt-4o-deployment)を付与し、Deployment Typeを選び「Deploy」

これで、指定モデルへのエンドポイントが生成され、API経由で利用可能になります。

Python SDKを用いた簡易コード例

ここではPython SDKを使って、Azure OpenAI Serviceのデプロイモデルへ問い合わせる簡易例を示します。

事前準備

上記Deployした後各Deploymentをクリックし、以下の情報を取得します。

これらを環境変数 AZURE_OPENAI_ENDPOINTAZURE_OPENAI_API_KEY に設定しておきます。

export AZURE_OPENAI_ENDPOINT="https://my-openai-service.openai.azure.com/"
export AZURE_OPENAI_API_KEY="xxxxxxxxxxxxxxxxxxxx"

Pythonパッケージのインストール

pip install openai

※ Azure OpenAIサービスへのアクセスは openai パッケージを利用しますが、 from openai import AzureOpenAI という形でAzure専用のクライアントを呼び出せる環境を整えます(2024-02-01 APIバージョン時点の例)。詳細はAzure OpenAIドキュメントを参照してください。特に、OpenAIライブラリは1.x系でインターフェースが大幅に変更されているので注意して下さい

コード例

import os
from openai import AzureOpenAI

# 環境変数からエンドポイントとAPIキーを取得
endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")      # 例: https://my-openai-service.openai.azure.com/
api_key = os.getenv("AZURE_OPENAI_API_KEY")

# Azure OpenAI クライアントの初期化
client = AzureOpenAI(
    azure_endpoint=endpoint,
    api_key=api_key,
    api_version="2024-02-01"
)

# デプロイ時に設定した独自のデプロイ名を指定します。
# たとえば "gpt-3.5-turbo"モデルを利用してデプロイした場合、
# 「my-gpt35-deployment」のような固有の名称をデプロイ時に付与し、それをここで指定します。
deployment_name = "my-gpt35-deployment"

response = client.chat.completions.create(
    model=deployment_name,  # modelパラメータには展開済みデプロイ名を指定
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "日本の首都は?"}
)

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

コード解説

  • AzureOpenAI クライアントを初期化し、model パラメータにデプロイ名を設定します。
  • 「gpt-3.5-turbo」や「gpt-4」を直接model名として指定するとエラーが出ることがあります。必ずAzureで設定した独自のデプロイ名を使用してください。
  • messages 配列で対話履歴を渡すことで、モデルはコンテキストを保持した回答が可能です。

このコードを実行すると、Azure OpenAI Service上のLLMがユーザー質問に対する回答を生成します。

ベストプラクティスと注意点

  1. コスト管理
    LLMはトークン数に応じて料金が発生します。PoCではCost Management機能を活用して費用を監視してください。
  2. セキュリティ・APIキー管理
    APIキーは環境変数やAzure Key Vaultで安全に管理することを推奨します。コードへの直書きは避けましょう。
  3. ガバナンス・コンプライアンス対応
    機密情報や個人情報を取り扱う場合、社内規定や法規制に従い、ログ管理やプロンプト検証を行ってください。社内規定によっては海外へのデータ送信・処理・保存が禁じられており、Deployment Typeに注意が必要なケースがあります。
  4. モデル選定・チューニング
    PoC開始時はGPT-4oを使ってそのタスクがLLMで実現可能かを確認し、上手くできることが分かった後にコスト削減や推論高速化を目的としてGPT-4o-miniへの移行を検討するなど段階的なアプローチが有効です。
  5. 今後の拡張
    本記事は初歩的な利用例に留まります。LangChain、Vector Database、MLOpsフレームワークなどと組み合わせて、より高度なLLMアプリケーションの構築が可能です。

次のステップ

  • LangChainやVector DBとの統合:ドメイン特化データを活用しRAGを実現することで、より精度の高い回答を得る。
  • MLOpsパイプライン化:CI/CDツールやAzure Prompt Flowと連携してモデル更新とデプロイを自動化。
  • ベンダー比較・最適化:GCP Vertex AIやAWS Bedrockとも比較し、自社要件に最適なエコシステムを構築。

まとめ

本記事では、Azure OpenAI Serviceを利用してLLM導入を始めるための基本ステップを紹介しました。

  • Azureポータルでのリソース・モデルデプロイ方法
  • Python SDKを用いた問い合わせコード例
  • コスト、セキュリティ、ガバナンスなどPoC段階での留意点

これらを踏まえ、初期PoCから本番環境化に向けて、Azure OpenAI Serviceを活用したLLM活用をぜひ検討してみてください。