Bagikan melalui


Referensi SDK Lokal Foundry

Foundry Local SDK memungkinkan Anda untuk mengirim fitur AI dalam aplikasi Anda yang mampu menggunakan model AI lokal melalui API sederhana dan intuitif. SDK mengabstraksi kompleksitas pengelolaan model AI dan memberikan pengalaman yang mulus untuk mengintegrasikan kemampuan AI lokal ke dalam aplikasi Anda. Referensi ini men dokumen implementasi SDK untuk C#, JavaScript, Python, dan Rust.

SDK tidak mengharuskan Foundry Local CLI diinstal pada komputer pengguna akhir, memungkinkan Anda untuk mengirim aplikasi Anda tanpa langkah-langkah penyiapan tambahan untuk pengguna Anda - aplikasi Anda mandiri. Manfaat tambahan dari Foundry Local SDK meliputi:

  • Deteksi dan pengoptimalan perangkat keras: Penilaian kemampuan otomatis untuk GPU, NPU, dan CPU.
  • Manajemen penyedia eksekusi (Windows): Pengunduhan dan pendaftaran otomatis penyedia eksekusi ONNX Runtime yang sesuai (CUDA, Vitis, QNN, OpenVINO, TensorRT) berdasarkan kemampuan perangkat.
  • Dukungan logam melalui WebGpu (macOS): Dukungan asli untuk menjalankan model di Apple Silicon dengan performa yang dioptimalkan.
  • Akuisisi model: Unduhan tanpa hambatan dari Foundry Model Catalog dengan penerapan versi, pembaruan, dan pemilihan model yang dioptimalkan perangkat keras secara otomatis dengan dukungan fallback.
  • Runtime yang efisien: Menambahkan sekitar 20 MB ke ukuran aplikasi, berjalan pada perangkat dari ponsel ke desktop.
  • Kompatibilitas OPENAI API: Integrasi mudah dengan model dan alat OpenAI.
  • Server REST opsional: Jalankan Foundry Local sebagai layanan lokal yang dapat diakses oleh aplikasi lain.

Referensi C# SDK

Memasang paket

Jika Anda mengembangkan atau mengirim di Windows, pilih tab Windows. Paket Windows terintegrasi dengan runtime Windows ML — ini menyediakan area permukaan API yang sama dengan luas akselerasi perangkat keras yang lebih luas.

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

Sampel C# di repositori GitHub adalah proyek yang telah dikonfigurasi sebelumnya. Jika Anda membangun dari awal, Anda harus membaca referensi Foundry Local SDK untuk detail selengkapnya tentang cara menyiapkan proyek C# Anda dengan Foundry Local.

konfigurasi proyek

Repositori sampel menyertakan .csproj file yang menangani deteksi platform secara otomatis. Jika Anda membangun proyek dari awal, gunakan konfigurasi ini sebagai referensi:

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

Tabel berikut menjelaskan pengaturan proyek utama:

Setting Deskripsi
TargetFramework Pada Windows, target net9.0-windows10.0.26100 untuk akselerasi perangkat keras WinML. Pada platform lain, target net9.0.
WindowsAppSDKSelfContained Atur ke false untuk menggunakan SDK Aplikasi Windows yang diinstal sistem daripada menggabungkannya.
WindowsPackageType Atur ke None untuk membangun sebagai aplikasi desktop yang tidak dikemas (tanpa kemasan MSIX).
EnableCoreMrtTooling Atur ke false untuk menonaktifkan alat sumber daya MRT Core, yang tidak diperlukan untuk aplikasi konsol.
RuntimeIdentifier Default ke pengidentifikasi runtime SDK saat ini, memastikan biner platform yang benar dipilih.
Microsoft.AI.Foundry.Local.WinML paket Windows-saja yang menggunakan WinML untuk akselerasi perangkat keras dan manajemen penyedia eksekusi otomatis.
Microsoft.AI.Foundry.Local Paket lintas platform untuk macOS, Linux, dan Windows tanpa WinML.
Microsoft.ML.OnnxRuntime.Gpu / OnnxRuntimeGenAI.Cuda Paket dukungan GPU Linux untuk perangkat keras yang mendukung CUDA.

Mulai Cepat

Gunakan cuplikan ini untuk memverifikasi bahwa SDK dapat menginisialisasi dan mengakses katalog model lokal.

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

Contoh ini mencetak jumlah model yang tersedia untuk perangkat keras Anda.

Samples

Referensi API

API Transkripsi Audio Asli

C# SDK menyertakan klien audio bawaan untuk mentranskripsi file audio di perangkat menggunakan model Whisper. Ini menjalankan inferensi dalam proses tanpa memerlukan server web REST.

Dapatkan klien perangkat lunak audio

Setelah memuat model Whisper, dapatkan klien audio:

var audioClient = await model.GetAudioClientAsync();

Metode transkripsi audio

