Azure for StudentsでAzure AI Foundryのエージェントが表示されない理由と対処法|リージョン制限・PAYG移行・自作RAG・AI Search Freeまで完全解説

「Azure for Students では Azure AI Foundry のエージェントが表示されない」。この現象は不具合ではなく、学生サブスクリプション特有のリージョン制限が原因です。本稿では、なぜ起きるのか・何を選ぶべきか・ゼロ課金でどこまで代替できるかを、実務でそのまま使える手順と設計で解説します(2025年11月時点)。

目次

Azure AI Foundry のエージェントが学生サブスクリプションで表示されない理由

学生向けの Azure for Students($100 無料クレジット付き)は、セキュリティとコンプライアンスの観点から利用可能リージョンが限定されています。この記事の前提となる代表的な許可リージョンは次のとおりです。

種別代表リージョン補足
学生サブスクリプションで許可koreacentral / eastasia / austriaeast / centralindia / malaysiawestサブスクリプションに紐づくポリシーにより作成可能なリージョンが制限される
Azure AI Foundry の Agents が主に対応例:East US 2、West Europe など学生で許可されるリージョンに含まれないため UI に出てこない

よくある症状

  • Azure AI Foundry ポータルで Agents のメニューが表示されない / 開いてもデプロイ済みモデルが列挙されない。
  • モデルはデプロイ済みだが、プロジェクトが許可外リージョンでないため 紐づかない。

根本原因

学生サブスクリプションは教育向け安全リージョンに固定されており、Azure ポリシー(Allowed locations など)により許可外リージョンへのデプロイが遮断されます。Azure AI Foundry の Agents 機能は公開初期から対応リージョンが段階的に拡張されていますが、学生サブスクリプションの許可範囲とは一致しないため、UI 側でエージェントやモデルが表示されない現象として表面化します。

結論:選べる 3 つの現実解

要件とコストに応じて、次のいずれかを選ぶのが最短です。

目的推奨アクションポイント
Foundry Agents を UI そのまま使いたい従量課金(PAYG)サブスクリプションを新規作成全リージョンが解放され、対応リージョンで Agents を利用可能
コスト極小で学習・検証リージョン内で完結する自作 RAG エージェントLangChain / Semantic Kernel + Azure OpenAI + 検索基盤(AI Search/FAISSなど)
小規模の検索+生成を無料で試すAzure AI Search Free (F) を活用インデックス最大 3 / ストレージ約 50MB の無料枠で $100 クレジットを消費しない

「学生でも対応リージョンを申請で増やせるか?」への回答

増やせません。学生サブスクリプションは制度上、特定リージョンに固定されており、サポート依頼で East US 2 や West Europe を解放することはできません。したがって UI をそのまま使いたい場合は PAYG を別途用意するのが最短です。

PAYG を作った後の安全なコスト設計(実質的な「支出上限」運用)

PAYG には「ハードな課金停止スイッチ」はありません。代わりに、多層のコスト制御を組み合わせて、実質的な支出上限を運用で実現します。

  • 予算(Budget)+アラート:月次・週次の予算を設定し、50/80/100% 到達でメール/Teams 通知。
  • アノマリー検知:Cost Management の異常検知(増分ベース)で急増を即時検出。
  • Azure Policy:Allowed locations と Allowed resource types/SKUs を設定し、高額リソースや許可外リージョンを作れないようにする。
  • クォータ/レート制限:Azure OpenAI のスループット(TPM/RPM)やデプロイ上限を抑えて「使いすぎ防止」。
  • 自動停止:VM の自動シャットダウン、スケジュール停止、未使用リソースのガベージコレクションをスクリプト化。
  • サンドボックス分離:学生(学習・検証) と PAYG(PoC/デモ) をサブスクリプション単位で分離。RBAC で権限を最小化。
  • 日次レポート:Cost Management エクスポートを Storage に出力し、Power BI / Excel で自動集計。

この「7 点セット」を最初に敷いておけば、PAYG に移った直後でも請求リスクをミニマムに抑えられます。

