Průvodce migrací sady Foundry Local SDK

Tato příručka obsahuje pokyny pro migraci kódu ze starší verze sady Foundry Local SDK na aktuální verzi. Nová sada SDK odebere závislost na rozhraní příkazového řádku Foundry Local CLI, takže umožňuje dodávat aplikace bez nutnosti uživatelů instalovat rozhraní příkazového řádku nebo nastavit místní prostředí Foundry. Nová sada SDK také obsahuje vylepšení rozhraní API pro lepší použitelnost a výkon.

Průvodce migrací sady C# SDK

Pokud chcete zlepšit schopnost dodávat aplikace pomocí AI na zařízení, došlo k podstatným změnám architektury sady C# SDK ve verzi 0.8.0 a novějších verzích. V této části popisujeme klíčové změny, které vám pomůžou s migrací aplikací na nejnovější verzi sady SDK.

Poznámka:

Ve verzi 0.8.0 sady SDK a novějších verzích rozhraní API dochází k zásadním změnám z předchozích verzí (<=0.3.0).

Následující diagram znázorňuje, jak předchozí architektura – pro starší 0.8.0 verze – se silně spoléhala na použití webového serveru REST ke správě modelů a odvozování, jako jsou dokončování chatu:

Diagram předchozí architektury pro Foundry Local

Sada SDK by použila vzdálené procedurální volání (RPC) k vyhledání spustitelného souboru Local CLI Foundry na počítači, spuštění webového serveru a následné komunikaci s ním přes protokol HTTP. Tato architektura měla několik omezení, mezi která patří:

  • Složitost při správě životního cyklu webového serveru
  • Náročné nasazení: Koncoví uživatelé museli mít na svých počítačích a vaší aplikaci nainstalované místní rozhraní příkazového řádku Foundry.
  • Správa verzí rozhraní příkazového řádku a sady SDK může vést k problémům s kompatibilitou.

Přepracovaná architektura ve verzi 0.8.0 a novější využívá zjednodušený přístup k řešení těchto problémů. Nová architektura je následující:

Diagram nové architektury pro Foundry Local

V této nové architektuře:

  • Vaše aplikace je samostatná. Nevyžaduje instalaci rozhraní příkazového řádku Foundry Local CLI samostatně na počítači koncového uživatele, což usnadňuje nasazení aplikací.
  • Webový server REST je volitelný. Webový server můžete dál používat, pokud chcete integrovat s jinými nástroji, které komunikují přes protokol HTTP. Podrobnosti o tom, jak tuto funkci používat, najdete v tématu Použití dokončování chatu prostřednictvím serveru REST s Foundry Local .
  • Sada SDK má nativní podporu pro dokončování chatu a přepisy zvuku, což umožňuje vytvářet konverzační aplikace AI s menším počtem závislostí. Podrobnosti o použití této funkce najdete v rozhraní API pro dokončování nativních chatů Foundry Local .
  • Na zařízeních s Windows můžete použít sestavení Windows ML, které zpracovává hardwarové zrychlení pro modely v zařízení tím, že načte správný runtime a ovladače.

Změny rozhraní API

Verze 0.8.0 a novější poskytují více objektově orientované a kompozovatelné rozhraní API. Hlavním vstupním bodem je i nadále třída FoundryLocalManager, ale místo ploché sady metod, které pracují prostřednictvím statických volání bezstavového rozhraní HTTP API, sada SDK nyní zpřístupňuje metody na instanci FoundryLocalManager, která uchovává stav o službě a modelech.

Primitivní Verze < 0.8.0 Verze >= 0.8.0
Configuration N/A config = Configuration(...)
Získat manažera mgr = FoundryLocalManager(); await FoundryLocalManager.CreateAsync(config, logger);
var mgr = FoundryLocalManager.Instance;
Získat katalog N/A catalog = await mgr.GetCatalogAsync();
Výpis modelů mgr.ListCatalogModelsAsync(); catalog.ListModelsAsync();
Získání modelu mgr.GetModelInfoAsync("aliasOrModelId"); catalog.GetModelAsync(alias: "alias");
Získat variantu N/A model.SelectedVariant;
Nastavit variantu N/A model.SelectVariant();
Stažení modelu mgr.DownloadModelAsync("aliasOrModelId"); model.DownloadAsync()
Načtení modelu mgr.LoadModelAsync("aliasOrModelId"); model.LoadAsync()
Uvolnění modelu mgr.UnloadModelAsync("aliasOrModelId"); model.UnloadAsync()
Výpis načtených modelů mgr.ListLoadedModelsAsync(); catalog.GetLoadedModelsAsync();
Získat cestu modelu N/A model.GetPathAsync()
Spuštění služby mgr.StartServiceAsync(); mgr.StartWebServerAsync();
Zastavení služby mgr.StopServiceAsync(); mgr.StopWebServerAsync();
Umístění mezipaměti mgr.GetCacheLocationAsync(); config.ModelCacheDir
Výpis modelů uložených v mezipaměti mgr.ListCachedModelsAsync(); catalog.GetCachedModelsAsync();

Rozhraní API umožňuje, aby služba Foundry Local byla více konfigurovatelná přes webový server, protokolování, umístění mezipaměti a výběr variant modelu. Třída například Configuration umožňuje nastavit název aplikace, úroveň protokolování, adresy URL webového serveru a adresáře pro data aplikací, mezipaměť modelu a protokoly:

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

Referenční informace k rozhraní API

Průvodce migrací sady JavaScript SDK

Pokud chcete zlepšit schopnost dodávat aplikace pomocí umělé inteligence na zařízení, došlo k podstatným změnám architektury sady JavaScript SDK. V této části popisujeme klíčové změny, které vám pomůžou s migrací aplikací na nejnovější verzi sady SDK.

Poznámka:

Ve verzi 0.9.0 sady JavaScript SDK a novějších verzích rozhraní API dochází k zásadním změnám v rozhraní API z předchozích verzí (<=0.5.0).

Následující diagram znázorňuje, jak předchozí architektura silně spoléhala na použití webového serveru REST ke správě modelů a odvozování, jako jsou dokončování chatu:

Diagram předchozí architektury pro Foundry Local

Sada SDK by použila vzdálené procedurální volání (RPC) k vyhledání spustitelného souboru Local CLI Foundry na počítači, spuštění webového serveru a následné komunikaci s ním přes protokol HTTP. Tato architektura měla několik omezení, mezi která patří:

  • Složitost při správě životního cyklu webového serveru
  • Náročné nasazení: Koncoví uživatelé museli mít na svých počítačích a vaší aplikaci nainstalované místní rozhraní příkazového řádku Foundry.
  • Správa verzí rozhraní příkazového řádku a sady SDK může vést k problémům s kompatibilitou.

K řešení těchto problémů používá přepracovaná architektura efektivnější přístup. Nová architektura je následující:

Diagram nové architektury pro Foundry Local

V této nové architektuře:

  • Vaše aplikace je samostatná. Nevyžaduje instalaci rozhraní příkazového řádku Foundry Local CLI samostatně na počítači koncového uživatele, což usnadňuje nasazení aplikací.
  • Webový server REST je volitelný. Webový server můžete dál používat, pokud chcete integrovat s jinými nástroji, které komunikují přes protokol HTTP.
  • Sada SDK má nativní podporu pro dokončování chatu a přepisy zvuku, což umožňuje vytvářet konverzační aplikace AI s menším počtem závislostí.

Změny rozhraní API

Nejnovější verze poskytuje objektově orientované a kompozovatelné rozhraní API. Hlavním vstupním bodem je i nadále třída FoundryLocalManager, ale místo ploché sady metod, které pracují prostřednictvím statických volání bezstavového rozhraní HTTP API, sada SDK nyní zpřístupňuje metody na instanci FoundryLocalManager, která uchovává stav o službě a modelech.

Primitivní Předchozí verze Aktuální verze
Configuration N/A config = { appName: "app-name", ... }
Získat manažera mgr = new FoundryLocalManager(); mgr = FoundryLocalManager.create(config);
Získat katalog N/A catalog = mgr.catalog;
Výpis modelů mgr.listCatalogModels(); catalog.getModels();
Získání modelu mgr.getModelInfo("aliasOrModelId"); catalog.getModel(alias);
Získat variantu N/A model.id;
Nastavit variantu N/A model.selectVariant(modelId);
Stažení modelu mgr.downloadModel("aliasOrModelId"); model.download();
Načtení modelu mgr.loadModel("aliasOrModelId"); model.load();
Uvolnění modelu mgr.unloadModel("aliasOrModelId"); model.unload();
Výpis načtených modelů mgr.listLoadedModels(); catalog.getLoadedModels();
Získat cestu modelu N/A model.path;
Spuštění služby mgr.startService(); mgr.startWebService();
Zastavení služby N/A mgr.stopWebService();
Umístění mezipaměti mgr.getCacheLocation(); config.modelCacheDir
Výpis modelů uložených v mezipaměti mgr.listCachedModels(); catalog.getCachedModels();

