Referentie voor Foundry Local SDK

Met de Foundry Local SDK kunt u AI-functies verzenden in uw toepassingen die in staat zijn om lokale AI-modellen te gebruiken via een eenvoudige en intuïtieve API. De SDK abstraheert de complexiteit van het beheren van AI-modellen en biedt een naadloze ervaring voor het integreren van lokale AI-mogelijkheden in uw toepassingen. Deze referentiedocumentatie documenteert SDK-implementaties voor C#, JavaScript, Python en Rust.

Voor de SDK hoeft de lokale Foundry CLI niet te worden geïnstalleerd op de computer van eindgebruikers, zodat u uw toepassingen kunt verzenden zonder extra installatiestappen voor uw gebruikers. Uw toepassingen zijn zelfstandig. De extra voordelen van de Foundry Local SDK zijn:

  • Hardwaredetectie en -optimalisatie: Automatische mogelijkheidsevaluatie voor GPU, NPU en CPU.
  • Execution Provider Management (Windows): Automatische download en registratie van de juiste ONNX Runtime-uitvoeringsproviders (CUDA, Vitis, QNN, OpenVINO, TensorRT) op basis van apparaatmogelijkheden.
  • Metal-ondersteuning via WebGpu (macOS): systeemeigen ondersteuning voor het uitvoeren van modellen op Apple Silicon met geoptimaliseerde prestaties.
  • Modelacquisitie: Naadloze download van de Foundry Model Catalog met versiebeheer, updates en automatisch hardware-geoptimaliseerde modelselectie met valback-ondersteuning.
  • Efficiënte runtime: Voegt ongeveer 20 MB toe aan app-grootte, wordt uitgevoerd op apparaten van mobiele telefoons naar desktops.
  • OpenAI API-compatibiliteit: Eenvoudige integratie met OpenAI-modellen en -hulpprogramma's.
  • Optionele REST-server: Voer Foundry Local uit als een lokale service die toegankelijk is voor andere toepassingen.

Naslaginformatie voor C# SDK

Pakketten installeren

Als u op Windows ontwikkelt of verzendt, selecteert u het tabblad Windows. Het Windows-pakket kan worden geïntegreerd met de Windows ML runtime. Het biedt hetzelfde API-oppervlak met een grotere breedte van hardwareversnelling.

dotnet add package Microsoft.AI.Foundry.Local.WinML
dotnet add package OpenAI

De C#-voorbeelden in de GitHub opslagplaats zijn vooraf geconfigureerde projecten. Als u helemaal opnieuw bouwt, leest u de referentie voor de Local SDK van Foundry voor meer informatie over het instellen van uw C#-project met Foundry Local.

configuratie van Project

De voorbeeldopslagplaatsen bevatten een .csproj bestand waarmee platformdetectie automatisch wordt verwerkt. Als u een volledig nieuw project bouwt, gebruikt u deze configuratie als referentie:

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

In de volgende tabel worden de belangrijkste projectinstellingen uitgelegd:

Configuratie Beschrijving
TargetFramework Onder Windows zijn de doelen net9.0-windows10.0.26100 voor WinML-hardwareversnelling. Op andere platformen zijn de doelen net9.0.
WindowsAppSDKSelfContained Ingesteld op false om de door het systeem geïnstalleerde Windows App SDK te gebruiken in plaats van deze te bundelen.
WindowsPackageType Stel None in om te bouwen als een uitgepakte desktop-app (zonder MSIX-verpakking).
EnableCoreMrtTooling Stel in op false om de MRT Core-hulpprogramma's voor resources uit te schakelen, die niet nodig zijn voor console-apps.
RuntimeIdentifier Standaard ingesteld op de runtime-id van de huidige SDK, zodat de juiste binaire platformbestanden worden geselecteerd.
Microsoft.AI.Foundry.Local.WinML Windows alleen pakket dat WinML gebruikt voor hardwareversnelling en het beheer van automatische uitvoeringsproviders.
Microsoft.AI.Foundry.Local Platformoverschrijdend pakket voor macOS, Linux en Windows zonder WinML.
Microsoft.ML.OnnxRuntime.Gpu / OnnxRuntimeGenAI.Cuda Linux GPU-ondersteuningspakketten voor hardware met CUDA-functionaliteit.

Snelstart

Gebruik dit codefragment om te controleren of de SDK de lokale modelcatalogus kan initialiseren en openen.

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

In dit voorbeeld wordt het aantal modellen afgedrukt dat beschikbaar is voor uw hardware.

Voorbeelden

API-referentie

Systeemeigen audiotranscriptie-API

De C#SDK bevat een systeemeigen audioclient voor het transcriberen van audiobestanden op het apparaat met behulp van Whisper-modellen. Hiermee wordt deductie in-proces uitgevoerd zonder dat u de REST-webserver nodig hebt.

Een audioclient ophalen

Nadat u een Whisper-model hebt geladen, verkrijgt u een audioclient:

var audioClient = await model.GetAudioClientAsync();

Audio-transcriptiemethoden

