Skip to content

Azure AI

概念

Azure AI は、Microsoft が Azure クラウドプラットフォーム上で提供する AI サービス群です。モデル推論、検索、ドキュメント解析、音声、画像などの能力をカバーします。エンタープライズアプリケーションにおいて最もよく使われる入口は Azure OpenAI Service です。Azure のマネージド環境で GPT や Embedding などのモデルを呼び出し、Azure AI Search と組み合わせて RAG アプリケーションを構築できます。

💡 Azure OpenAI の API は OpenAI 公式インターフェースと高い互換性があります。openai SDK や LangChain ベースの既存コードは、通常 endpoint と認証情報を差し替えるだけで移行できます。

コアサービス

サービス役割典型的な用途
Azure OpenAI ServiceGPT、Embedding、DALL·E などのモデルをホスト対話、テキスト生成、ベクトル化
Azure AI Search全文 + ベクトルハイブリッド検索RAG ナレッジベース検索
Azure AI Foundry統合開発ポータル(旧 Azure AI Studio)モデルデプロイ、Prompt デバッグ、Agent オーケストレーション
Azure Document Intelligenceドキュメント構造化解析(OCR、表)契約書、請求書、PDF の取り込み
Azure Speech / Vision音声・画像能力音声文字起こし、画像分析

クイックスタート

1. リソースの作成

Azure Portal で以下を実行します。

  1. Azure OpenAI リソースを作成する
  2. リソース内で Deploy models を実行し、必要なモデルをデプロイする(例:gpt-4otext-embedding-3-small
  3. EndpointAPI KeyDeployment Name(デプロイ名。モデル名ではない)を記録する

2. 依存関係のインストール

bash
pip install openai
# LangChain を使う場合
pip install langchain-openai

3. Chat Completions の呼び出し

Azure OpenAI は api-version パラメータを使用します。endpoint の形式は https://{resource}.openai.azure.com/ です。

python
from openai import AzureOpenAI

client = AzureOpenAI(
    azure_endpoint="https://your-resource.openai.azure.com/",
    api_key="your-api-key",
    api_version="2024-02-15-preview",
)

response = client.chat.completions.create(
    model="gpt-4o",  # ここにはデプロイ名(Deployment Name)を指定
    messages=[
        {"role": "system", "content": "あなたは役に立つアシスタントです"},
        {"role": "user", "content": "RAG を一文で説明してください"},
    ],
)

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

4. Embeddings の呼び出し

python
embedding = client.embeddings.create(
    model="text-embedding-3-small",  # デプロイ名
    input="Azure OpenAI はベクトル検索をサポートします",
)

vector = embedding.data[0].embedding
print(len(vector))  # 次元数はモデルによって異なる

LangChain との統合

LangChain は AzureChatOpenAIAzureOpenAIEmbeddings で Azure OpenAI をラップします。使い方は Langchain の LCEL チェーンと同じです。

python
from langchain_openai import AzureChatOpenAI, AzureOpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = AzureChatOpenAI(
    azure_endpoint="https://your-resource.openai.azure.com/",
    api_key="your-api-key",
    api_version="2024-02-15-preview",
    azure_deployment="gpt-4o",
    temperature=0.7,
)

embeddings = AzureOpenAIEmbeddings(
    azure_endpoint="https://your-resource.openai.azure.com/",
    api_key="your-api-key",
    api_version="2024-02-15-preview",
    azure_deployment="text-embedding-3-small",
)

prompt = ChatPromptTemplate.from_messages([
    ("system", "{language}で回答してください"),
    ("user", "{question}"),
])

chain = prompt | llm | StrOutputParser()
print(chain.invoke({"language": "日本語", "question": "Azure AI の利点は何ですか?"}))

Azure 上で RAG を構築する際の一般的なアーキテクチャは次のとおりです。

ドキュメント → Document Intelligence 解析 → Embedding → Azure AI Search インデックス
ユーザー質問 → Embedding → Search 検索 → コンテキスト + 質問 → Azure OpenAI 生成

Azure AI Search はベクトル検索キーワード検索ハイブリッド検索をサポートし、RAG の本番向け検索レイヤーとして適しています。インデックス作成とデータ取り込みは Portal、REST API、または azure-search-documents SDK で行えます。

bash
pip install azure-search-documents

認証方式

方式説明適用シーン
API Keyリクエストヘッダーに api-key を付与ローカル開発、クイック検証
Microsoft Entra IDAzure AD ベースの OAuth トークン本番環境、きめ細かい権限制御

本番環境では Entra ID(Managed Identity)の使用を推奨します。コードや設定に Key をハードコードしないでください。

OpenAI 公式 API との差異

  • Endpoint が異なる:Azure リソース専用の endpoint を使用する必要があり、api.openai.com は使えない
  • デプロイ名:リクエストの model パラメータにはDeployment Name を指定し、公開モデル名ではない
  • API Versionapi-version(例:2024-02-15-preview)を明示的に指定する必要がある
  • リージョンとクォータ:モデルの利用可否、TPM(Tokens Per Minute)はリージョンとリソース SKU によって異なる

関連ドキュメント

  • AIGC — 大規模モデルの基礎概念と OpenAI パラメータ
  • RAG — 検索拡張生成のフロー
  • Langchain — LCEL と Runnable チェーン呼び出し

Released under the MIT License.