Panduan migrasi SDK Lokal Foundry

Panduan ini menyediakan instruksi untuk memigrasikan kode Anda dari versi warisan SDK Lokal Foundry ke versi saat ini. SDK baru menghapus dependensi pada Foundry Local CLI dan oleh karena itu memungkinkan Anda untuk mengirim aplikasi Anda tanpa mengharuskan pengguna Anda menginstal CLI atau menyiapkan lingkungan Foundry lokal. SDK baru juga mencakup peningkatan API untuk kegunaan dan performa yang lebih baik.

Panduan Migrasi C# SDK

Untuk meningkatkan kemampuan Anda dalam mendistribusikan aplikasi menggunakan AI pada perangkat, ada perubahan besar pada arsitektur C# SDK dalam versi 0.8.0 dan yang lebih baru. Di bagian ini, kami menguraikan perubahan utama untuk membantu Anda memigrasikan aplikasi ke versi terbaru SDK.

Nota

Dalam versi SDK 0.8.0 dan yang lebih baru, ada perubahan besar dalam API dari versi sebelumnya (<=0.3.0).

Diagram berikut menunjukkan bagaimana arsitektur sebelumnya - untuk versi yang lebih lama dari 0.8.0 - sangat bergantung pada penggunaan server web REST untuk mengelola model dan inferensi seperti penyelesaian obrolan:

Diagram arsitektur sebelumnya untuk Foundry Local.

SDK akan menggunakan Remote Procedural Call (RPC) untuk menemukan Foundry Local CLI yang dapat dieksekusi pada komputer, memulai server web, lalu berkomunikasi dengannya melalui HTTP. Arsitektur ini memiliki beberapa batasan, termasuk:

  • Kompleksitas dalam mengelola siklus hidup server web.
  • Penyebaran yang menantang: Pengguna akhir harus menginstal Foundry Local CLI di komputer mereka dan aplikasi Anda.
  • Manajemen versi CLI dan SDK dapat menyebabkan masalah kompatibilitas.

Untuk mengatasi masalah ini, arsitektur yang dirancang ulang dalam versi 0.8.0 dan yang lebih baru menggunakan pendekatan yang lebih efisien. Arsitektur baru adalah sebagai berikut:

Diagram arsitektur baru untuk Foundry Local.

Dalam arsitektur baru ini:

  • Aplikasi Anda mandiri. Tidak mengharuskan Foundry Local CLI diinstal secara terpisah pada komputer pengguna akhir sehingga memudahkan Anda untuk menyebarkan aplikasi.
  • Server web REST bersifat opsional. Anda masih dapat menggunakan server web jika Anda ingin berintegrasi dengan alat lain yang berkomunikasi melalui HTTP. Baca Menggunakan penyelesaian obrolan melalui server REST dengan Foundry Local untuk detail tentang cara menggunakan fitur ini.
  • SDK memiliki dukungan asli untuk penyelesaian obrolan dan transkripsi audio, memungkinkan Anda membangun aplikasi AI percakapan dengan lebih sedikit dependensi. Baca API penyelesaian percakapan lokal asli Foundry untuk detail tentang cara menggunakan fitur ini.
  • Pada perangkat Windows, Anda dapat menggunakan build ML Windows yang menangani akselerasi perangkat keras untuk model pada perangkat dengan menggunakan runtime dan driver yang sesuai.

Perubahan API

Versi 0.8.0 dan yang lebih baru menyediakan API yang lebih berorientasi objek dan dapat dikomposisikan. Titik masuk utama tetap kelas FoundryLocalManager, tetapi alih-alih menjadi sekumpulan metode datar yang beroperasi melalui panggilan statis ke API HTTP stateless, SDK sekarang menyediakan metode pada instance FoundryLocalManager yang mempertahankan status tentang layanan dan model.

Primitif Versi < 0.8.0 >= Versi 0.8.0
Configuration N/A config = Configuration(...)
Dapatkan Manajer mgr = FoundryLocalManager(); await FoundryLocalManager.CreateAsync(config, logger);
var mgr = FoundryLocalManager.Instance;
Dapatkan Katalog N/A catalog = await mgr.GetCatalogAsync();
Mencantumkan Model mgr.ListCatalogModelsAsync(); catalog.ListModelsAsync();
Dapatkan Model mgr.GetModelInfoAsync("aliasOrModelId"); catalog.GetModelAsync(alias: "alias");
Dapatkan Varian N/A model.SelectedVariant;
Atur Varian N/A model.SelectVariant();
Unduh model mgr.DownloadModelAsync("aliasOrModelId"); model.DownloadAsync()
Memuat model mgr.LoadModelAsync("aliasOrModelId"); model.LoadAsync()
Membongkar model mgr.UnloadModelAsync("aliasOrModelId"); model.UnloadAsync()
Mencantumkan model yang dimuat mgr.ListLoadedModelsAsync(); catalog.GetLoadedModelsAsync();
Dapatkan jalur model N/A model.GetPathAsync()
Mulai layanan mgr.StartServiceAsync(); mgr.StartWebServerAsync();
Hentikan layanan mgr.StopServiceAsync(); mgr.StopWebServerAsync();
Lokasi cache mgr.GetCacheLocationAsync(); config.ModelCacheDir
Mencantumkan model yang di-cache mgr.ListCachedModelsAsync(); catalog.GetCachedModelsAsync();

API memungkinkan Foundry Local untuk lebih dapat dikonfigurasi melalui server web, pengelogan, lokasi cache, dan pilihan varian model. Misalnya, Configuration kelas memungkinkan Anda menyiapkan nama aplikasi, tingkat pengelogan, URL server web, dan direktori untuk data aplikasi, cache model, dan log:

var config = new Configuration
{
    AppName = "app-name",
    LogLevel = Microsoft.AI.Foundry.Local.LogLevel.Information,
    Web = new Configuration.WebService
    {
        Urls = "http://127.0.0.1:55588"
    },
    AppDataDir = "./foundry_local_data",
    ModelCacheDir = "{AppDataDir}/model_cache",
    LogsDir = "{AppDataDir}/logs"
};

Referensi API

Panduan Migrasi JavaScript SDK

Untuk meningkatkan kemampuan Anda dalam mengirim aplikasi menggunakan AI di perangkat, ada perubahan besar pada arsitektur JavaScript SDK. Di bagian ini, kami menguraikan perubahan utama untuk membantu Anda memigrasikan aplikasi ke versi terbaru SDK.

Nota

Dalam versi JavaScript SDK 0.9.0 dan yang lebih baru, ada perubahan signifikan dalam API dari versi sebelumnya (<=0.5.0).

Diagram berikut menunjukkan bagaimana arsitektur sebelumnya sangat bergantung pada penggunaan server web REST untuk mengelola model dan inferensi seperti penyelesaian obrolan:

Diagram arsitektur sebelumnya untuk Foundry Local.

SDK akan menggunakan Remote Procedural Call (RPC) untuk menemukan Foundry Local CLI yang dapat dieksekusi pada komputer, memulai server web, lalu berkomunikasi dengannya melalui HTTP. Arsitektur ini memiliki beberapa batasan, termasuk:

  • Kompleksitas dalam mengelola siklus hidup server web.
  • Penyebaran yang menantang: Pengguna akhir harus menginstal Foundry Local CLI di komputer mereka dan aplikasi Anda.
  • Manajemen versi CLI dan SDK dapat menyebabkan masalah kompatibilitas.

Untuk mengatasi masalah ini, arsitektur yang didesain ulang menggunakan pendekatan yang lebih efisien. Arsitektur baru adalah sebagai berikut:

Diagram arsitektur baru untuk Foundry Local.

Dalam arsitektur baru ini:

  • Aplikasi Anda mandiri. Tidak mengharuskan Foundry Local CLI diinstal secara terpisah pada komputer pengguna akhir sehingga memudahkan Anda untuk menyebarkan aplikasi.
  • Server web REST bersifat opsional. Anda masih dapat menggunakan server web jika Anda ingin berintegrasi dengan alat lain yang berkomunikasi melalui HTTP.
  • SDK memiliki dukungan asli untuk penyelesaian obrolan dan transkripsi audio, memungkinkan Anda membangun aplikasi AI percakapan dengan lebih sedikit dependensi.

Perubahan API

Versi terbaru menyediakan API yang lebih berorientasi objek dan dapat dikomposit. Titik masuk utama tetap kelas FoundryLocalManager, tetapi alih-alih menjadi sekumpulan metode datar yang beroperasi melalui panggilan statis ke API HTTP stateless, SDK sekarang menyediakan metode pada instance FoundryLocalManager yang mempertahankan status tentang layanan dan model.

Primitif Versi Sebelumnya Versi Saat Ini
Configuration N/A config = { appName: "app-name", ... }
Dapatkan Manajer mgr = new FoundryLocalManager(); mgr = FoundryLocalManager.create(config);
Dapatkan Katalog N/A catalog = mgr.catalog;
Mencantumkan Model mgr.listCatalogModels(); catalog.getModels();
Dapatkan Model mgr.getModelInfo("aliasOrModelId"); catalog.getModel(alias);
Dapatkan Varian N/A model.id;
Atur Varian N/A model.selectVariant(modelId);
Unduh model mgr.downloadModel("aliasOrModelId"); model.download();
Memuat model mgr.loadModel("aliasOrModelId"); model.load();
Membongkar model mgr.unloadModel("aliasOrModelId"); model.unload();
Mencantumkan model yang dimuat mgr.listLoadedModels(); catalog.getLoadedModels();
Dapatkan jalur model N/A model.path;
Mulai layanan mgr.startService(); mgr.startWebService();
Hentikan layanan N/A mgr.stopWebService();
Lokasi cache mgr.getCacheLocation(); config.modelCacheDir
Mencantumkan model yang di-cache mgr.listCachedModels(); catalog.getCachedModels();

API memungkinkan Foundry Local untuk lebih dapat dikonfigurasi melalui server web, pengelogan, lokasi cache, dan pilihan varian model. Misalnya, config memungkinkan Anda menyiapkan nama aplikasi, tingkat pengelogan, URL server web, dan direktori untuk data aplikasi, cache model, dan log:

const config = {
  appName: "app-name",
  logLevel: "info",
  webServiceUrls: "http://127.0.0.1:55588",
  appDataDir: "./foundry_local_data",
  modelCacheDir: "{appDataDir}/model_cache",
  logsDir: "{appDataDir}/logs",
};

Dalam versi SDK Foundry Local JavaScript sebelumnya, Anda tidak dapat mengonfigurasi pengaturan ini secara langsung melalui SDK, yang membatasi kemampuan Anda untuk menyesuaikan perilaku layanan.

Referensi

Panduan Migrasi SDK Python

Untuk meningkatkan kemampuan Anda dalam mengirim aplikasi menggunakan AI di perangkat, ada perubahan besar pada arsitektur SDK Python. Di bagian ini, kami menguraikan perubahan utama untuk membantu Anda memigrasikan aplikasi ke versi terbaru SDK.

Nota

Dalam versi SDK Python terbaru (1.0.0), ada perubahan yang mengakibatkan ketidakcocokan dalam API dari versi sebelumnya (<=0.5.1).

Diagram berikut menunjukkan bagaimana arsitektur sebelumnya sangat bergantung pada penggunaan server web REST untuk mengelola model dan inferensi seperti penyelesaian obrolan:

Diagram arsitektur sebelumnya untuk Foundry Local.

SDK akan menggunakan Remote Procedural Call (RPC) untuk menemukan Foundry Local CLI yang dapat dieksekusi pada komputer, memulai server web, lalu berkomunikasi dengannya melalui HTTP. Arsitektur ini memiliki beberapa batasan, termasuk:

  • Kompleksitas dalam mengelola siklus hidup server web.
  • Penyebaran yang menantang: Pengguna akhir harus menginstal Foundry Local CLI di komputer mereka dan aplikasi Anda.
  • Manajemen versi CLI dan SDK dapat menyebabkan masalah kompatibilitas.

Untuk mengatasi masalah ini, arsitektur yang didesain ulang menggunakan pendekatan yang lebih efisien. Arsitektur baru adalah sebagai berikut:

Diagram arsitektur baru untuk Foundry Local.

Dalam arsitektur baru ini:

  • Aplikasi Anda mandiri. Tidak mengharuskan Foundry Local CLI diinstal secara terpisah pada komputer pengguna akhir sehingga memudahkan Anda untuk menyebarkan aplikasi.
  • Server web REST bersifat opsional. Anda masih dapat menggunakan server web jika Anda ingin berintegrasi dengan alat lain yang berkomunikasi melalui HTTP.
  • SDK memiliki dukungan asli untuk penyelesaian obrolan dan transkripsi audio, memungkinkan Anda membangun aplikasi AI percakapan dengan lebih sedikit dependensi.

Perubahan API

Versi terbaru menyediakan API yang lebih berorientasi objek dan dapat dikomposit. Titik masuk utama terus menjadi FoundryLocalManager kelas, tetapi pola inisialisasi, manajemen model, dan inferensi semuanya telah berubah secara signifikan.

Primitif Versi Sebelumnya (foundry-local) Versi Saat Ini (foundry-local-sdk)
Paket pip install foundry-local pip install foundry-local-sdk
Mengimpor from foundry_local import FoundryLocalManager from foundry_local_sdk import Configuration, FoundryLocalManager
Configuration N/A config = Configuration(app_name="app-name")
Dapatkan Manajer manager = FoundryLocalManager(alias) FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
Dapatkan Katalog N/A catalog = manager.catalog
Mencantumkan Model manager.list_catalog_models() catalog.list_models()
Dapatkan Model manager.get_model_info(alias) catalog.get_model(alias)
Unduh model manager.download_model(alias) model.download(progress_callback)
Memuat model manager.load_model(alias) model.load()
Membongkar model manager.unload_model(alias) model.unload()
Mencantumkan model yang dimuat manager.list_loaded_models() catalog.get_loaded_models()
Mencantumkan model yang di-cache manager.list_cached_models() catalog.get_cached_models()
Lokasi cache manager.get_cache_location() config.model_cache_dir
Mulai layanan manager.start_service() manager.start_web_service()
Titik akhir layanan manager.endpoint manager.urls

API memungkinkan Foundry Local untuk lebih dapat dikonfigurasi melalui server web, pengelogan, lokasi cache, dan pilihan varian model. Misalnya, Configuration kelas memungkinkan Anda menyiapkan nama aplikasi, tingkat pengelogan, URL server web, dan direktori untuk data aplikasi, cache model, dan log:

from foundry_local_sdk import Configuration

config = Configuration(
    app_name="app-name",
    log_level="info",
    web={"urls": "http://127.0.0.1:55588"},
    model_cache_dir="./foundry_local_data/model_cache",
)

Referensi

Panduan Migrasi SDK Rust

Untuk meningkatkan kemampuan Anda dalam mengirim aplikasi menggunakan AI di perangkat, ada perubahan besar pada arsitektur Rust SDK. Di bagian ini, kami menguraikan perubahan utama untuk membantu Anda memigrasikan aplikasi ke versi terbaru SDK.

Nota

