🦐

【Azure】PythonからAI Foundryで作成したモデルを呼び出す

に公開

記事の内容

Azure AI Foundryで作成したモデルを呼び出し、PowerShell上でチャットをする。

1. AI Foundryからモデルを作成

AI Foundry Portalに入り、ビルドを選択

左のリストから『モデル』を選択し、『基本モデルをデプロイする』を選択

任意のモデルを検索して選択

詳細設定をして、デプロイを選択

2. 使用モデルのEndpointとキーを取得

使用するモデルの名前部分を選択

『詳細』を選択し、ターゲットURIとキーを取得する

3. 実行環境の作成

ディレクトリ構造

llm02/
├── .venv/               ← Python仮想環境
├── .env                 ← AI FoundryのAPIキー&エンドポイント
├── main.py              ← チャットアプリ本体(API 呼び出し)
└── requirements.txt     ← パッケージ一覧(任意で作成)

仮想環境を作成し、Activateにする
https://zenn.dev/headwaters/articles/fc24dfd749d876
requirements.txt

openai>=1.0
python-dotenv>=1.0

requirements.txtに上記を記述し、仮想環境をActivateした上で以下のコマンドを実行

pip install -r requirements.txt

main.pyを作成

from openai import AzureOpenAI
import os
from dotenv import load_dotenv

# .env ファイルから環境変数を読み込む
# これにより、APIキーやエンドポイントなどの機密情報をコードに直接書かずに済む
load_dotenv()

# 環境変数からAzure OpenAIの設定を取得
API_KEY = os.environ["AZURE_OPENAI_API_KEY"]
ENDPOINT = os.environ["AZURE_OPENAI_ENDPOINT"]
API_VERSION = "2024-05-01-preview"   
MODEL = "gpt-4o-mini"                  # デプロイ名

# Azure OpenAI クライアントの初期化
client = AzureOpenAI(
    api_key=API_KEY,
    azure_endpoint=ENDPOINT,
    api_version=API_VERSION
)

def main():
    print("=== gpt-4o-mini Chat Playground ===")
    print("何か入力してください(exit で終了)\n")

    # 対話ループを開始
    while True:
        user_input = input("You: ")

        # 終了コマンドのチェック
        if user_input.lower() in ["exit", "quit", "bye"]:
            print("終了します。")
            break

        # Azure OpenAI API を呼び出して応答を生成
        response = client.chat.completions.create(
            model=MODEL,
            messages=[
                {"role": "user", "content": user_input}
            ],
            max_tokens=200
        )
        
        # 応答からメッセージ内容を抽出
        assistant_message = response.choices[0].message.content
    
        print(f"Assistant: {assistant_message}\n")

if __name__ == "__main__":
    main()

.envを作成

# AOAI
AZURE_OPENAI_API_KEY=キー情報を記載
AZURE_OPENAI_ENDPOINT=https://[AIFoundry名].cognitiveservices.azure.com

4. 実行

仮想環境をActivateした状態で、対象ディレクトリ上で下記コマンドを実行

python main.py

問題なければ、下記のようなチャットが開始される。

コラム's

コラム:API Versionについて

API_VERSION = "2024-05-01-preview" と記載したが、"2025-04-01-preview"でも起動する。
下記のLearnに記載されているバージョンは比較的安定に動く。
https://learn.microsoft.com/ja-jp/azure/ai-foundry/openai/api-version-lifecycle?view=foundry-classic&tabs=python
Foundryのモデル画面にある『バージョン』がAPI Versionとは限らないため注意。

コラム:エンドポイントのSDKについて

📘 実はエンドポイントURLはSDKが自動で組み立ててくれている

Azure AI Foundry のモデル API を Python から呼び出す際、
「エンドポイント URL をどこまで自分で書く必要があるのか?」
と疑問に思う人は多いです。

結論として Azure OpenAI SDK(AzureOpenAI クラス)が内部で推論エンドポイントを自動生成してくれる ため、
ユーザーは .cognitiveservices.azure.com のベースエンドポイントだけを指定すれば OK です。

例えば、今回コードで設定しているのは以下の 2 つだけです

azure_endpoint = "https://<AIFoundry名>.cognitiveservices.azure.com"
model = "gpt-4o-mini"

しかし SDK の内部では、このような完全な API URL を自動で構築しています

https://<AIFoundry名>.cognitiveservices.azure.com
  /openai/deployments/<モデル名>
  /chat/completions
  ?api-version=2024-05-01-preview

つまり、もし SDK を使わずに REST API を直接叩くなら自分で組み立てる必要がある URL が、
SDK では自動で組み上がる仕組みになっています。


▶︎ 手動呼び出し(例)

SDK を使わない場合、以下のような URL を自分で書かなければいけません:

https://<AIFoundry名>.cognitiveservices.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2024-05-01-preview

しかし、SDK を使うとこれがワンライナーになります:

client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello!"}]
)

➕ まとめ

  • ベースエンドポイント(https://<name>.cognitiveservices.azure.com)だけを指定すれば良い
  • 残りのパス /openai/deployments/.../chat/completionsSDK が自動構築
  • だから Python からはとても少ないコードで Azure AI Foundry のモデルを呼べる
  • REST 直叩きや curl の場合は全部自分で URL を組み立てる必要がある
ヘッドウォータース

Discussion