Foundry Local SDK を使用すると、シンプルで直感的な API を使用してローカル AI モデルを使用できる AI 機能をアプリケーションに配布できます。 SDK は、AI モデルの管理の複雑さを取り除き、ローカル AI 機能をアプリケーションに統合するためのシームレスなエクスペリエンスを提供します。 このリファレンスでは、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 リファレンス
パッケージをインストールする
Windowsで開発または出荷する場合は、Windows タブを選択します。Windows パッケージは、Windows ML ランタイムと統合され、同じ API サーフェス領域に幅広いハードウェア アクセラレーションを提供します。
dotnet add package Microsoft.AI.Foundry.Local.WinML
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.26100</TargetFramework>
<WindowsAppSDKSelfContained>false</WindowsAppSDKSelfContained>
<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>
<!-- Windows: WinML for hardware acceleration -->
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
<PackageReference Include="Microsoft.AI.Foundry.Local.WinML" />
</ItemGroup>
<!-- Non-Windows: standard SDK -->
<ItemGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
<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 |
Windowsでは、WinML ハードウェア アクセラレーションnet9.0-windows10.0.26100をターゲットにします。 他のプラットフォームでは、ターゲット net9.0。 |
WindowsAppSDKSelfContained |
false に設定して、バンドルするのではなく、システムにインストールされたWindows アプリ SDKを使用します。 |
WindowsPackageType |
パッケージ化されていないデスクトップ アプリ (MSIX パッケージなし) としてビルドするには、 None に設定します。 |
EnableCoreMrtTooling |
コンソール アプリでは必要ない MRT Core リソース ツールを無効にするには、 false に設定します。 |
RuntimeIdentifier |
既定では、現在の SDK のランタイム識別子が使用され、正しいプラットフォーム バイナリが選択されていることを確認します。 |
Microsoft.AI.Foundry.Local.WinML |
ハードウェア アクセラレーションと自動実行プロバイダー管理に WinML を使用するWindows専用パッケージ。 |
Microsoft.AI.Foundry.Local |
WinML を使用しない macOS、Linux、Windows用のクロスプラットフォーム パッケージ。 |
Microsoft.ML.OnnxRuntime.Gpu / OnnxRuntimeGenAI.Cuda |
CUDA 対応ハードウェアの Linux GPU サポート パッケージ。 |
クイック スタート
このスニペットを使用して、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 リファレンス
パッケージをインストールする
Windowsで開発または出荷する場合は、Windows タブを選択します。Windows パッケージは、Windows ML ランタイムと統合され、同じ API サーフェス領域に幅広いハードウェア アクセラレーションを提供します。
npm install foundry-local-sdk-winml 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 リファレンス
パッケージをインストールする
Windowsで開発または出荷する場合は、Windows タブを選択します。Windows パッケージは、Windows ML ランタイムと統合され、同じ API サーフェス領域に幅広いハードウェア アクセラレーションを提供します。
pip install foundry-local-sdk-winml 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 リファレンス
パッケージをインストールする
Windowsで開発または出荷する場合は、Windows タブを選択します。Windows パッケージは、Windows ML ランタイムと統合され、同じ API サーフェス領域に幅広いハードウェア アクセラレーションを提供します。
cargo add foundry-local-sdk --features winml
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 フィールドを持つオブジェクトを返します。 |
参考資料: