Foundry Local ワークショップ - デバイス上でAIアプリを構築する

April 21, 2026 · View on GitHub

Foundry Local

Foundry Local ワークショップ - デバイス上でAIアプリを構築する

自身のマシンで言語モデルを実行し、Foundry LocalMicrosoft Agent Framework を使ってインテリジェントなアプリケーションを構築するハンズオンワークショップです。

Foundry Localとは? Foundry Localは、言語モデルを完全に自身のハードウェア上でダウンロード、管理、提供できる軽量ランタイムです。OpenAI互換APIを公開しており、OpenAIに対応した任意のツールやSDKから接続可能で、クラウドアカウントは不要です。

🌐 多言語サポート

GitHub Actionsを使ったサポート(自動かつ常に最新)

Arabic | Bengali | Bulgarian | Burmese (Myanmar) | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Macau) | Chinese (Traditional, Taiwan) | Croatian | Czech | Danish | Dutch | Estonian | Finnish | French | German | Greek | Hebrew | Hindi | Hungarian | Indonesian | Italian | Japanese | Kannada | Khmer | Korean | Lithuanian | Malay | Malayalam | Marathi | Nepali | Nigerian Pidgin | Norwegian | Persian (Farsi) | Polish | Portuguese (Brazil) | Portuguese (Portugal) | Punjabi (Gurmukhi) | Romanian | Russian | Serbian (Cyrillic) | Slovak | Slovenian | Spanish | Swahili | Swedish | Tagalog (Filipino) | Tamil | Telugu | Thai | Turkish | Ukrainian | Urdu | Vietnamese

ローカルでクローンしたいですか?

このリポジトリには50以上の言語翻訳が含まれており、ダウンロードサイズが大幅に増加します。翻訳なしでクローンするにはスパースチェックアウトを使用してください:

Bash / macOS / Linux:

git clone --filter=blob:none --sparse https://github.com/microsoft-foundry/Foundry-Local-Lab.git
cd Foundry-Local-Lab
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'

CMD (Windows):

git clone --filter=blob:none --sparse https://github.com/microsoft-foundry/Foundry-Local-Lab.git
cd Foundry-Local-Lab
git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"

これにより、コースを完了するために必要なものを高速でダウンロードできます。


学習目標

このワークショップを終了すると、以下のことができるようになります:

#目標
1Foundry Localをインストールし、CLIでモデルを管理する
2Foundry Local SDK APIを習得し、プログラマブルなモデル管理を行う
3Python、JavaScript、C# SDKを使ってローカル推論サーバーに接続する
4自身のデータに基づく回答を行うリトリーバル拡張生成(RAG)パイプラインを構築する
5永続的な指示やペルソナを持つAIエージェントを作成する
6フィードバックループを持つマルチエージェントワークフローをオーケストレーションする
7実践的なキャップストーンアプリ「Zava Creative Writer」を探求する
8ゴールデンデータセットやLLMジャッジスコアによる評価フレームワークを構築する
9Whisperで音声を文字起こし - Foundry Local SDKによるオンデバイス音声認識
10ONNX Runtime GenAIとFoundry Localを使ってカスタムまたはHugging Faceモデルをコンパイル・実行する
11ローカルモデルからツール呼び出しパターンによる外部関数呼び出しを可能にする
12Zava Creative WriterのブラウザベースUIをリアルタイムストリーミングで構築する

前提条件

要件詳細
ハードウェア8GB RAM以上(16GB推奨)、AVX2対応CPUまたは対応GPU
OSWindows 10/11 (x64/ARM)、Windows Server 2025、または macOS 13以上
Foundry Local CLIwinget install Microsoft.FoundryLocal (Windows) または brew tap microsoft/foundrylocal && brew install foundrylocal (macOS) でインストール。詳細は はじめにガイド を参照。
言語ランタイムPython 3.9+ および/または .NET 9.0+ および/または Node.js 18+
Git本リポジトリのクローン用

はじめに

# 1. リポジトリをクローンする
git clone https://github.com/microsoft-foundry/foundry-local-lab.git
cd foundry-local-lab

# 2. Foundry Local がインストールされていることを確認する
foundry model list              # 利用可能なモデルを一覧表示する
foundry model run phi-3.5-mini  # インタラクティブチャットを開始する

# 3. 使用する言語トラックを選択する(完全なセットアップについてはパート2のラボを参照)
言語クイックスタート
Pythoncd python && pip install -r requirements.txt && python foundry-local.py
C#cd csharp && dotnet run
JavaScriptcd javascript && npm install && node foundry-local.mjs

ワークショップのパート構成

パート1:Foundry Localのはじめかた

ラボガイド: labs/part1-getting-started.md

  • Foundry Localとは何か、その仕組み
  • WindowsとmacOSでCLIをインストールする方法
  • モデル探索 - リスト表示、ダウンロード、実行
  • モデルのエイリアスと動的ポートの理解

パート2:Foundry Local SDKを深掘り

ラボガイド: labs/part2-foundry-local-sdk.md

  • アプリケーション開発にCLIではなくSDKを使う理由
  • Python、JavaScript、C#の完全なSDK APIリファレンス
  • サービス管理、カタログ閲覧、モデルライフサイクル(ダウンロード、ロード、アンロード)
  • クイックスタートパターン:Pythonコンストラクタブートストラップ、JavaScriptの init(), C#の CreateAsync()
  • FoundryModelInfo メタデータ、エイリアス、ハードウェアに最適なモデル選択

パート3:SDKとAPI

ラボガイド: labs/part3-sdk-and-apis.md

  • Python、JavaScript、C#からFoundry Localに接続する方法
  • Foundry Local SDKを使用してプログラムからサービスを管理する
  • OpenAI互換APIを使用したストリーミングチャット完了
  • 各言語のSDKメソッドリファレンス

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local.py基本的なストリーミングチャット
C#csharp/BasicChat.cs.NETでのストリーミングチャット
JavaScriptjavascript/foundry-local.mjsNode.jsでのストリーミングチャット

パート4:リトリーバル拡張生成(RAG)

ラボガイド: labs/part4-rag-fundamentals.md

  • RAGとは何か、そしてその重要性
  • インメモリの知識ベースを構築する
  • キーワード重なりによる検索とスコアリング
  • 根拠のあるシステムプロンプトの作成
  • デバイス上での完全なRAGパイプラインの実行

コードサンプル:

言語ファイル
Pythonpython/foundry-local-rag.py
C#csharp/RagPipeline.cs
JavaScriptjavascript/foundry-local-rag.mjs

パート5:AIエージェントの構築

ラボガイド: labs/part5-single-agents.md

  • AIエージェントとは(生のLLM呼び出しと比較して)
  • ChatAgentパターンとMicrosoft Agent Frameworkの活用
  • システム指示、ペルソナ、マルチターン会話
  • エージェントから構造化出力(JSON)を得る

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local-with-agf.pyAgent Frameworkを使った単一エージェント
C#csharp/SingleAgent.cs単一エージェント(ChatAgentパターン)
JavaScriptjavascript/foundry-local-with-agent.mjs単一エージェント(ChatAgentパターン)

パート6:マルチエージェントワークフロー

ラボガイド: labs/part6-multi-agent-workflows.md

  • マルチエージェントパイプライン:リサーチャー → ライター → エディター
  • 逐次オーケストレーションとフィードバックループ
  • 共有設定と構造化された受け渡し
  • 独自のマルチエージェントワークフロー設計

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local-multi-agent.py三者エージェントパイプライン
C#csharp/MultiAgent.cs三者エージェントパイプライン
JavaScriptjavascript/foundry-local-multi-agent.mjs三者エージェントパイプライン

パート7:Zava Creative Writer - キャップストーンアプリ

ラボガイド: labs/part7-zava-creative-writer.md

  • 4つの専門エージェントを持つ実践的なマルチエージェントアプリ
  • 逐次パイプラインと評価者主導のフィードバックループ
  • ストリーミング出力、製品カタログ検索、構造化されたJSON受け渡し
  • Python (FastAPI)、JavaScript (Node.js CLI)、C# (.NETコンソール)での完全実装

コードサンプル:

言語ディレクトリ説明
Pythonzava-creative-writer-local/src/api/オーケストレーターを備えたFastAPIウェブサービス
JavaScriptzava-creative-writer-local/src/javascript/Node.js CLIアプリケーション
C#zava-creative-writer-local/src/csharp/.NET 9コンソールアプリケーション

パート8:評価主導の開発

ラボガイド: labs/part8-evaluation-led-development.md

  • ゴールデンデータセットによるAIエージェントの体系的評価フレームワーク構築
  • ルールベースチェック(文字数、キーワード網羅、禁止語)+LLMジャッジスコアリング
  • プロンプトバリアントの並列比較と総合スコアカード
  • パート7のZava Editorエージェントパターンをオフラインテストスイートに拡張
  • Python、JavaScript、C#トラック対応

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local-eval.py評価フレームワーク
C#csharp/AgentEvaluation.cs評価フレームワーク
JavaScriptjavascript/foundry-local-eval.mjs評価フレームワーク

パート9:Whisperによる音声文字起こし

ラボガイド: labs/part9-whisper-voice-transcription.md

  • ローカル実行されるOpenAI Whisperを使った音声認識文字起こし
  • プライバシーファーストなオーディオ処理 - 音声はデバイス外に送信されません
  • Python、JavaScript、C#でのclient.audio.transcriptions.create()(Python/JS)およびAudioClient.TranscribeAudioAsync()(C#)による利用
  • 実践練習用のZavaテーマのサンプル音声ファイル付き

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local-whisper.pyWhisper音声文字起こし
C#csharp/WhisperTranscription.csWhisper音声文字起こし
JavaScriptjavascript/foundry-local-whisper.mjsWhisper音声文字起こし

注意: このラボでは Foundry Local SDK を利用してプログラム的にWhisperモデルをダウンロード・読み込みし、ローカルのOpenAI互換エンドポイントへ音声を送信して文字起こしを行います。Whisperモデル(whisper)はFoundry Localカタログにあり、完全にデバイス上で動作します。クラウドAPIキーやネットワークアクセスは不要です。


パート 10: カスタムまたはHugging Faceモデルの使用

ラボガイド: labs/part10-custom-models.md

  • ONNX Runtime GenAIモデルビルダーを用いたHugging Faceモデルの最適化ONNX形式へのコンパイル
  • ハードウェア特化のコンパイル(CPU、NVIDIA GPU、DirectML、WebGPU)および量子化(int4、fp16、bf16)
  • Foundry Local用チャットテンプレート設定ファイルの作成
  • コンパイル済モデルのFoundry Localキャッシュへの追加
  • CLI、REST API、OpenAI SDKからのカスタムモデル実行
  • 参考例:Qwen/Qwen3-0.6Bのエンドツーエンドコンパイル

パート 11: ローカルモデルでのツール呼び出し

ラボガイド: labs/part11-tool-calling.md

  • ローカルモデルから外部関数の呼び出し(ツール/関数呼び出し)の有効化
  • OpenAIの関数呼び出しフォーマットでのツールスキーマ定義
  • マルチターンのツール呼び出し対話フローの処理
  • ローカルでのツール呼び出し実行とモデルへの結果返却
  • ツール呼び出しシナリオに適したモデル選択(Qwen 2.5、Phi-4-mini)
  • SDKのネイティブChatClientを使ったツール呼び出し(JavaScript)

コードサンプル:

言語ファイル説明
Pythonpython/foundry-local-tool-calling.py天気・人口ツールを使ったツール呼び出し
C#csharp/ToolCalling.cs.NETによるツール呼び出し
JavaScriptjavascript/foundry-local-tool-calling.mjsChatClientを用いたツール呼び出し

パート 12: ZavaクリエイティブライターのWeb UI構築

ラボガイド: labs/part12-zava-ui.md

  • Zavaクリエイティブライターにブラウザベースのフロントエンドを追加
  • Python (FastAPI)、JavaScript (Node.js HTTP)、C# (ASP.NET Core)から共有UIを配信
  • ブラウザでFetch APIとReadableStreamを使ったNDJSONのストリーミング処理
  • ライブエージェントステータスバッジとリアルタイム記事テキストストリーム表示

コード(共有UI):

ファイル説明
zava-creative-writer-local/ui/index.htmlページレイアウト
zava-creative-writer-local/ui/style.cssスタイリング
zava-creative-writer-local/ui/app.jsストリームリーダーとDOM更新ロジック

バックエンド追加:

言語ファイル説明
Pythonzava-creative-writer-local/src/api/main.py静的UI配信に対応して更新
JavaScriptzava-creative-writer-local/src/javascript/server.mjsオーケストレーターをラップする新HTTPサーバー
C#zava-creative-writer-local/src/csharp-web/Program.cs新規ASP.NET CoreミニマルAPIプロジェクト

パート 13: ワークショップ完了

ラボガイド: labs/part13-workshop-complete.md

  • 12パート全体の構築内容のまとめ
  • アプリケーション拡張のためのさらなるアイデア
  • 参考資料とドキュメントへのリンク

プロジェクト構成

├── python/                        # Python examples
│   ├── foundry-local.py           # Basic chat
│   ├── foundry-local-with-agf.py  # Single agent (AGF)
│   ├── foundry-local-rag.py       # RAG pipeline
│   ├── foundry-local-multi-agent.py # Multi-agent workflow
│   ├── foundry-local-eval.py      # Agent evaluation framework
│   ├── foundry-local-whisper.py   # Whisper voice transcription
│   ├── foundry-local-tool-calling.py # Tool/function calling
│   └── requirements.txt
├── csharp/                        # C# examples
│   ├── Program.cs                 # CLI router (chat|rag|agent|multi|eval|whisper|toolcall)
│   ├── BasicChat.cs               # Basic chat
│   ├── RagPipeline.cs             # RAG pipeline
│   ├── SingleAgent.cs             # Single agent (ChatAgent pattern)
│   ├── MultiAgent.cs              # Multi-agent workflow
│   ├── AgentEvaluation.cs         # Agent evaluation framework
│   ├── WhisperTranscription.cs    # Whisper voice transcription
│   ├── ToolCalling.cs             # Tool/function calling
│   └── csharp.csproj
├── javascript/                    # JavaScript examples
│   ├── foundry-local.mjs          # Basic chat
│   ├── foundry-local-with-agent.mjs # Single agent
│   ├── foundry-local-rag.mjs     # RAG pipeline
│   ├── foundry-local-multi-agent.mjs # Multi-agent workflow
│   ├── foundry-local-eval.mjs     # Agent evaluation framework
│   ├── foundry-local-whisper.mjs  # Whisper voice transcription
│   ├── foundry-local-tool-calling.mjs # Tool/function calling
│   └── package.json
├── zava-creative-writer-local/ # Production multi-agent app
│   ├── ui/                        # Shared browser UI (Part 12)
│   │   ├── index.html             # Page layout
│   │   ├── style.css              # Styling
│   │   └── app.js                 # Stream reader and DOM updates
│   └── src/
│       ├── api/                   # Python FastAPI service
│       │   ├── main.py            # FastAPI server (serves UI)
│       │   ├── orchestrator.py    # Pipeline coordinator
│       │   ├── foundry_config.py  # Shared Foundry Local config
│       │   ├── requirements.txt
│       │   └── agents/            # Researcher, Product, Writer, Editor
│       ├── javascript/            # Node.js CLI and web server
│       │   ├── main.mjs           # CLI entry point
│       │   ├── server.mjs         # HTTP server with UI (Part 12)
│       │   ├── foundryConfig.mjs
│       │   └── package.json
│       ├── csharp/                # .NET 9 console app
│       │   ├── Program.cs
│       │   └── ZavaCreativeWriter.csproj
│       └── csharp-web/            # .NET 9 web API (Part 12)
│           ├── Program.cs
│           └── ZavaCreativeWriterWeb.csproj
├── labs/                          # Step-by-step lab guides
│   ├── part1-getting-started.md
│   ├── part2-foundry-local-sdk.md
│   ├── part3-sdk-and-apis.md
│   ├── part4-rag-fundamentals.md
│   ├── part5-single-agents.md
│   ├── part6-multi-agent-workflows.md
│   ├── part7-zava-creative-writer.md
│   ├── part8-evaluation-led-development.md
│   ├── part9-whisper-voice-transcription.md
│   ├── part10-custom-models.md
│   ├── part11-tool-calling.md
│   ├── part12-zava-ui.md
│   └── part13-workshop-complete.md
├── samples/
│   └── audio/                     # Zava-themed WAV files for Part 9
│       ├── generate_samples.py    # TTS script (pyttsx3) to create WAVs
│       └── README.md              # Sample descriptions
├── AGENTS.md                      # Coding agent instructions
├── package.json                   # Root devDependency (mermaid-cli)
├── LICENSE                        # MIT licence
└── README.md

リソース

リソースリンク
Foundry Local公式サイトfoundrylocal.ai
モデルカタログfoundrylocal.ai/models
Foundry Local GitHubgithub.com/microsoft/foundry-local
はじめにガイドMicrosoft Learn - Foundry Local
Foundry Local SDKリファレンスMicrosoft Learn - SDK Reference
Microsoft Agent FrameworkMicrosoft Learn - Agent Framework
OpenAI Whispergithub.com/openai/whisper
ONNX Runtime GenAIgithub.com/microsoft/onnxruntime-genai

ライセンス

このワークショップ資料は教育目的で提供されています。


楽しい開発を!🚀


免責事項:
本書類は AI 翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な点が含まれる可能性があることをご了承ください。原文はその言語における正式な文書として扱われるべきです。重要な情報については専門の人間翻訳をお勧めします。本翻訳の利用による誤解や誤訳については一切責任を負いかねます。