【Azure AI Foundry:第1回】クラウド知能への接続:SDKのセットアップとAIProjectClient
【新連載:Azure AI Foundryとマルチエージェント】
※本連載は、前回の「AIエージェントの解剖学」で組み立てた自律知能を、Azureの強固なクラウドインフラへと移植し、実務で安全・強力に動作する「エンタープライズ仕様の自律チームエージェント」を構築するステップバイステップのハンズオン連載です。
1. イントロダクション(今回の到達目標)
これまでの連載では、ローカルPCの限られたリソースと擬似的なコードを用いて、エージェントを構成する基本的な「脳と神経パーツ(ReAct、MCP、Graph状態など)」の仕組みを解剖してきました。
しかし、これらのパーツを実業務で本番運用するためには、ローカルPCの閉じた世界から脱却し、強固なセキュリティ境界、安全なプログラムコード実行環境、そしてスケーラブルなデータベース検索インフラが必要です。これらを一挙に提供するのが、MicrosoftのエンタープライズAI基盤、「Azure AI Foundry」です。
新連載の第1回となる今回は、この強固なクラウド知能へとローカル開発環境から安全にアクセスするためのSDKのセットアップを行い、すべてのAzure AIサービスの司令塔となる中心的な接続オブジェクト、「AIProjectClient」を構築して、デプロイ済みのAIモデルとの間で最初の会話(疎通確認)を完結させることを目標とします。
2. 前提条件(Prerequisites)
本連載のコードを実際に手元で動かすためには、事前に以下の環境準備と権限設定が必要です。
① Azure上のリソース準備
- Azureサブスクリプション の所有、または共同作成者権限。
- Azure AI Foundry のハブ(Hub)およびプロジェクト(Project)の作成。
- プロジェクト内へのチャットモデル(例:
gpt-4oなど)のデプロイ(デプロイメント名はモデル名と一致させておくとスムーズです)。 - プロジェクトの「プロジェクト設定」ページから、「プロジェクトのエンドポイント」(
https://...から始まるURL)をコピーしておきます。
② ローカル環境の認証設定
本SDKは、安全な認証プロトコルである Microsoft Entra ID を用いたトークンベースの認証のみをサポートしています。
ローカル開発PCから接続する場合、事前に Azure CLI をインストールし、ターミナルで以下のコマンドを実行してAzureへログインしてください。
az login
③ Azureリソースへの適切なロール(権限)の割り当て
ローカルでログインしているあなたのAzureアカウントに対し、Azure portalの該当AIプロジェクトのリソース上で、最低限以下のロールが「アクセス制御(IAM)」タブから割り当てられていることを確認してください。
- Azure AI Developer(推奨)、またはそれに準ずるデータプレーンアクセス権限。
④ ライブラリのインストール
ターミナルで以下のコマンドを実行し、最新バージョンの SDK と認証用ライブラリをインストールします。
pip install "azure-ai-projects>=2.0.0" azure-identity
3. システム設計と認証フロー
本SDKにおける認証の最大の特徴は、「DefaultAzureCredential」を利用した資格情報の自動切り替えメカニズムです。
DefaultAzureCredential を使用してクライアントを初期化すると、コードがローカルで走っているときは自動的に az login された開発者トークンを検出し、Azure上の本番環境(App Service や Container Apps など)へデプロイされた後は、コードを1文字も書き換えることなく「マネージドID(Managed Identity)」を用いたパスワードレスな安全接続へとシームレスに切り替わります。APIキーをコード内に直接書き込む必要は一切ありません。
4. 【実践】プロジェクトへの接続とChatCompletionsの呼び出し
それでは、実際にAzure AI Foundryプロジェクトへ接続し、デプロイ済みの gpt-4o モデルと対話を行う Python スクリプトを実行してみましょう。
ローカル環境変数の AZURE_AI_PROJECT_ENDPOINT に、事前にコピーしたプロジェクトエンドポイントを設定してから実行します。
# Windows (PowerShell) の環境変数設定例
$env:AZURE_AI_PROJECT_ENDPOINT="https://your-project-endpoint.services.ai.azure.com"
# 動作確認済みライブラリバージョン: azure-ai-projects==2.0.0
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
def main():
# 1. 環境変数からエンドポイントの取得
endpoint = os.environ.get("AZURE_AI_PROJECT_ENDPOINT")
if not endpoint:
print("Error: 環境変数 AZURE_AI_PROJECT_ENDPOINT が設定されていません。")
return
print(f"⚡ システム: エンドポイント {endpoint} への接続を試みます...")
# 2. DefaultAzureCredential を介した安全な認証クライアントの初期化
credential = DefaultAzureCredential()
project_client = AIProjectClient(
endpoint=endpoint,
credential=credential
)
# 3. 認証済み OpenAI 互換クライアントの取得
# 最新のSDKでは、inferenceプロパティを経由せず、直接 get_openai_client() を呼び出します
openai_client = project_client.get_openai_client(
api_version="2024-10-21"
)
# 4. デプロイ済みのチャットモデルを呼び出して疎通確認
print("🤖 AIモデルに問い合わせを送信中...")
response = openai_client.chat.completions.create(
model="gpt-4o", # Azureポータル上でデプロイした「モデルのデプロイ名」を指定します
messages=[
{"role": "system", "content": "あなたは優秀なエンジニアリングアシスタントです。"},
{"role": "user", "content": "AIProjectClient を使用した接続テストに成功しました!一言感想を述べてください。"}
]
)
# 5. 応答の表示
answer = response.choices[0].message.content
print("\n--- AIからの返答 ---")
print(answer)
print("--------------------")
if __name__ == "__main__":
main()
このスクリプトを実行すると、ローカルPC内のAzure認証トークンを元に、クラウド上にある AI Foundry プロジェクトのエンドポイントへ安全に要求が届き、プロジェクトに紐付いた gpt-4o モデルから安全に応答が引き出される様子が確認できます。
5. まとめと次回の展望
これで、私たちのAIエージェント構築に必要な「クラウド上のセキュアなインフラの接続基盤」が完成しました。
これによって、APIキー流出のリスクがない、本番運用の水準に耐えうる接続が担保されました。
しかし、今の状態はまだ一問一答の「チャットボット」と変わりません。エージェントが自律して働くためには、これまでの会話や推論の文脈(コンテキスト)をずっと記憶し続ける仕組みが必要です。
次回、第2回。
会話の履歴や推論状態をAzureのクラウド側で自動的に永続化・管理する拡張ステート機能、「Threadによる会話履歴の自動永続化」を彼に装着します。
知能が「会話の流れ(記憶)」を維持して自律稼働するための、ステート管理の扉を開きましょう。