コードベースで「自作エージェント」を構築する(学生リージョン内で完結)

次は、UI を使わず 自作 RAG エージェントを最小構成で立てる具体手順です。費用は無料〜極小で、学生リージョンの範囲内で完結します。

全体設計(ミニマム)

  • モデル:Azure OpenAI(例:gpt-4o / gpt-4o-mini)を学生リージョンにデプロイ。
  • 前処理:PDF を PyMuPDF / Unstructured でチャンク化。
  • 埋め込み:Azure OpenAI の埋め込みモデル(例:text-embedding-3-small / large)。
  • ベクタ格納:優先は Azure AI Search Free (F)。代替は FAISS(ローカル/VM)や Qdrant(コンテナ)。
  • RAG:LangChain / Semantic Kernel で「検索→コンテキスト→生成」のチェーンを組む。
  • 簡易 UI:Streamlit / Flask / Gradio など、学習用途なら 30 行程度で十分。

ディレクトリ例

rag-agent/
├─ docs/                 # PDF 等の原本
├─ chunks/               # チャンク化したテキスト
├─ index/                # ベクタ格納(FAISS の場合)
├─ app.py                # 簡易 UI or API
└─ ingest.py             # 取込・埋め込み・登録

Python サンプル(概略)

以下は FAISS を使った最小 RAG の一例です。Azure AI Search を使う場合は langchain-ai-search 等のコネクタ実装に置き換えます。

# requirements:
# pip install langchain faiss-cpu pydantic python-dotenv pypdf azure-ai-inference

import os
from dotenv import load_dotenv
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PyPDFLoader
from langchain_community.vectorstores import FAISS
from langchain.embeddings import AzureOpenAIEmbeddings
from langchain.chat_models import AzureChatOpenAI
from langchain.chains import ConversationalRetrievalChain

load_dotenv()

# ---- Azure OpenAI 設定(環境変数で注入)
# AZURE_OPENAI_ENDPOINT=https://<your-endpoint>.openai.azure.com
# AZURE_OPENAI_API_KEY=*******
# AZURE_OPENAI_API_VERSION=2024-08-01-preview
# AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-4o
# AZURE_OPENAI_EMBED_DEPLOYMENT=text-embedding-3-small

pdf_path = "docs/sample.pdf"
loader = PyPDFLoader(pdf_path)
docs = loader.load()

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000, chunk_overlap=150, separators=["\n\n", "\n", "。", "、", " ", ""]
)
splits = splitter.split_documents(docs)

emb = AzureOpenAIEmbeddings(
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    azure_deployment=os.getenv("AZURE_OPENAI_EMBED_DEPLOYMENT"),
)

# ベクタ格納(FAISS)
vect = FAISS.from_documents(splits, emb)

chat = AzureChatOpenAI(
    azure_deployment=os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    temperature=0.2,
)

qa = ConversationalRetrievalChain.from_llm(
    chat, vect.as_retriever(search_kwargs={"k": 4}), return_source_documents=True
)

history = []
query = "このPDFの主要な結論を日本語で要約して、根拠のページも示して"
result = qa.invoke({"question": query, "chat_history": history})
print(result["answer"])
for i, d in enumerate(result["source_documents"], 1):
    print(f"[{i}] {d.metadata.get('source')} p.{d.metadata.get('page')}")

この構成は 学生リージョン内の Azure OpenAI とローカル/VM 上の FAISS だけで稼働します。UI は Streamlit で 20〜30 行程度で足ります。

Semantic Kernel でツール呼び出し(関数)を足す

Foundry Agents の強みはツール呼び出し(関数実行)・メモリ・ガードレールの統合にあります。Semantic Kernel でも簡易に再現できます。

// dotnet add package Microsoft.SemanticKernel
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: Environment.GetEnvironmentVariable("AZURE_OPENAI_CHAT_DEPLOYMENT"),
    endpoint: Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"),
    apiKey: Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"));
var kernel = builder.Build();