Methode Signature Beschrijving
TranscribeAudioStreamingAsync() (string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> Streamtranscriptieresultaten chunk per segment. Elk segment heeft een Text eigenschap.

AudioClient-instellingen

Vastgoed Typ Beschrijving
Language string ISO 639-1-taalcode (bijvoorbeeld "en"). Verbetert de nauwkeurigheid.
Temperature float Bemonsteringstemperatuur (0,0–1,0). Lagere waarden zijn deterministischer.

Voorbeeld

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

Referenties:

JavaScript SDK Referentie

Pakketten installeren

Als u op Windows ontwikkelt of verzendt, selecteert u het tabblad Windows. Het Windows-pakket kan worden geïntegreerd met de Windows ML runtime. Het biedt hetzelfde API-oppervlak met een grotere breedte van hardwareversnelling.

npm install foundry-local-sdk-winml openai

Snelstart

Gebruik dit codefragment om te controleren of de SDK de lokale modelcatalogus kan initialiseren en openen.

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

In dit voorbeeld wordt de lijst met beschikbare modellen voor uw hardware uitgevoerd.

Voorbeelden

API-referentie

Verwijzingen

Python SDK Referentie

Pakketten installeren

Als u op Windows ontwikkelt of verzendt, selecteert u het tabblad Windows. Het Windows-pakket kan worden geïntegreerd met de Windows ML runtime. Het biedt hetzelfde API-oppervlak met een grotere breedte van hardwareversnelling.

pip install foundry-local-sdk-winml openai

Snelstart

Gebruik dit codefragment om te controleren of de SDK de lokale modelcatalogus kan initialiseren en openen.

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

In dit voorbeeld wordt het aantal modellen afgedrukt dat beschikbaar is voor uw hardware.

Voorbeelden

Configuratie

Met Configuration de klasse kunt u het SDK-gedrag aanpassen:

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"},
)
Kenmerk Typ Beschrijving
app_name str Naam van uw toepassing.
log_level str Logboekregistratieniveau (bijvoorbeeld "info", "debug").
model_cache_dir str Map voor modellen in cache.
web dict Webserviceconfiguratie met urls sleutel.

Kern-API

Methode Beschrijving
FoundryLocalManager.initialize(config) Initialiseer de singleton manager met een Configuration.
FoundryLocalManager.instance Verkrijg toegang tot het geïnitialiseerde managerexemplaar.
manager.catalog.list_models() Geef alle beschikbare modellen in de catalogus weer.
manager.catalog.get_model(alias) Een model ophalen via een alias.
manager.catalog.get_cached_models() Geef modellen weer in de lokale cache.
manager.catalog.get_loaded_models() Lijst met modellen die momenteel zijn geladen.
model.download(progress_callback) Download het model (slaat over als het in de cache is opgeslagen).
model.load() Laad het model voor inferentie.
model.unload() Laad het model uit.
model.is_cached Controleer of het model lokaal in de cache is opgeslagen.
model.is_loaded Controleer of het model is geladen.

API voor Native Chat-voltooieningen

Nadat u een model hebt geladen, haalt u een chatclient op:

client = model.get_chat_client()
Methode Beschrijving
client.complete_chat(messages) Genereer een volledig chatantwoord.
client.complete_streaming_chat(messages) Chatantwoordsegmenten streamen.

Systeemeigen audiotranscriptie-API

Nadat u een Whisper-model hebt geladen, verkrijgt u een audioclient:

audio_client = model.get_audio_client()
Methode Beschrijving
audio_client.transcribe(file_path) Een audiobestand transcriberen. Retourneert een object met een text eigenschap.

Referenties:

Referentie Rust-SDK

Pakketten installeren

Als u op Windows ontwikkelt of verzendt, selecteert u het tabblad Windows. Het Windows-pakket kan worden geïntegreerd met de Windows ML runtime. Het biedt hetzelfde API-oppervlak met een grotere breedte van hardwareversnelling.

cargo add foundry-local-sdk --features winml
cargo add tokio --features full
cargo add tokio-stream anyhow

Snelstart

Gebruik dit codefragment om te controleren of de SDK de lokale modelcatalogus kan initialiseren en openen.

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

In dit voorbeeld wordt het aantal modellen afgedrukt dat beschikbaar is voor uw hardware.

Voorbeelden

Configuratie

Met de FoundryLocalConfig struct kunt u het SDK-gedrag aanpassen:

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

Kern-API

Methode Beschrijving
FoundryLocalManager::create(config) Maak een nieuwe manager met een FoundryLocalConfig.
manager.catalog().get_models().await Geef alle beschikbare modellen weer.
manager.catalog().get_model(alias).await Een model ophalen via een alias.
manager.catalog().get_cached_models().await Geef modellen weer in de lokale cache.
manager.catalog().get_loaded_models().await Lijst met modellen die momenteel zijn geladen.
model.download(callback).await Download het model (slaat over als het in de cache is opgeslagen).
model.load().await Laad het model voor inferentie.
model.unload().await Laad het model uit.

API voor Native Chat-voltooieningen

Nadat u een model hebt geladen, maakt u een chatclient met optionele instellingen:

let client = model.create_chat_client()
    .temperature(0.7)
    .max_tokens(256);
Methode Beschrijving
client.complete_chat(&messages, tools).await Genereer een volledig chatantwoord.
client.complete_streaming_chat(&messages, tools).await Chatantwoordsegmenten streamen.

Berichttypen: ChatCompletionRequestSystemMessage, ChatCompletionRequestUserMessage, ChatCompletionRequestMessage.

Systeemeigen audiotranscriptie-API

Nadat u een Whisper-model hebt geladen, maakt u een audioclient:

let audio_client = model.create_audio_client();
Methode Beschrijving
audio_client.transcribe(file_path).await Een audiobestand transcriberen. Retourneert een object met een text veld.

Referenties: