Foundry Local SDK リファレンス

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()}");

次の使用例は、ハードウェアで使用できるモデルの数を出力します。

サンプル

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}`);
}

この例では、ハードウェアで使用可能なモデルの一覧を出力します。

サンプル

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())

次の使用例は、ハードウェアで使用できるモデルの数を出力します。

サンプル

コンフィギュレーション

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(())
}

次の使用例は、ハードウェアで使用できるモデルの数を出力します。

サンプル

コンフィギュレーション

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 チャット応答チャンクをストリーム配信します。

メッセージの種類: ChatCompletionRequestSystemMessageChatCompletionRequestUserMessageChatCompletionRequestMessage

ネイティブ オーディオ文字起こし API

ささやきモデルを読み込んだ後、オーディオ クライアントを作成します。

let audio_client = model.create_audio_client();
メソッド 説明
audio_client.transcribe(file_path).await オーディオ ファイルを文字起こしします。 text フィールドを持つオブジェクトを返します。

参考資料: