Foundry Local SDK を使用すると、シンプルで直感的な API を使用して、ローカル AI モデルを使用する AI 機能をアプリケーションに実装できます。 SDK は、AI モデルの管理の複雑さを取り除き、ローカル AI 機能をアプリケーションに統合するためのシームレスなエクスペリエンスを提供します。 このリファレンスでは、C#、C++、JavaScript、Python、Rust の SDK 実装について説明します。
SDK では、Foundry Local CLI をエンド ユーザー マシンにインストールする必要はありません。これにより、ユーザーに追加のセットアップ手順を行わずにアプリケーションを出荷できます。アプリケーションは自己完結型です。 Foundry Local SDK のその他の利点は次のとおりです。
- ハードウェアの検出と最適化: GPU、NPU、CPU の自動機能評価。
- Execution プロバイダー管理 (Windows): デバイスの機能に基づく適切な ONNX ランタイム実行プロバイダー (CUDA、Vitis、QNN、OpenVINO、TensorRT) の自動ダウンロードと登録。
- WebGpu (macOS) によるメタル サポート: 最適化されたパフォーマンスで Apple Silicon でモデルを実行するためのネイティブ サポート。
- モデルの取得: フォールバック サポートにより、バージョン管理、更新、および自動的にハードウェア最適化モデルの選択を使用して Foundry モデル カタログからシームレスにダウンロードできます。
- 効率的なランタイム: アプリ サイズに約 20 MB を追加し、携帯電話からデスクトップにデバイス上で実行されます。
- OpenAI API の互換性: OpenAI モデルとツールとの簡単な統合。
- オプションの REST サーバー: Foundry Local を、他のアプリケーションからアクセスできるローカル サービスとして実行します。
C# SDK リファレンス
パッケージをインストールする
dotnet add package Microsoft.AI.Foundry.Local
dotnet add package OpenAI
GitHub リポジトリの C# サンプルは、事前構成済みのプロジェクトです。 最初からビルドする場合は、Foundry Local を使用して C# プロジェクトを設定する方法の詳細については、 Foundry Local SDK リファレンスを参照 してください。
プロジェクト構成
サンプル リポジトリには、プラットフォーム検出を自動的に処理する .csproj ファイルが含まれています。 プロジェクトを最初からビルドする場合は、この構成を参照として使用します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<!-- Windows: target Windows SDK for WinML hardware acceleration -->
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
<Platforms>ARM64;x64</Platforms>
<WindowsPackageType>None</WindowsPackageType>
<EnableCoreMrtTooling>false</EnableCoreMrtTooling>
</PropertyGroup>
<!-- Non-Windows: standard .NET -->
<PropertyGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
<TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
<RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AI.Foundry.Local" />
</ItemGroup>
<!-- Linux GPU support -->
<ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-x64'">
<PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu" />
<PackageReference Include="Microsoft.ML.OnnxRuntimeGenAI.Cuda" />
</ItemGroup>
<!-- Shared utilities -->
<ItemGroup>
<Compile Include="../Shared/*.cs" />
</ItemGroup>
</Project>
次の表では、プロジェクトの主要な設定について説明します。
| Setting | 説明 |
|---|---|
TargetFramework |
サンプルに必要な.NETバージョンを対象とします。 |
RuntimeIdentifier |
既定では、現在の SDK のランタイム識別子が使用され、正しいプラットフォーム バイナリが選択されていることを確認します。 |
Microsoft.AI.Foundry.Local |
Windows、macOS、Linux 用の Foundry Local SDK パッケージ。 |
クイック スタート
このスニペットを使用して、SDK がローカル モデル カタログを初期化してアクセスできることを確認します。
using Microsoft.AI.Foundry.Local;
using Microsoft.Extensions.Logging;
using System.Linq;
var config = new Configuration
{
AppName = "app-name",
LogLevel = Microsoft.AI.Foundry.Local.LogLevel.Information,
};
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Information);
});
var logger = loggerFactory.CreateLogger<Program>();
await FoundryLocalManager.CreateAsync(config, logger);
var manager = FoundryLocalManager.Instance;
var catalog = await manager.GetCatalogAsync();
var models = await catalog.ListModelsAsync();
Console.WriteLine($"Models available: {models.Count()}");
次の使用例は、ハードウェアで使用できるモデルの数を出力します。
サンプル
- Foundry Local C# SDK の使用方法を示すサンプル アプリケーションについては、Foundry Local C# SDK Samples GitHub リポジトリを参照してください。
API リファレンス
- Foundry Local C# SDK の詳細については、 Foundry Local C# SDK API リファレンスを参照してください。
ネイティブ オーディオ文字起こし API
C# SDK には、デバイス上でささやきモデルを使用してオーディオ ファイルを文字起こしするためのネイティブ オーディオ クライアントが含まれています。 これにより、REST Web サーバーを必要とせずに、インプロセスで推論が実行されます。
オーディオ クライアントを取得する
ささやきモデルを読み込んだ後、オーディオ クライアントを取得します。
var audioClient = await model.GetAudioClientAsync();
オーディオ文字起こしメソッド
| メソッド | 署名 | 説明 |
|---|---|---|
TranscribeAudioStreamingAsync() |
(string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> |
文字起こしの結果をチャンク単位でストリーミングします。 各チャンクには、 Text プロパティがあります。 |
AudioClient の設定
| 財産 | タイプ | 説明 |
|---|---|---|
Language |
string |
ISO 639-1 言語コード (たとえば、 "en")。 精度が向上します。 |
Temperature |
float |
サンプリング温度 (0.0 ~ 1.0)。 値を小さくすると、より確定的になります。 |
例
var audioClient = await model.GetAudioClientAsync();
audioClient.Settings.Language = "en";
audioClient.Settings.Temperature = 0.0f;
await foreach (var chunk in audioClient.TranscribeAudioStreamingAsync(
"recording.mp3", CancellationToken.None))
{
Console.Write(chunk.Text);
}
参考資料:
JavaScript SDK リファレンス
パッケージをインストールする
npm install foundry-local-sdk openai
クイック スタート
このスニペットを使用して、SDK がローカル モデル カタログを初期化してアクセスできることを確認します。
import { FoundryLocalManager } from 'foundry-local-sdk';
console.log('Initializing Foundry Local SDK...');
const manager = FoundryLocalManager.create({
appName: 'foundry_local_samples',
logLevel: 'info'
});
console.log('✓ SDK initialized successfully');
// Explore available models
console.log('\nFetching available models...');
const catalog = manager.catalog;
const models = await catalog.getModels();
console.log(`Found ${models.length} models:`);
for (const model of models) {
console.log(` - ${model.alias}`);
}
この例では、ハードウェアで使用可能なモデルの一覧を出力します。
サンプル
- Foundry Local JavaScript SDK の使用方法を示すサンプル アプリケーションについては、Foundry Local JavaScript SDK Samples GitHub リポジトリを参照してください。
API リファレンス
- Foundry Local JavaScript SDK の詳細については、 Foundry Local JavaScript SDK API リファレンスを参照してください。
References
Python SDK リファレンス
パッケージをインストールする
pip install foundry-local-sdk openai
クイック スタート
このスニペットを使用して、SDK がローカル モデル カタログを初期化してアクセスできることを確認します。
import asyncio
from foundry_local_sdk import Configuration, FoundryLocalManager
async def main():
config = Configuration(app_name="app-name")
FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
models = manager.catalog.list_models()
print(f"Models available: {len(models)}")
if __name__ == "__main__":
asyncio.run(main())
次の使用例は、ハードウェアで使用できるモデルの数を出力します。
サンプル
- Foundry Local Python SDK の使用方法を示すサンプル アプリケーションについては、Foundry Local SDK Samples GitHub リポジトリを参照してください。
コンフィギュレーション
Configuration クラスを使用すると、SDK の動作をカスタマイズできます。
from foundry_local_sdk import Configuration
config = Configuration(
app_name="app-name",
log_level="info",
model_cache_dir="./foundry_local_data/model_cache",
web={"urls": "http://127.0.0.1:55588"},
)
| パラメーター | タイプ | 説明 |
|---|---|---|
app_name |
str |
アプリケーションの名前。 |
log_level |
str |
ログ レベル (たとえば、 "info"、 "debug")。 |
model_cache_dir |
str |
キャッシュされたモデルのディレクトリ。 |
web |
dict |
urls キーを使用した Web サービスの構成。 |
コア API
| メソッド | 説明 |
|---|---|
FoundryLocalManager.initialize(config) |
Configurationを使用してシングルトン マネージャーを初期化します。 |
FoundryLocalManager.instance |
初期化されたマネージャー インスタンスにアクセスします。 |
manager.catalog.list_models() |
カタログ内で使用可能なすべてのモデルを一覧表示します。 |
manager.catalog.get_model(alias) |
エイリアスによってモデルを取得します。 |
manager.catalog.get_cached_models() |
ローカル キャッシュ内のモデルを一覧表示します。 |
manager.catalog.get_loaded_models() |
現在読み込まれているモデルを一覧表示します。 |
model.download(progress_callback) |
モデルをダウンロードします (キャッシュされている場合はスキップされます)。 |
model.load() |
推論のためにモデルを読み込みます。 |
model.unload() |
モデルをアンロードします。 |
model.is_cached |
モデルがローカルにキャッシュされているかどうかを確認します。 |
model.is_loaded |
モデルが読み込まれているかどうかを確認します。 |
ネイティブ チャット完了 API
モデルを読み込んだ後、チャット クライアントを取得します。
client = model.get_chat_client()
| メソッド | 説明 |
|---|---|
client.complete_chat(messages) |
完全なチャット応答を生成します。 |
client.complete_streaming_chat(messages) |
チャット応答チャンクをストリーム配信します。 |
ネイティブ オーディオ文字起こし API
ささやきモデルを読み込んだ後、オーディオ クライアントを取得します。
audio_client = model.get_audio_client()
| メソッド | 説明 |
|---|---|
audio_client.transcribe(file_path) |
オーディオ ファイルを文字起こしします。
text プロパティを持つオブジェクトを返します。 |
参考資料:
Rust SDK リファレンス
パッケージをインストールする
cargo add foundry-local-sdk
cargo add tokio --features full
cargo add tokio-stream anyhow
クイック スタート
このスニペットを使用して、SDK がローカル モデル カタログを初期化してアクセスできることを確認します。
use foundry_local_sdk::{FoundryLocalConfig, FoundryLocalManager};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let manager = FoundryLocalManager::create(FoundryLocalConfig::new("app-name"))?;
let models = manager.catalog().get_models().await?;
println!("Models available: {}", models.len());
Ok(())
}
次の使用例は、ハードウェアで使用できるモデルの数を出力します。
サンプル
- Foundry Local Rust SDK の使用方法を示すサンプル アプリケーションについては、Foundry Local SDK Samples GitHub リポジトリを参照してください。
コンフィギュレーション
FoundryLocalConfig構造体を使用すると、SDK の動作をカスタマイズできます。
use foundry_local_sdk::FoundryLocalConfig;
let config = FoundryLocalConfig::new("app-name")
.with_log_level("info")
.with_model_cache_dir("./foundry_local_data/model_cache")
.with_web_urls("http://127.0.0.1:55588");
コア API
| メソッド | 説明 |
|---|---|
FoundryLocalManager::create(config) |
FoundryLocalConfigを使用して新しいマネージャーを作成します。 |
manager.catalog().get_models().await |
使用可能なすべてのモデルを一覧表示します。 |
manager.catalog().get_model(alias).await |
エイリアスによってモデルを取得します。 |
manager.catalog().get_cached_models().await |
ローカル キャッシュ内のモデルを一覧表示します。 |
manager.catalog().get_loaded_models().await |
現在読み込まれているモデルを一覧表示します。 |
model.download(callback).await |
モデルをダウンロードします (キャッシュされている場合はスキップされます)。 |
model.load().await |
推論のためにモデルを読み込みます。 |
model.unload().await |
モデルをアンロードします。 |
ネイティブ チャット完了 API
モデルを読み込んだ後、オプションの設定でチャット クライアントを作成します。
let client = model.create_chat_client()
.temperature(0.7)
.max_tokens(256);
| メソッド | 説明 |
|---|---|
client.complete_chat(&messages, tools).await |
完全なチャット応答を生成します。 |
client.complete_streaming_chat(&messages, tools).await |
チャット応答チャンクをストリーム配信します。 |
メッセージの種類: ChatCompletionRequestSystemMessage、 ChatCompletionRequestUserMessage、 ChatCompletionRequestMessage。
ネイティブ オーディオ文字起こし API
ささやきモデルを読み込んだ後、オーディオ クライアントを作成します。
let audio_client = model.create_audio_client();
| メソッド | 説明 |
|---|---|
audio_client.transcribe(file_path).await |
オーディオ ファイルを文字起こしします。
text フィールドを持つオブジェクトを返します。 |
参考資料:
C++ SDK リファレンス
Prerequisites
C++ SDK は、ネイティブ Foundry Local ランタイムに対してヘッダーのみのラッパーを提供します。 デプロイされたアプリケーションでは、Foundry Local CLI または .NET ランタイムは必要ありません。
構成済みの CMake プロジェクトから始めるには、ネイティブ チャットのサンプルをクローンします:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/cpp/foundry-local/native-chat-completions
C++ サンプルには次のものが必要です。
サンプルの構成とビルド:
cmake -S . -B build
cmake --build build --config Release
構成時に、このサンプルは Microsoft.AI.Foundry.Local.Runtime NuGet パッケージのバージョン 2.2.1 を build/_packages に復元します。 パッケージには、Windows、Linux、および macOS 用の C++ ヘッダーとネイティブ ライブラリが含まれています。 別の WinML パッケージは必要ありません。
CMake 構成では、オペレーティング システムとアーキテクチャのランタイム資産が選択され、必要なネイティブ ライブラリが実行可能ファイルの横にコピーされます。 macOS と Linux では、build から実行ファイルを実行します。 Windows で、.exe の build ファイルを実行します。
アプリケーションのオペレーティング システムとアーキテクチャに一致するネイティブ アセットを選択してください。
| オペレーティング システム | Architecture | ランタイム識別子 (RID) |
|---|---|---|
| Windows | x64 または ARM64 |
win-x64 または win-arm64 |
| Linux | x64 または ARM64 |
linux-x64 または linux-arm64 |
| macOS | Apple Silicon (ARM64) | osx-arm64 |
を追加します
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/build/native/include をコンパイラのインクルード パスに指定します。 パッケージのネイティブ ライブラリをリンクする
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/runtimes/<rid>/native ディレクトリ:
- Windows では
foundry_local.lib。 - Linux 上の
libfoundry_local.so。 -
libfoundry_local.dylibmacOS の場合。
実行可能ファイルの横またはプラットフォームのライブラリ検索パスに、一致するネイティブ ランタイムと依存関係ライブラリをデプロイします。 復元されたパッケージ バージョンをまとめて保持します。 異なるリリースのヘッダーとネイティブ ライブラリを混在させないでください。
クイック スタート
サンプルの main.cpp を次のコードに置き換えて、SDK を初期化し、カタログ内のモデルをカウントします。
#include <foundry_local/foundry_local_cpp.h>
#include <iostream>
using namespace foundry_local;
int main() {
try {
Manager manager{Configuration("app-name")};
auto models = manager.GetCatalog().GetModels();
std::cout << "Models available: " << models.size() << "\n";
} catch (const Error& error) {
std::cerr << "Foundry Local error [" << error.Code()
<< "]: " << error.what() << "\n";
return 1;
}
return 0;
}
この例では、 Models available: を出力し、その後にカタログのモデル数を出力します。
モデルをダウンロードまたは読み込めません。 そのマネージャーから取得したカタログ、モデル、またはメタデータ オブジェクトを使用している間は、そのマネージャーを存続させておいてください。
リファレンス: Configuration、Manager、およびCatalogの C++ ラッパー宣言。
コア API
ラッパーは、RAII(Resource Acquisition Is Initialization)により、オブジェクトがスコープを抜けるときにネイティブ ハンドルを解放します。
| API | 説明 |
|---|---|
Manager{Configuration("app-name")} |
アプリケーション名を使用してマネージャーを初期化します。 |
manager.GetCatalog() |
モデル カタログを取得します。 |
catalog.GetModels() |
カタログ内のモデルを一覧表示します。 |
catalog.GetModel(alias) |
別名でモデルを検索します。 返されたポインターを使用する前に確認してください。 |
model->Download() |
モデルをローカル キャッシュにダウンロードします。 |
model->Load() |
推論用のモデルを読み込みます。 |
model->Unload() |
メモリからモデルをアンロードします。 |
ChatSession::ProcessRequest(request) |
チャット要求を実行し、応答を返します。 |
API リファレンスとサンプル
完全な API および推論ワークフローについては、パブリック ヘッダーとメンテナンスされている例を参照してください。