Migreringsguide för Foundry Local SDK

Den här guiden innehåller instruktioner för att migrera din kod från den äldre versionen av Foundry Local SDK till den aktuella versionen. Den nya SDK:n tar bort beroendet av Foundry Local CLI och låter dig därför skicka dina program utan att kräva att användarna installerar CLI eller konfigurerar en lokal Foundry-miljö. Den nya SDK:n innehåller även förbättringar av API:et för bättre användbarhet och prestanda.

Migreringsguide för C# SDK

För att förbättra din möjlighet att skicka program med hjälp av AI på enheten, finns det betydande ändringar i arkitekturen för C# SDK i version 0.8.0 och senare. I det här avsnittet beskriver vi de viktigaste ändringarna som hjälper dig att migrera dina program till den senaste versionen av SDK.

Anmärkning

I SDK-versionen 0.8.0 och senare finns det icke-bakåtkompatibla ändringar i API:et från tidigare versioner (<=0.3.0).

Följande diagram visar hur den tidigare arkitekturen – för tidigare versioner än 0.8.0 – förlitade sig mycket på att använda en REST-webbserver för att hantera modeller och slutsatsdragningar som chattavslut:

Diagram över den tidigare arkitekturen för Foundry Local.

SDK använder ett RPC (Remote Procedure Call) för att hitta Foundry Local CLI körbart på datorn, starta webbservern och sedan kommunicera med den via HTTP. Den här arkitekturen hade flera begränsningar, bland annat:

  • Komplexitet i hanteringen av webbserverns livscykel.
  • Utmanande distribution: Slutanvändarna behövde ha Foundry Local CLI installerat på sina datorer och ditt program.
  • Versionshantering av CLI och SDK kan leda till kompatibilitetsproblem.

För att lösa dessa problem använder den omdesignade arkitekturen i version 0.8.0 och senare en mer effektiviserad metod. Den nya arkitekturen är följande:

Diagram över den nya arkitekturen för Foundry Local.

I den här nya arkitekturen:

  • Programmet är fristående. Det kräver inte att Foundry Local CLI installeras separat på slutanvändarens dator, vilket gör det enklare för dig att distribuera program.
  • REST-webbservern är valfri. Du kan fortfarande använda webbservern om du vill integrera med andra verktyg som kommunicerar via HTTP. Läs Använda chattavslut via REST-server med Foundry Local för mer information om hur du använder den här funktionen.
  • SDK:n har inbyggt stöd för chattavslutningar och ljudavskrifter, så att du kan skapa konversations-AI-program med färre beroenden. Läs Foundry Locals API för inbyggda chattkompletteringar för detaljer om hur du använder den här funktionen.
  • På Windows-enheter kan du använda en Windows ML-version som hanterar hårdvaruacceleration för modeller på enheten genom att använda rätt runtime och drivrutiner.

API-ändringar

Version 0.8.0 och senare ger ett mer objektorienterat och komponerbart API. Huvudinmatningspunkten fortsätter att vara FoundryLocalManager klassen, men i stället för att vara en platt uppsättning metoder som fungerar via statiska anrop till ett tillståndslöst HTTP-API, exponerar SDK nu metoder på den FoundryLocalManager instans som underhåller tillstånd om tjänsten och modellerna.

Primitiv Versioner < 0.8.0 Versioner >= 0.8.0
Konfiguration Inte tillämpligt config = Configuration(...)
Hämta Manager mgr = FoundryLocalManager(); await FoundryLocalManager.CreateAsync(config, logger);
var mgr = FoundryLocalManager.Instance;
Hämta katalog Inte tillämpligt catalog = await mgr.GetCatalogAsync();
Lista modeller mgr.ListCatalogModelsAsync(); catalog.ListModelsAsync();
Hämta modell mgr.GetModelInfoAsync("aliasOrModelId"); catalog.GetModelAsync(alias: "alias");
Hämta variant Inte tillämpligt model.SelectedVariant;
Ange variant Inte tillämpligt model.SelectVariant();
Ladda ned en modell mgr.DownloadModelAsync("aliasOrModelId"); model.DownloadAsync()
Läsa in en modell mgr.LoadModelAsync("aliasOrModelId"); model.LoadAsync()
Ladda ur en modell mgr.UnloadModelAsync("aliasOrModelId"); model.UnloadAsync()
Lista inlästa modeller mgr.ListLoadedModelsAsync(); catalog.GetLoadedModelsAsync();
Hämta modellsökväg Inte tillämpligt model.GetPathAsync()
Starta tjänsten mgr.StartServiceAsync(); mgr.StartWebServerAsync();
Stoppa tjänsten mgr.StopServiceAsync(); mgr.StopWebServerAsync();
Cacheplats mgr.GetCacheLocationAsync(); config.ModelCacheDir
Lista cachelagrade modeller mgr.ListCachedModelsAsync(); catalog.GetCachedModelsAsync();

MED API:et kan Foundry Local vara mer konfigurerbart via webbservern, loggning, cacheplats och modellvariantval. Med klassen kan du till exempel Configuration konfigurera programnamn, loggningsnivå, webbserver-URL:er och kataloger för programdata, modellcache och loggar:

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

Migreringsguide för JavaScript SDK

För att förbättra din möjlighet att skicka program med hjälp av AI på enheten finns det betydande ändringar i arkitekturen för JavaScript SDK. I det här avsnittet beskriver vi de viktigaste ändringarna som hjälper dig att migrera dina program till den senaste versionen av SDK.

Anmärkning

I JavaScript SDK-versionen 0.9.0 och senare finns det icke-bakåtkompatibla ändringar i API:et från tidigare versioner (<=0.5.0).

Följande diagram visar hur den tidigare arkitekturen förlitade sig mycket på att använda en REST-webbserver för att hantera modeller och slutsatsdragningar som chattavslut:

Diagram över den tidigare arkitekturen för Foundry Local.

SDK använder ett RPC (Remote Procedure Call) för att hitta Foundry Local CLI körbart på datorn, starta webbservern och sedan kommunicera med den via HTTP. Den här arkitekturen hade flera begränsningar, bland annat:

  • Komplexitet i hanteringen av webbserverns livscykel.
  • Utmanande distribution: Slutanvändarna behövde ha Foundry Local CLI installerat på sina datorer och ditt program.
  • Versionshantering av CLI och SDK kan leda till kompatibilitetsproblem.

För att lösa dessa problem använder den omdesignade arkitekturen en mer strömlinjeformad metod. Den nya arkitekturen är följande:

Diagram över den nya arkitekturen för Foundry Local.

I den här nya arkitekturen:

  • Programmet är fristående. Det kräver inte att Foundry Local CLI installeras separat på slutanvändarens dator, vilket gör det enklare för dig att distribuera program.
  • REST-webbservern är valfri. Du kan fortfarande använda webbservern om du vill integrera med andra verktyg som kommunicerar via HTTP.
  • SDK:n har inbyggt stöd för chattavslutningar och ljudavskrifter, så att du kan skapa konversations-AI-program med färre beroenden.

API-ändringar

Den senaste versionen innehåller ett mer objektorienterat och komposterbart API. Huvudinmatningspunkten fortsätter att vara FoundryLocalManager klassen, men i stället för att vara en platt uppsättning metoder som fungerar via statiska anrop till ett tillståndslöst HTTP-API, exponerar SDK nu metoder på den FoundryLocalManager instans som underhåller tillstånd om tjänsten och modellerna.

Primitiv Tidigare version Aktuell version
Konfiguration Inte tillämpligt config = { appName: "app-name", ... }
Hämta Manager mgr = new FoundryLocalManager(); mgr = FoundryLocalManager.create(config);
Hämta katalog Inte tillämpligt catalog = mgr.catalog;
Lista modeller mgr.listCatalogModels(); catalog.getModels();
Hämta modell mgr.getModelInfo("aliasOrModelId"); catalog.getModel(alias);
Hämta variant Inte tillämpligt model.id;
Ange variant Inte tillämpligt model.selectVariant(modelId);
Ladda ned en modell mgr.downloadModel("aliasOrModelId"); model.download();
Läsa in en modell mgr.loadModel("aliasOrModelId"); model.load();
Ladda ur en modell mgr.unloadModel("aliasOrModelId"); model.unload();
Lista inlästa modeller mgr.listLoadedModels(); catalog.getLoadedModels();
Hämta modellsökväg Inte tillämpligt model.path;
Starta tjänsten mgr.startService(); mgr.startWebService();
Stoppa tjänsten Inte tillämpligt mgr.stopWebService();
Cacheplats mgr.getCacheLocation(); config.modelCacheDir
Lista cachelagrade modeller mgr.listCachedModels(); catalog.getCachedModels();

