「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、クォータ、オートシャットダウン。

コメント