Metode Signature Deskripsi
TranscribeAudioStreamingAsync() (string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> Mengalirkan hasil transkripsi sepotong demi sepotong. Setiap gugus memiliki properti Text.

Pengaturan AudioClient

Harta benda Tipe Deskripsi
Language string Kode bahasa ISO 639-1 (misalnya, "en"). Meningkatkan akurasi.
Temperature float Suhu pengambilan sampel (0,0–1,0). Nilai yang lebih rendah lebih deterministik.

Example

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

Referensi:

Referensi JavaScript SDK

Memasang paket

Jika Anda mengembangkan atau mengirim di Windows, pilih tab Windows. Paket Windows terintegrasi dengan runtime Windows ML — ini menyediakan area permukaan API yang sama dengan luas akselerasi perangkat keras yang lebih luas.

npm install foundry-local-sdk-winml openai

Mulai Cepat

Gunakan cuplikan ini untuk memverifikasi bahwa SDK dapat menginisialisasi dan mengakses katalog model lokal.

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

Contoh ini menghasilkan daftar model yang tersedia untuk perangkat keras Anda.

Samples

  • Untuk aplikasi sampel yang menunjukkan cara menggunakan Foundry Local JavaScript SDK, lihat Sampel SDK JavaScript Lokal Foundry GitHub repositori.

Referensi API

Referensi

Referensi SDK Python

Memasang paket

Jika Anda mengembangkan atau mengirim di Windows, pilih tab Windows. Paket Windows terintegrasi dengan runtime Windows ML — ini menyediakan area permukaan API yang sama dengan luas akselerasi perangkat keras yang lebih luas.

pip install foundry-local-sdk-winml openai

Mulai Cepat

Gunakan cuplikan ini untuk memverifikasi bahwa SDK dapat menginisialisasi dan mengakses katalog model lokal.

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

Contoh ini mencetak jumlah model yang tersedia untuk perangkat keras Anda.

Samples

  • Untuk aplikasi sampel yang menunjukkan cara menggunakan Foundry Local Python SDK, lihat sampel SDK Lokal Foundry GitHub repositori.

Konfigurasi

Kelas ini Configuration memungkinkan Anda untuk menyesuaikan perilaku 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"},
)
Parameter Tipe Deskripsi
app_name str Nama aplikasi Anda.
log_level str Tingkat pengelogan (misalnya, "info", "debug").
model_cache_dir str Direktori untuk model yang di-cache.
web dict Konfigurasi layanan web dengan urls kunci.

API Inti

Metode Deskripsi
FoundryLocalManager.initialize(config) Inisialisasi manajer singleton dengan Configuration.
FoundryLocalManager.instance Akses instans manajer yang diinisialisasi.
manager.catalog.list_models() Cantumkan semua model yang tersedia di katalog.
manager.catalog.get_model(alias) Dapatkan model dengan alias.
manager.catalog.get_cached_models() Mencantumkan model di cache lokal.
manager.catalog.get_loaded_models() Daftar model yang saat ini dimuat.
model.download(progress_callback) Unduh model (lompati jika di-cache).
model.load() Muat model untuk inferensi.
model.unload() Membongkar model.
model.is_cached Periksa apakah model di-cache secara lokal.
model.is_loaded Periksa apakah model dimuat.

API Penyelesaian Obrolan Bawaan

Setelah memuat model, dapatkan klien obrolan:

client = model.get_chat_client()
Metode Deskripsi
client.complete_chat(messages) Hasilkan respons obrolan lengkap.
client.complete_streaming_chat(messages) Streaming potongan respons obrolan.

API Transkripsi Audio Asli

Setelah memuat model Whisper, dapatkan klien audio:

audio_client = model.get_audio_client()
Metode Deskripsi
audio_client.transcribe(file_path) Mentranskripsikan file audio. Mengembalikan objek dengan properti text.

Referensi:

Referensi SDK Rust

Memasang paket

Jika Anda mengembangkan atau mengirim di Windows, pilih tab Windows. Paket Windows terintegrasi dengan runtime Windows ML — ini menyediakan area permukaan API yang sama dengan luas akselerasi perangkat keras yang lebih luas.

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

Mulai Cepat

Gunakan cuplikan ini untuk memverifikasi bahwa SDK dapat menginisialisasi dan mengakses katalog model lokal.

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

Contoh ini mencetak jumlah model yang tersedia untuk perangkat keras Anda.

Samples

  • Untuk aplikasi sampel yang menunjukkan cara menggunakan Foundry Local Rust SDK, lihat repositori GitHub Foundry Local SDK Samples.

Konfigurasi

Struct FoundryLocalConfig memungkinkan Anda untuk menyesuaikan perilaku 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 Inti

Metode Deskripsi
FoundryLocalManager::create(config) Buat manajer baru dengan FoundryLocalConfig.
manager.catalog().get_models().await Mencantumkan semua model yang tersedia.
manager.catalog().get_model(alias).await Dapatkan model dengan alias.
manager.catalog().get_cached_models().await Mencantumkan model di cache lokal.
manager.catalog().get_loaded_models().await Daftar model yang saat ini dimuat.
model.download(callback).await Unduh model (lompati jika di-cache).
model.load().await Muat model untuk inferensi.
model.unload().await Membongkar model.

API Penyelesaian Obrolan Bawaan

Setelah memuat model, buat klien obrolan dengan pengaturan opsional:

let client = model.create_chat_client()
    .temperature(0.7)
    .max_tokens(256);
Metode Deskripsi
client.complete_chat(&messages, tools).await Hasilkan respons obrolan lengkap.
client.complete_streaming_chat(&messages, tools).await Streaming potongan respons obrolan.

Jenis pesan: ChatCompletionRequestSystemMessage, ChatCompletionRequestUserMessage, ChatCompletionRequestMessage.

API Transkripsi Audio Asli

Setelah memuat model Whisper, buat klien audio:

let audio_client = model.create_audio_client();
Metode Deskripsi
audio_client.transcribe(file_path).await Mentranskripsikan file audio. Mengembalikan objek dengan text field.

Referensi: