【Microsoft Ignite 2025】RAG&Tool Call&MCPでピザを注文するAgentを構築する – JBS Tech Blog

Microsoft Ignite 2025 Day3のラボセッションに参加しました。

本記事では、ピザ店としてふるまうAgentを設計するLAB Sessionについて解説します。Microsoft Foundry(旧AI Foundry)を使用してプレーンなAgentを構築するところから、システムプロンプトの設定→RAGの追加→関数ツールの追加→MCPサーバーの接続と発展させていき、最終的にピザの品ぞろえや注文についての相談、そして注文をそのまま実行できるAgent(チャットボット)を構築します。

こちらの内容について、セッションの詳細を最速でご紹介いたします。

セッションリンク

【LAB571-R1】Build a Pizza Ordering Agent with Microsoft Foundry and MCP

ignite.microsoft.com

※こちらのLAB SessionはMicrosoftのMCPサーバーを利用するため、Github上に公開されていませんでした。

現地の様子

現地会場でラボセッションに参加させて頂きました!

昨日はLAB Session全体で障害が発生した影響でハンズオンができませんでしたが、本日は無事にハンズオンを受けることができました。また昨日キャンセルされてしまった別なLABのハンズオンも受けることができました。

デモ内容解説

pizza注文エージェント概要

ユーザーが「ピザを1枚注文したいです」などと入力します。

これに対してAgentが中でToolを使用しながら各種処理を行います。

最終的に「あなたのピザの注文番号はXXXで、金額は〇〇ドル。本日18時に到着します」などと回答が返ってきます。このときAIが適当な回答を返しているわけではなく、実際にピザ店で注文がされる仕組みです。

(LAB Sessionなので本物のサンフランシスコのピザ屋に連絡されるわけではなく、Microsoftのデモ用pizza MCPサーバーに注文されます!)

データソース・サーバー

以下のファイルとサーバーが事前に準備されていました。

  • instructions.txt
  • Documents
    • RAGに使用するpizzaの詳細を記したmdファイル
  • MCP Server(受講者提供はサーバーURLのみ)
  • pizza注文アカウント発行Webサーバー

構築手順

Microsoft Foundry(旧:AI Foundry)上にAgentを構築します。以下の順番で機能を追加して、最終的にはピザをチャットのみで注文するエージェントを完成させます。

Agentを設定して基本的な機能が利用できるかを確認するところから、Microsoftが用意したMCPサーバーと接続して、ピザ専門店として動作するAgentを構築するところまでが対象でした。

Agentのバックエンド実装に重きを置いたセッションとなっており、フロント側とMCPサーバー本体の実装は解説の対象外でした。

1. 基本的なエージェントの作成

以下ライブラリを使用してAgentを構築していきます。

from azure.ai.projects import AIPlojectClient
from azure.ai.agents.models import MessageRole,FilePurpose,FunctionTool,FunctionSearchTool,ToolSet

流れとしては、まずクライアントを作成してcreate_agentを実行します。(モデルはGPT-4oが用意されていました)

Agentが立ち上がったらthreads.create()を実行したのちに、messages.create()runs.create_and_process()を実行してAgentの疎通確認を実行します。

2. AgentにInstructionsを設定する

create_agent()の引数は先ほどmodelとnameのみを与えていましたが、ここでinstructionsを追加で与えます。

内容は「あなたはユーザーのピザ注文に関するAIアシスタントです」といったような内容をInstructionsとして読み込みます。AIにシステムプロンプトを設定するような流れです。

振る舞いのガイドラインやレスポンス等が明確に定められていて、この時点でピザの注文に関係ない質問をすると怒られてしまうようになります。またこのInstructionsにはToolに関する内容も定められていますが、この時点ではToolは1つも設定されていないため機能しません。

3. AgentにRAG機能を追加する

デモ用にDocumentsとデータ追加用のスクリプトが用意されており、それを実行しました。

Documentsフォルダには店舗情報のようなものがmdファイルで用意されていて、概要や住所、営業時間などの基本情報が記載されていました。

以下のようなライブラリを使用して、mdファイルを処理していました。

