Azure AI
概念
Azure AI は、Microsoft が Azure クラウドプラットフォーム上で提供する AI サービス群です。モデル推論、検索、ドキュメント解析、音声、画像などの能力をカバーします。エンタープライズアプリケーションにおいて最もよく使われる入口は Azure OpenAI Service です。Azure のマネージド環境で GPT や Embedding などのモデルを呼び出し、Azure AI Search と組み合わせて RAG アプリケーションを構築できます。
💡 Azure OpenAI の API は OpenAI 公式インターフェースと高い互換性があります。
openaiSDK や LangChain ベースの既存コードは、通常 endpoint と認証情報を差し替えるだけで移行できます。
コアサービス
| サービス | 役割 | 典型的な用途 |
|---|---|---|
| Azure OpenAI Service | GPT、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 で以下を実行します。
- Azure OpenAI リソースを作成する
- リソース内で Deploy models を実行し、必要なモデルをデプロイする(例:
gpt-4o、text-embedding-3-small) - Endpoint、API Key、Deployment Name(デプロイ名。モデル名ではない)を記録する
2. 依存関係のインストール
pip install openai
# LangChain を使う場合
pip install langchain-openai3. Chat Completions の呼び出し
Azure OpenAI は api-version パラメータを使用します。endpoint の形式は https://{resource}.openai.azure.com/ です。
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 の呼び出し
embedding = client.embeddings.create(
model="text-embedding-3-small", # デプロイ名
input="Azure OpenAI はベクトル検索をサポートします",
)
vector = embedding.data[0].embedding
print(len(vector)) # 次元数はモデルによって異なるLangChain との統合
LangChain は AzureChatOpenAI と AzureOpenAIEmbeddings で Azure OpenAI をラップします。使い方は Langchain の LCEL チェーンと同じです。
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 の利点は何ですか?"}))RAG シーン:Azure AI Search
Azure 上で RAG を構築する際の一般的なアーキテクチャは次のとおりです。
ドキュメント → Document Intelligence 解析 → Embedding → Azure AI Search インデックス
ユーザー質問 → Embedding → Search 検索 → コンテキスト + 質問 → Azure OpenAI 生成Azure AI Search はベクトル検索、キーワード検索、ハイブリッド検索をサポートし、RAG の本番向け検索レイヤーとして適しています。インデックス作成とデータ取り込みは Portal、REST API、または azure-search-documents SDK で行えます。
pip install azure-search-documents認証方式
| 方式 | 説明 | 適用シーン |
|---|---|---|
| API Key | リクエストヘッダーに api-key を付与 | ローカル開発、クイック検証 |
| Microsoft Entra ID | Azure AD ベースの OAuth トークン | 本番環境、きめ細かい権限制御 |
本番環境では Entra ID(Managed Identity)の使用を推奨します。コードや設定に Key をハードコードしないでください。
OpenAI 公式 API との差異
- Endpoint が異なる:Azure リソース専用の endpoint を使用する必要があり、
api.openai.comは使えない - デプロイ名:リクエストの
modelパラメータにはDeployment Name を指定し、公開モデル名ではない - API Version:
api-version(例:2024-02-15-preview)を明示的に指定する必要がある - リージョンとクォータ:モデルの利用可否、TPM(Tokens Per Minute)はリージョンとリソース SKU によって異なる