// ツール(関数)を登録
kernel.Plugins.AddFromFunctions("math", new[]
{
    new KernelFunctionFromMethod((int a, int b) => a + b, "add", "加算します")
});

var prompt = "5 と 7 を足して、答えだけ返して";
var result = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(result);

必要に応じて RAG の回答の前に プロンプトガードレール(禁止語・トーン・スタイル)を差し込めば、Foundry Agents に近い体験が得られます。

$100 の学生クレジットは PAYG に引き継げるか

引き継げません。学生クレジットは発行済みの学生サブスクリプション専用で、別サブスクリプション(PAYG 等)へ移行・共有・振替はできません。実務的には次の運用が現実的です。

  • 二本立て運用:学生サブスクリプションは学習・ドキュメント整備・小規模実験に、PAYGは UI 検証・デモ・PoC に限定して使う。
  • コスト監視の徹底:PAYG 側に Budget/Anomaly/Policy を先に敷く。
  • 資産の移し方:ソース(PDF/Markdown)、プロンプト、評価データセット(質問-回答ペア)は Storage/Repo に置き、両サブスクリプションから参照。RAG の インデックスは PAYG 側で再構築(移送より再作成が確実)。

Azure AI Search は学生サブスクリプションで使えるか

使えます。特に Free(F)SKU は学生サブスクリプションでも作成可能で、インデックス最大 3・容量約 50MB の無料枠のため $100 クレジットを消費しません。RAG の検証では次のように使うのがおすすめです。

  • 設計のコツ:1 インデックス=1 ドメイン(例:製品 A のマニュアル群)。フィールドは content(本文)、title、source、chunk_id、vector(埋め込み)。
  • 問合せ:まずキーワード(BM25)で候補を絞り、上位 N 件にベクタ検索をかける hybrid search が精度・速度のバランス◎。
  • 容量不足時:FAISS に切り替えるか、PAYG で上位 SKU(Basic / S1 以上)を一時的に使用。
  • リージョン依存:Free SKU が対象リージョンで一時的に停止・制限される場合があるため、同一学生リージョン内で作成可能なデータセンターを試す。

AI Search Free を併用した RAG の最小コード(疑似)

# ベクタの登録と検索は概念図。実際は SDK/REST を利用。
# 1. 埋め込み生成(Azure OpenAI)
embeddings = embed_model.embed_documents(chunks)  # [n_chunks, d]

# 2. AI Search のドキュメントに vector フィールドでアップサート

for chunk, vec in zip(chunks, embeddings):
upsert_to_ai_search({
"id": chunk.id,
"content": chunk.text,
"title": chunk.title,
"vector": vec
})

# 3. 検索(ハイブリッド)

hits = ai_search(query="製品Aの保証期間は?", vector=embed_model.embed_query("製品Aの保証期間"))
context = format_context(hits)
answer = chat_completion(f"次のコンテキストに基づき日本語で厳密に回答: {context}")
print(answer) 

具体的シナリオ別の推奨アーキテクチャ

シナリオ A:完全無料に近い学習・個人実験

  • 学生サブスクリプションのみ。
  • Azure OpenAI(小さめモデル)+ AI Search Free or FAISS。
  • UI は Streamlit(学内デモは十分)。
  • ドキュメントは 50MB 以内に分割・圧縮、チャンクサイズは 600〜1000 文字、オーバーラップは 100〜200 文字。

シナリオ B:部内デモ / お客様へのショーケース

  • PAYG を併用。Foundry Agents の UI を使用。
  • プロンプトガード・ツール呼び出し・メモリを UI 上で高速に調整。
  • Budget/Anomaly/Policy を必須化。モデルは gpt-4o-mini など低コストから開始。

シナリオ C:将来の商用化を見据えた PoC

  • PAYG + Foundry Agents + AI Search Standard。
  • 評価データセット(質問-根拠-正解)を作り、自動評価(Faithfulness/Context Precision)を組む。
  • セキュリティ:ネットワーク分離(Private Endpoint)、KeyVault、Managed Identity、RBAC。