MED API:et kan Foundry Local vara mer konfigurerbart via webbservern, loggning, cacheplats och modellvariantval. Du kan till exempel config konfigurera programnamn, loggningsnivå, webbserver-URL:er och kataloger för programdata, modellcache och loggar:

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

I den tidigare versionen av Foundry Local JavaScript SDK kunde du inte konfigurera de här inställningarna direkt via SDK:t, vilket begränsade din möjlighet att anpassa tjänstens beteende.

Referenser

migreringsguide för Python SDK

För att förbättra din förmåga att skicka program med ai på enheten finns det betydande ändringar i arkitekturen för Python SDK. I det här avsnittet beskriver vi de viktigaste ändringarna som hjälper dig att migrera dina program till den senaste versionen av SDK.

Anmärkning

I den senaste versionen av Python SDK (1.0.0) finns det brytande ändringar i API från tidigare versioner (<=0.5.1).

Följande diagram visar hur den tidigare arkitekturen förlitade sig mycket på att använda en REST-webbserver för att hantera modeller och slutsatsdragningar som chattavslut:

Diagram över den tidigare arkitekturen för Foundry Local.

SDK använder ett RPC (Remote Procedure Call) för att hitta Foundry Local CLI körbart på datorn, starta webbservern och sedan kommunicera med den via HTTP. Den här arkitekturen hade flera begränsningar, bland annat:

  • Komplexitet i hanteringen av webbserverns livscykel.
  • Utmanande distribution: Slutanvändarna behövde ha Foundry Local CLI installerat på sina datorer och ditt program.
  • Versionshantering av CLI och SDK kan leda till kompatibilitetsproblem.

För att lösa dessa problem använder den omdesignade arkitekturen en mer strömlinjeformad metod. Den nya arkitekturen är följande:

Diagram över den nya arkitekturen för Foundry Local.

I den här nya arkitekturen:

  • Programmet är fristående. Det kräver inte att Foundry Local CLI installeras separat på slutanvändarens dator, vilket gör det enklare för dig att distribuera program.
  • REST-webbservern är valfri. Du kan fortfarande använda webbservern om du vill integrera med andra verktyg som kommunicerar via HTTP.
  • SDK:n har inbyggt stöd för chattavslutningar och ljudavskrifter, så att du kan skapa konversations-AI-program med färre beroenden.

API-ändringar

Den senaste versionen innehåller ett mer objektorienterat och komposterbart API. Huvudinmatningspunkten fortsätter att vara FoundryLocalManager klassen, men initieringsmönstret, modellhanteringen och slutsatsdragningen har ändrats avsevärt.

Primitiv Tidigare version (foundry-local) Aktuell version (foundry-local-sdk)
Paket pip install foundry-local pip install foundry-local-sdk
Import from foundry_local import FoundryLocalManager from foundry_local_sdk import Configuration, FoundryLocalManager
Konfiguration Inte tillämpligt config = Configuration(app_name="app-name")
Hämta Manager manager = FoundryLocalManager(alias) FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
Hämta katalog Inte tillämpligt catalog = manager.catalog
Lista modeller manager.list_catalog_models() catalog.list_models()
Hämta modell manager.get_model_info(alias) catalog.get_model(alias)
Ladda ned en modell manager.download_model(alias) model.download(progress_callback)
Läsa in en modell manager.load_model(alias) model.load()
Ladda ur en modell manager.unload_model(alias) model.unload()
Lista inlästa modeller manager.list_loaded_models() catalog.get_loaded_models()
Lista cachelagrade modeller manager.list_cached_models() catalog.get_cached_models()
Cacheplats manager.get_cache_location() config.model_cache_dir
Starta tjänsten manager.start_service() manager.start_web_service()
Tjänstslutpunkt manager.endpoint manager.urls

MED API:et kan Foundry Local vara mer konfigurerbart via webbservern, loggning, cacheplats och modellvariantval. Med klassen kan du till exempel Configuration konfigurera programnamn, loggningsnivå, webbserver-URL:er och kataloger för programdata, modellcache och loggar:

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

Referenser

Migreringsguide för Rust SDK

För att förbättra din förmåga att skicka program med hjälp av AI på enheten finns det betydande ändringar i arkitekturen för Rust SDK. I det här avsnittet beskriver vi de viktigaste ändringarna som hjälper dig att migrera dina program till den senaste versionen av SDK.

Anmärkning

I den senaste Rust SDK-versionen (1.0.0) finns det störande ändringar i API:et från den tidigare versionen. Namnet på lådan har ändrats från foundry-local till foundry-local-sdk.

Följande diagram visar hur den tidigare arkitekturen förlitade sig mycket på att använda en REST-webbserver för att hantera modeller och slutsatsdragningar som chattavslut:

Diagram över den tidigare arkitekturen för Foundry Local.

SDK:n använder ett RPC (Remote Procedure Call) för att hitta den körbara filen Foundry Local CLI på datorn, starta webbservern och sedan kommunicera med den via HTTP. Den här arkitekturen hade flera begränsningar, bland annat:

  • Komplexitet i hanteringen av webbserverns livscykel.
  • Utmanande distribution: Slutanvändarna behövde ha Foundry Local CLI installerat på sina datorer och ditt program.
  • Versionshantering av CLI och SDK kan leda till kompatibilitetsproblem.

För att lösa dessa problem använder den omdesignade arkitekturen en mer strömlinjeformad metod. Den nya arkitekturen är följande:

Diagram över den nya arkitekturen för Foundry Local.

I den här nya arkitekturen:

  • Programmet är fristående. Det kräver inte att Foundry Local CLI installeras separat på slutanvändarens dator, vilket gör det enklare för dig att distribuera program.
  • REST-webbservern är valfri. Du kan fortfarande använda webbservern om du vill integrera med andra verktyg som kommunicerar via HTTP.
  • SDK:n har inbyggt stöd för chattavslutningar och ljudavskrifter, så att du kan skapa konversations-AI-program med färre beroenden.

API-ändringar

Den senaste versionen innehåller ett mer objektorienterat och komposterbart API. Builder-mönstret har ersatts med en konfigurationsbaserad metod och modellhantering använder nu dedikerade Model objekt.

Primitiv Tidigare version (foundry-local) Aktuell version (foundry-local-sdk)
Crate foundry-local foundry-local-sdk
Konfiguration Inte tillämpligt FoundryLocalConfig::new("app-name")
Hämta Manager FoundryLocalManager::builder().build().await? FoundryLocalManager::create(config)?
Hämta katalog Inte tillämpligt manager.catalog()
Lista modeller manager.list_catalog_models().await? manager.catalog().get_models().await?
Hämta modell manager.get_model_info(alias).await? manager.catalog().get_model(alias).await?
Ladda ned en modell manager.download_model(alias).await? model.download(callback).await?
Läsa in en modell manager.load_model(alias).await? model.load().await?
Ladda ur en modell manager.unload_model(alias).await? model.unload().await?
Lista inlästa modeller manager.list_loaded_models().await? manager.catalog().get_loaded_models().await?
Lista cachelagrade modeller manager.list_cached_models().await? manager.catalog().get_cached_models().await?
Starta tjänsten manager.start_service()? manager.start_web_service().await?
Slutpunkt manager.endpoint()? manager.urls()
HTTP-anrop reqwest::Client (manuell REST) Inhemskt SDK: model.create_chat_client()

Den nya SDK:n tillhandahåller interna chatt- och ljudklienter, vilket eliminerar behovet av manuella HTTP-begäranden i de flesta fall:

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

Referenser