【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にする 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に記載されているバージョンは比較的安定に動く。
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/completionsは SDK が自動構築 - だから Python からはとても少ないコードで Azure AI Foundry のモデルを呼べる
- REST 直叩きや curl の場合は全部自分で URL を組み立てる必要がある
Discussion