Rozhraní API umožňuje, aby služba Foundry Local byla více konfigurovatelná přes webový server, protokolování, umístění mezipaměti a výběr variant modelu. Můžete například config nastavit název aplikace, úroveň protokolování, adresy URL webového serveru a adresáře pro data aplikací, mezipaměť modelu a protokoly:

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

V předchozí verzi sady Foundry Local JavaScript SDK se nepodařilo nakonfigurovat tato nastavení přímo prostřednictvím sady SDK, která omezila vaši schopnost přizpůsobit chování služby.

Odkazy

Průvodce migrací sady Python SDK

Aby se zlepšila schopnost dodávat aplikace pomocí umělé inteligence na zařízení, došlo k podstatným změnám architektury Python SDK. V této části popisujeme klíčové změny, které vám pomůžou s migrací aplikací na nejnovější verzi sady SDK.

Poznámka:

V nejnovější verzi sady PYTHON SDK (1.0.0) dochází k zásadním změnám rozhraní API z předchozích verzí (<=0.5.1).

Následující diagram znázorňuje, jak předchozí architektura silně spoléhala na použití webového serveru REST ke správě modelů a odvozování, jako jsou dokončování chatu:

Diagram předchozí architektury pro Foundry Local

Sada SDK by použila vzdálené procedurální volání (RPC) k vyhledání spustitelného souboru Local CLI Foundry na počítači, spuštění webového serveru a následné komunikaci s ním přes protokol HTTP. Tato architektura měla několik omezení, mezi která patří:

  • Složitost při správě životního cyklu webového serveru
  • Náročné nasazení: Koncoví uživatelé museli mít na svých počítačích a vaší aplikaci nainstalované místní rozhraní příkazového řádku Foundry.
  • Správa verzí rozhraní příkazového řádku a sady SDK může vést k problémům s kompatibilitou.

K řešení těchto problémů používá přepracovaná architektura efektivnější přístup. Nová architektura je následující:

Diagram nové architektury pro Foundry Local

V této nové architektuře:

  • Vaše aplikace je samostatná. Nevyžaduje instalaci rozhraní příkazového řádku Foundry Local CLI samostatně na počítači koncového uživatele, což usnadňuje nasazení aplikací.
  • Webový server REST je volitelný. Webový server můžete dál používat, pokud chcete integrovat s jinými nástroji, které komunikují přes protokol HTTP.
  • Sada SDK má nativní podporu pro dokončování chatu a přepisy zvuku, což umožňuje vytvářet konverzační aplikace AI s menším počtem závislostí.

Změny rozhraní API

Nejnovější verze poskytuje objektově orientované a kompozovatelné rozhraní API. Hlavním vstupním bodem je FoundryLocalManager i nadále třída, ale inicializační vzor, správa modelů a odvozování se výrazně změnily.

Primitivní Předchozí verze (foundry-local) Aktuální verze (foundry-local-sdk)
Balíček pip install foundry-local pip install foundry-local-sdk
Dovoz from foundry_local import FoundryLocalManager from foundry_local_sdk import Configuration, FoundryLocalManager
Configuration N/A config = Configuration(app_name="app-name")
Získat manažera manager = FoundryLocalManager(alias) FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
Získat katalog N/A catalog = manager.catalog
Výpis modelů manager.list_catalog_models() catalog.list_models()
Získání modelu manager.get_model_info(alias) catalog.get_model(alias)
Stažení modelu manager.download_model(alias) model.download(progress_callback)
Načtení modelu manager.load_model(alias) model.load()
Uvolnění modelu manager.unload_model(alias) model.unload()
Výpis načtených modelů manager.list_loaded_models() catalog.get_loaded_models()
Výpis modelů uložených v mezipaměti manager.list_cached_models() catalog.get_cached_models()
Umístění mezipaměti manager.get_cache_location() config.model_cache_dir
Spuštění služby manager.start_service() manager.start_web_service()
Koncový bod služby manager.endpoint manager.urls