Dalam versi terbaru Rust SDK (1.0.0), terdapat perubahan yang dapat merusak kompatibilitas pada API dari versi sebelumnya. Nama peti telah berubah dari foundry-local menjadi foundry-local-sdk.

Diagram berikut menunjukkan bagaimana arsitektur sebelumnya sangat bergantung pada penggunaan server web REST untuk mengelola model dan inferensi seperti penyelesaian obrolan:

Diagram arsitektur sebelumnya untuk Foundry Local.

SDK akan menggunakan Remote Procedural Call (RPC) untuk menemukan Foundry Local CLI yang dapat dieksekusi pada komputer, memulai server web, dan kemudian berkomunikasi dengannya melalui HTTP. Arsitektur ini memiliki beberapa batasan, termasuk:

  • Kompleksitas dalam mengelola siklus hidup server web.
  • Penyebaran yang menantang: Pengguna akhir harus menginstal Foundry Local CLI di komputer mereka dan aplikasi Anda.
  • Manajemen versi CLI dan SDK dapat menyebabkan masalah kompatibilitas.

Untuk mengatasi masalah ini, arsitektur yang didesain ulang menggunakan pendekatan yang lebih efisien. Arsitektur baru adalah sebagai berikut:

Diagram arsitektur baru untuk Foundry Local.

Dalam arsitektur baru ini:

  • Aplikasi Anda mandiri. Tidak mengharuskan Foundry Local CLI diinstal secara terpisah pada komputer pengguna akhir sehingga memudahkan Anda untuk menyebarkan aplikasi.
  • Server web REST bersifat opsional. Anda masih dapat menggunakan server web jika Anda ingin berintegrasi dengan alat lain yang berkomunikasi melalui HTTP.
  • SDK memiliki dukungan asli untuk penyelesaian obrolan dan transkripsi audio, memungkinkan Anda membangun aplikasi AI percakapan dengan lebih sedikit dependensi.

Perubahan API

Versi terbaru menyediakan API yang lebih berorientasi objek dan dapat dikomposit. Pola penyusun telah diganti dengan pendekatan berbasis konfigurasi, dan manajemen model sekarang menggunakan objek khusus Model .

Primitif Versi Sebelumnya (foundry-local) Versi Saat Ini (foundry-local-sdk)
Peti foundry-local foundry-local-sdk
Configuration N/A FoundryLocalConfig::new("app-name")
Dapatkan Manajer FoundryLocalManager::builder().build().await? FoundryLocalManager::create(config)?
Dapatkan Katalog N/A manager.catalog()
Mencantumkan Model manager.list_catalog_models().await? manager.catalog().get_models().await?
Dapatkan Model manager.get_model_info(alias).await? manager.catalog().get_model(alias).await?
Unduh model manager.download_model(alias).await? model.download(callback).await?
Memuat model manager.load_model(alias).await? model.load().await?
Membongkar model manager.unload_model(alias).await? model.unload().await?
Mencantumkan model yang dimuat manager.list_loaded_models().await? manager.catalog().get_loaded_models().await?
Mencantumkan model yang di-cache manager.list_cached_models().await? manager.catalog().get_cached_models().await?
Mulai layanan manager.start_service()? manager.start_web_service().await?
Titik Akhir manager.endpoint()? manager.urls()
Panggilan HTTP reqwest::Client (REST manual) SDK asli: model.create_chat_client()

SDK baru menyediakan klien obrolan dan audio asli, menghilangkan kebutuhan akan permintaan HTTP manual dalam banyak kasus:

use foundry_local_sdk::{FoundryLocalConfig, FoundryLocalManager};

let config = FoundryLocalConfig::new("app-name");
let manager = FoundryLocalManager::create(config)?;

let model = manager.catalog().get_model("qwen2.5-0.5b").await?;
model.download(None).await?;
model.load().await?;

// Native chat client - no HTTP server needed
let client = model.create_chat_client().temperature(0.7).max_tokens(256);

Referensi