from azure.ai.agents.models import FilePurpose

uploaded = project_client.agents.files.upload_and_poll(
  file_path=fpath,
  purpose=FilePurpose.AGENTS
)

アップロード後にベクターデータストアを作成します。

vector_store = project_client.agents.vector_stores.create_and_poll(
  data_sources=[],
  name="pizza-store-information"
)

batch = project_client.agents.vector_store_file_batches.create_and_poll(
  vector_store_id=vector_store.id,
  file_ids=file_ids
)

そしてこのベクターデータストアを、改めて作成したAgentにツールとして登録します。

file_search = FileSearchTool(vector_store_ids=[""])

toolset = ToolSet()
toolset.add(file_search)

あとはcreate_agentの引数にtoolset=toolsetを実行することで、Instructionsの指示も加わってRAG検索を確実に実行してくれます。

4. AgentにTool Callを設定する

Pythonのdefで定義した関数をAgentのToolsetとして読み込ませます。

内容としてはユーザーがピザを注文する際、「7人なんだけどどのくらいの量がいいかな?」と聞いた際にコールされます。関数には人数が入力され、内部で「7人ならLarge2枚」のように、人数別ピザのおすすめ注文数一覧が定義されています。

これによって、Agentは平均的なピザの注文数を知ることができるようになります。

5. AgentにMCP Toolを設定する

MCPサポートの入ったAI Agents SDKを以下の通りインストールします。

pip install "azure-ai-agents>=1.2.0b5"

MCPツールの設定は、おおむね以下のようなイメージです。

from azureai.agents.models import McpTool

mcp_tool = McpTool(
  server_label="pizza",
  server_url="",
  allowd_tools=[
    
  ]
)
mcp_tool.set_approval_mode("never")

toolset.add(mcp_tool)

ピザやトッピングに関する説明やIDの取得、注文の確認や注文実行&取り消しなどが行えるようになっていました。

実際にプログラムを動作させると、Agentとピザに関する対話を行うことができるようになりました。

個人的には注文の際に「トッピングはどうしますか?」と聞いてくれるなど、実際の人間を相手にしているような動作を見せてくれたことに感動しました。(Instructionsに何か設定しているのでは、とも思ったのですが、見た限りでは入っていませんでした。想像ですが、内部でMCPツールがやりとりした結果なのだと思います)

アウトプット

各ユーザー毎に専用のIDとユーザー名を発行するWebサイトが用意されていました。

取得したIDとユーザー名をAgentに設定してリクエストを送信することで、Microsoftの準備したサーバーにリクエストを送信して、ピザを注文することができます。

セッション受講者がピザを注文する様子を、続々と大画面で見ることができました。

他のセッションにはないGUIが用意されており、手元のプログラムを完成させたユーザーのピザが焼けていく様子が続々と表示され、非常に楽しかったです。

おわりに

Microsoft Ignite 2025 Day3のLABで、Microsoft FoundryとMCPを使った「注文までつながる」エージェントをゼロから組み上げる流れを体験できたのは大きな収穫でした。単なる会話生成に留まらず、RAGで知識を補強し、ツール呼び出しでロジックを差し込み、最終的にMCP経由で外部システムに接続する一連の設計が、業務の自動化やフローの近代化にそのまま転用可能だと強く感じました。

今回のLABはバックエンド実装にフォーカスしており、GUIの可視化や体験設計が連動したことで、エージェントが「会話から実行へ」つながる手応えが得られました。今回は詳細が見えませんでしたが、あとはどのようにMCPサーバーを構築していくかが肝となるように思います。

本稿はセッション当日の情報に基づく速報です。スピードを優先しているため、記載内容に誤りや変更が含まれる可能性があります。誤り等がございましたらご容赦ください。

おまけ

セッション中、ピザを50枚近く注文してしまう猛者が現れました。

僕も真似したら、Agentに「Is that correct?」と聞かれたのでやめておきました。

西野 佑基

西野 佑基(日本ビジネスシステムズ株式会社)

機械学習系ソリューション開発、業務Webアプリ開発、開発環境自動化などを担当。

担当記事一覧




元の記事を確認する

関連記事