Rozhraní API umožňuje, aby služba Foundry Local byla více konfigurovatelná přes webový server, protokolování, umístění mezipaměti a výběr variant modelu. Třída například Configuration umožňuje nastavit název aplikace, úroveň protokolování, adresy URL webového serveru a adresáře pro data aplikací, mezipaměť modelu a protokoly:

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

Odkazy

Průvodce migrací sady Rust SDK

Pokud chcete zlepšit schopnost dodávat aplikace pomocí umělé inteligence na zařízení, došlo k podstatným změnám architektury sady Rust SDK. V této části popisujeme klíčové změny, které vám pomůžou s migrací aplikací na nejnovější verzi sady SDK.

Poznámka:

V nejnovější verzi sady Rust SDK (1.0.0) dochází k zásadním změnám rozhraní API z předchozí verze. Název bedny se změnil z foundry-local na foundry-local-sdk.

Následující diagram znázorňuje, jak předchozí architektura silně spoléhala na použití webového serveru REST ke správě modelů a odvozování, jako jsou dokončování chatu:

Diagram předchozí architektury pro Foundry Local

Sada SDK použije vzdálené procedurální volání (RPC) k vyhledání spustitelného souboru Local CLI Foundry na počítači, spuštění webového serveru a následné komunikaci s ním přes PROTOKOL HTTP. Tato architektura měla několik omezení, mezi která patří:

  • Složitost při správě životního cyklu webového serveru
  • Náročné nasazení: Koncoví uživatelé museli mít na svých počítačích a vaší aplikaci nainstalované místní rozhraní příkazového řádku Foundry.
  • Správa verzí rozhraní příkazového řádku a sady SDK může vést k problémům s kompatibilitou.

K řešení těchto problémů používá přepracovaná architektura efektivnější přístup. Nová architektura je následující:

Diagram nové architektury pro Foundry Local

V této nové architektuře:

  • Vaše aplikace je samostatná. Nevyžaduje instalaci rozhraní příkazového řádku Foundry Local CLI samostatně na počítači koncového uživatele, což usnadňuje nasazení aplikací.
  • Webový server REST je volitelný. Webový server můžete dál používat, pokud chcete integrovat s jinými nástroji, které komunikují přes protokol HTTP.
  • Sada SDK má nativní podporu pro dokončování chatu a přepisy zvuku, což umožňuje vytvářet konverzační aplikace AI s menším počtem závislostí.

Změny rozhraní API

Nejnovější verze poskytuje objektově orientované a kompozovatelné rozhraní API. Model tvůrce byl nahrazen přístupem založeným na konfiguraci a správa modelů teď používá vyhrazené Model objekty.

Primitivní Předchozí verze (foundry-local) Aktuální verze (foundry-local-sdk)
Přepravka foundry-local foundry-local-sdk
Configuration N/A FoundryLocalConfig::new("app-name")
Získat manažera FoundryLocalManager::builder().build().await? FoundryLocalManager::create(config)?
Získat katalog N/A manager.catalog()
Výpis modelů manager.list_catalog_models().await? manager.catalog().get_models().await?
Získání modelu manager.get_model_info(alias).await? manager.catalog().get_model(alias).await?
Stažení modelu manager.download_model(alias).await? model.download(callback).await?
Načtení modelu manager.load_model(alias).await? model.load().await?
Uvolnění modelu manager.unload_model(alias).await? model.unload().await?
Výpis načtených modelů manager.list_loaded_models().await? manager.catalog().get_loaded_models().await?
Výpis modelů uložených v mezipaměti manager.list_cached_models().await? manager.catalog().get_cached_models().await?
Spuštění služby manager.start_service()? manager.start_web_service().await?
Koncový bod manager.endpoint()? manager.urls()
Volání HTTP reqwest::Client (ruční REST) Nativní sada SDK: model.create_chat_client()

Nová sada SDK poskytuje nativní chatovací a zvukové klienty, což ve většině případů eliminuje potřebu ručních požadavků 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);

Odkazy