共用方式為


Foundry 本地 SDK 遷移指南

本指南提供將程式碼從舊版 Foundry Local SDK 遷移到目前版本的指引。 新 SDK 移除了對 Foundry 本地 CLI 的依賴,因此讓您能在不需使用者安裝 CLI 或設定本地 Foundry 環境的情況下,直接發佈應用程式。 新 SDK 也對 API 進行了改進,以提升可用性與效能。

C# SDK 遷移指南

為了提升你使用裝置 AI 發佈應用程式的能力,C# SDK 的架構在版本 0.8.0 及之後版本中進行了重大變更。 在本節中,我們將概述主要變更,幫助您將應用程式遷移到最新版本的 SDK。

備註

在 SDK 版本 0.8.0 及之後,API 與先前版本<=0.3.0有破壞性的變更()。

下圖展示了先前架構—在更早 0.8.0 版本中 —如何大量依賴使用 REST 網頁伺服器來管理模型與推論,例如聊天完成:

Foundry Local 先前架構示意圖。

SDK 會使用遠端程序呼叫(RPC)在機器上尋找 Foundry Local CLI 執行檔,啟動網頁伺服器,然後透過 HTTP 與它通訊。 此架構存在多項限制,包括:

  • 管理網頁伺服器生命週期的複雜性。
  • 部署困難:終端使用者必須在他們的機器應用程式上安裝 Foundry Local CLI。
  • CLI 與 SDK 的版本管理可能導致相容性問題。

為了解決這些問題,重新設計的 0.8.0 架構版本及後續版本採用了更精簡的方法。 新架構如下:

Foundry Local 新架構示意圖。

在這個新架構中:

  • 你的應用程式是自給自足的。 它不需要將 Foundry 本地 CLI 單獨安裝在終端使用者的機器上,讓你更容易部署應用程式。
  • REST 網頁伺服器是 可選的。 如果你想和其他透過 HTTP 通訊的工具整合,仍然可以使用網頁伺服器。 請閱讀「透過 REST 伺服器使用 Foundry Local 進行聊天補全」的詳細資訊,了解如何使用此功能。
  • SDK 原生 支援聊天完成與音訊轉錄,讓您能以較少依賴建立對話式 AI 應用程式。 請參閱 Use Foundry Local 本地聊天完成 API 以了解如何使用此功能。
  • 在 Windows 裝置上,你可以使用 Windows 的機器學習版本,透過引入正確的執行時和驅動程式來處理裝置上模型的硬體加速

API 變更

版本 0.8.0 及以後的版本提供更物件導式且可組合的 API。 主要入口仍然是類別FoundryLocalManager,但現在不再是一組以靜態方式呼叫無狀態 HTTP API 的方法。SDK 現在會在FoundryLocalManager實例上,暴露用於維護服務與模型狀態的方法。

原始 版本 < 0.8.0 版本 >等於 0.8.0
Configuration 不適用 config = Configuration(...)
取得管理員 mgr = FoundryLocalManager(); await FoundryLocalManager.CreateAsync(config, logger);
var mgr = FoundryLocalManager.Instance;
取得目錄 不適用 catalog = await mgr.GetCatalogAsync();
車型列表 mgr.ListCatalogModelsAsync(); catalog.ListModelsAsync();
取得模型 mgr.GetModelInfoAsync("aliasOrModelId"); catalog.GetModelAsync(alias: "alias");
取得變體 不適用 model.SelectedVariant;
設定變體 不適用 model.SelectVariant();
下載模型 mgr.DownloadModelAsync("aliasOrModelId"); model.DownloadAsync()
載入模型 mgr.LoadModelAsync("aliasOrModelId"); model.LoadAsync()
卸載模型 mgr.UnloadModelAsync("aliasOrModelId"); model.UnloadAsync()
清單載入模型 mgr.ListLoadedModelsAsync(); catalog.GetLoadedModelsAsync();
取得模型路徑 不適用 model.GetPathAsync()
開始營運 mgr.StartServiceAsync(); mgr.StartWebServerAsync();
停止服務 mgr.StopServiceAsync(); mgr.StopWebServerAsync();
快取位置 mgr.GetCacheLocationAsync(); config.ModelCacheDir
快取模型列表 mgr.ListCachedModelsAsync(); catalog.GetCachedModelsAsync();

API 讓 Foundry Local 在網頁伺服器、日誌記錄、快取位置及型號變體選擇上更具可配置性。 例如,這個 Configuration 類別允許你設定應用程式名稱、日誌層級、網頁伺服器網址,以及應用程式資料、模型快取和日誌的目錄:

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

API 參考資料

JavaScript SDK 遷移指南

為了提升您使用裝置 AI 發佈應用程式的能力,JavaScript SDK 的架構有重大變更。 在本節中,我們將概述主要變更,幫助您將應用程式遷移到最新版本的 SDK。

備註

在 JavaScript SDK 版本 0.9.0 及之後,API 與先前版本 <=0.5.0 有重大變更。

下圖顯示先前的架構如何大量依賴使用 REST 網路伺服器來管理推論模型與推論過程,例如聊天補全:

Foundry Local 先前架構示意圖。

SDK 會使用遠端程序呼叫(RPC)在機器上尋找 Foundry Local CLI 執行檔,啟動網頁伺服器,然後透過 HTTP 與它通訊。 此架構存在多項限制,包括:

  • 管理網頁伺服器生命週期的複雜性。
  • 部署困難:終端使用者必須在他們的機器應用程式上安裝 Foundry Local CLI。
  • CLI 與 SDK 的版本管理可能導致相容性問題。

為了解決這些問題,重新設計的架構採用了更精簡的方法。 新架構如下:

Foundry Local 新架構示意圖。

在這個新架構中:

  • 你的應用程式是自給自足的。 它不需要將 Foundry 本地 CLI 單獨安裝在終端使用者的機器上,讓你更容易部署應用程式。
  • REST 網頁伺服器是 可選的。 如果你想和其他透過 HTTP 通訊的工具整合,仍然可以使用網頁伺服器。
  • SDK 原生 支援聊天完成與音訊轉錄,讓您能以較少依賴建立對話式 AI 應用程式。

API 變更

最新版本提供了更物件導向且可組合的 API。 主要入口仍然是類別FoundryLocalManager,但現在不再是一組以靜態方式呼叫無狀態 HTTP API 的方法。SDK 現在會在FoundryLocalManager實例上,暴露用於維護服務與模型狀態的方法。

原始 先前版本 目前的版本
Configuration 不適用 config = { appName: "app-name", ... }
取得管理員 mgr = new FoundryLocalManager(); mgr = FoundryLocalManager.create(config);
取得目錄 不適用 catalog = mgr.catalog;
車型列表 mgr.listCatalogModels(); catalog.getModels();
取得模型 mgr.getModelInfo("aliasOrModelId"); catalog.getModel(alias);
取得變體 不適用 model.id;
設定變體 不適用 model.selectVariant(modelId);
下載模型 mgr.downloadModel("aliasOrModelId"); model.download();
載入模型 mgr.loadModel("aliasOrModelId"); model.load();
卸載模型 mgr.unloadModel("aliasOrModelId"); model.unload();
清單載入模型 mgr.listLoadedModels(); catalog.getLoadedModels();
取得模型路徑 不適用 model.path;
開始營運 mgr.startService(); mgr.startWebService();
停止服務 不適用 mgr.stopWebService();
快取位置 mgr.getCacheLocation(); config.modelCacheDir
快取模型列表 mgr.listCachedModels(); catalog.getCachedModels();

API 讓 Foundry Local 在網頁伺服器、日誌記錄、快取位置及型號變體選擇上更具可配置性。 例如,允許 config 你設定應用程式名稱、日誌層級、網頁伺服器網址,以及應用程式資料、模型快取和日誌的目錄:

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",
};

在先前版本的 Foundry Local JavaScript SDK 中,你無法直接透過 SDK 設定這些設定,這限制了你自訂服務行為的能力。

參考資料

Python SDK 遷移指南

為了提升使用裝置 AI 發佈應用程式的能力,Python SDK 架構做了重大變更。 在本節中,我們將概述主要變更,幫助您將應用程式遷移到最新版本的 SDK。

備註

在最新的 Python SDK 版本(1.0.0)中,API 與先前版本(<=0.5.1)有破壞性變更。

下圖顯示先前的架構如何大量依賴使用 REST 網路伺服器來管理推論模型與推論過程,例如聊天補全:

Foundry Local 先前架構示意圖。

SDK 會使用遠端程序呼叫(RPC)在機器上尋找 Foundry Local CLI 執行檔,啟動網頁伺服器,然後透過 HTTP 與它通訊。 此架構存在多項限制,包括:

  • 管理網頁伺服器生命週期的複雜性。
  • 部署困難:終端使用者必須在他們的機器應用程式上安裝 Foundry Local CLI。
  • CLI 與 SDK 的版本管理可能導致相容性問題。

為了解決這些問題,重新設計的架構採用了更精簡的方法。 新架構如下:

Foundry Local 新架構示意圖。

在這個新架構中:

  • 你的應用程式是自給自足的。 它不需要將 Foundry 本地 CLI 單獨安裝在終端使用者的機器上,讓你更容易部署應用程式。
  • REST 網頁伺服器是 可選的。 如果你想和其他透過 HTTP 通訊的工具整合,仍然可以使用網頁伺服器。
  • SDK 原生 支援聊天完成與音訊轉錄,讓您能以較少依賴建立對話式 AI 應用程式。

API 變更

最新版本提供了更物件導向且可組合的 API。 主要的入口仍然是類別, FoundryLocalManager 但初始化模式、模型管理與推論都已大幅改變。

原始 先前版本(foundry-local 現行版本(foundry-local-sdk
套件 pip install foundry-local pip install foundry-local-sdk
匯入 from foundry_local import FoundryLocalManager from foundry_local_sdk import Configuration, FoundryLocalManager
Configuration 不適用 config = Configuration(app_name="app-name")
取得管理員 manager = FoundryLocalManager(alias) FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
取得目錄 不適用 catalog = manager.catalog
車型列表 manager.list_catalog_models() catalog.list_models()
取得模型 manager.get_model_info(alias) catalog.get_model(alias)
下載模型 manager.download_model(alias) model.download(progress_callback)
載入模型 manager.load_model(alias) model.load()
卸載模型 manager.unload_model(alias) model.unload()
清單載入模型 manager.list_loaded_models() catalog.get_loaded_models()
快取模型列表 manager.list_cached_models() catalog.get_cached_models()
快取位置 manager.get_cache_location() config.model_cache_dir
開始營運 manager.start_service() manager.start_web_service()
服務端點 manager.endpoint manager.urls

API 讓 Foundry Local 在網頁伺服器、日誌記錄、快取位置及型號變體選擇上更具可配置性。 例如,這個 Configuration 類別允許你設定應用程式名稱、日誌層級、網頁伺服器網址,以及應用程式資料、模型快取和日誌的目錄:

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

參考資料

Rust SDK 遷移指南

為了提升你使用裝置 AI 發佈應用程式的能力,Rust SDK 的架構做了重大變更。 在本節中,我們將概述主要變更,幫助您將應用程式遷移到最新版本的 SDK。

備註

在最新的 Rust SDK 版本(1.0.0),API 與前一版本相比有破壞性的變更。 包名稱已從 foundry-local 改為 foundry-local-sdk

下圖顯示先前的架構如何大量依賴使用 REST 網路伺服器來管理推論模型與推論過程,例如聊天補全:

Foundry Local 先前架構示意圖。

SDK 會使用遠端程序呼叫(RPC)來尋找機器上的 Foundry 本地 CLI 執行檔,啟動網頁伺服器,然後透過 HTTP 與之通訊。 此架構存在多項限制,包括:

  • 管理網頁伺服器生命週期的複雜性。
  • 部署困難:終端使用者必須在他們的機器應用程式上安裝 Foundry Local CLI。
  • CLI 與 SDK 的版本管理可能導致相容性問題。

為了解決這些問題,重新設計的架構採用了更精簡的方法。 新架構如下:

Foundry Local 新架構示意圖。

在這個新架構中:

  • 你的應用程式是自給自足的。 它不需要將 Foundry 本地 CLI 單獨安裝在終端使用者的機器上,讓你更容易部署應用程式。
  • REST 網頁伺服器是 可選的。 如果你想和其他透過 HTTP 通訊的工具整合,仍然可以使用網頁伺服器。
  • SDK 原生 支援聊天完成與音訊轉錄,讓您能以較少依賴建立對話式 AI 應用程式。

API 變更

最新版本提供了更物件導向且可組合的 API。 建構模式已被基於配置的方式取代,模型管理現在使用專用 Model 物件。

原始 先前版本(foundry-local 現行版本(foundry-local-sdk
籠子 foundry-local foundry-local-sdk
Configuration 不適用 FoundryLocalConfig::new("app-name")
取得管理員 FoundryLocalManager::builder().build().await? FoundryLocalManager::create(config)?
取得目錄 不適用 manager.catalog()
車型列表 manager.list_catalog_models().await? manager.catalog().get_models().await?
取得模型 manager.get_model_info(alias).await? manager.catalog().get_model(alias).await?
下載模型 manager.download_model(alias).await? model.download(callback).await?
載入模型 manager.load_model(alias).await? model.load().await?
卸載模型 manager.unload_model(alias).await? model.unload().await?
清單載入模型 manager.list_loaded_models().await? manager.catalog().get_loaded_models().await?
快取模型列表 manager.list_cached_models().await? manager.catalog().get_cached_models().await?
開始營運 manager.start_service()? manager.start_web_service().await?
端點 manager.endpoint()? manager.urls()
HTTP 呼叫 reqwest::Client (手動休止) 原生 SDK: model.create_chat_client()

新 SDK 提供原生聊天與音訊用戶端,在大多數情況下免除了手動 HTTP 請求的需求:

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

參考資料