トラブルシューティング・チェックリスト

  • プロジェクトのリージョン:プロジェクトが許可外リージョンになっていないか。
  • モデルのデプロイ先:デプロイ済みモデルとプロジェクトのリージョン一致。
  • Azure Policy:サブスクリプション/管理グループに Allowed locations が割り当てられていないか。
  • Role / 権限:AI Foundry / OpenAI リソースに対する Reader/Contributor などが付与されているか。
  • クォータ:OpenAI のデプロイ上限・スループット不足で失敗していないか。
  • AI Search Free の上限:容量・インデックス数の超過(作成/更新に失敗)。

FAQ(よくある質問)

Q. 学生サブスクリプションでもサポートに依頼すれば East US 2 を開放してもらえますか?

A. できません。制度としての固定であり、例外運用は想定されていません。

Q. $100 クレジットを PAYG の料金に充当できますか?

A. 充当できません。学生サブスクリプション専用のクレジットです。並行運用が現実解です。

Q. AI Search Free がリージョンで作成できません。

A. 一時的な提供制限や SKU 提供範囲の差異が考えられます。同じ学生許可リージョン内の他データセンターを試すか、FAISS などの代替を使いましょう。

Q. Foundry Agents で作ったプロンプトやツール設定を、自作 RAG に移植できますか?

A. はい。プロンプトはそのまま移せます。ツール呼び出しは SDK(LangChain / Semantic Kernel)で再現可能です。メモリ(会話保持)は対話履歴を保存・再投入する仕組みで代替できます。

Q. 学生リージョン内で GPT‑4o を使ったときの体感コストを抑える方法は?

  • 長文入力は 要約→要約の要約→質問 の段階的プロンプティング。
  • システムプロンプトに 回答スタイル・言語 を固定し、リトライ回数を減らす。
  • gpt‑4o‑mini など安価モデルをデフォルトに、必要時だけ上位モデルへ昇格。

実務で迷わない意思決定表(最終まとめ)

ユースケース推奨アクションコスト注意点
Foundry Agents をそのまま使うPAYG 新規作成+対応リージョンで利用従量課金(Budget/Policy で制御)学生クレジットは移行不可。セキュリティ/コスト対策を先に敷く
学習・小規模検証を最小コスト学生リージョン内で自作 RAG(Azure OpenAI + AI Search Free / FAISS)無料〜極小AI Search Free の容量制限に注意。必要なら FAISS へ
PoC/デモでスピード重視PAYG + Foundry Agents(UI チューニング)中モデル選定とガードレール設計を標準化

付録:最初にやっておくコスト防御テンプレ

  • Budget:月額上限(例:$30)、通知しきい値 50/80/100% を設定。
  • Azure Policy:Allowed locations を学生許可リージョンのみに、Allowed SKUs で高額 SKU を拒否。
  • RBAC:Contributor を最小限に、Reader/Cost Management Reader を配布。
  • タグ:env=student|payg、app=rag を必須化し、未タグは拒否。
  • 自動停止:VM/ACI のスケジュール停止、未使用リソース掃除の週次ジョブ。

結び

学生サブスクリプションで Agents が表示されないのは仕様です。無理に迂回するより、PAYG で正式に使うか、学生リージョン内で自作 RAGを磨くほうが速くて確実です。まずは学習フェーズで自作 RAG を無料レベルまで仕上げ、PoC で必要になった段階で PAYG+Foundry Agents に切り替える——その二段構えが、コストと時間を同時に最適化します。


要点の総復習

  • リージョン追加申請は不可:学生サブスクリプションは教育向け安全リージョンに固定。
  • PAYG で制限解除:対応リージョンへデプロイして Foundry Agents を UI で活用。
  • 自作 RAG が現実解:LangChain / Semantic Kernel + Azure OpenAI + AI Search Free/FAISS。
  • $100 クレジットは移行不可:並行運用でリスクを最小化。
  • コスト防御は多層化:Budget、Policy、クォータ、オートシャットダウン。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次