Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przewodnik zawiera instrukcje dotyczące migrowania kodu ze starszej wersji zestawu SDK lokalnego rozwiązania Foundry do bieżącej wersji. Nowy zestaw SDK usuwa zależność od lokalnego interfejsu wiersza polecenia usługi Foundry i w związku z tym umożliwia dostarczanie aplikacji bez konieczności instalowania interfejsu wiersza polecenia lub konfigurowania lokalnego środowiska foundry. Nowy zestaw SDK zawiera również ulepszenia interfejsu API w celu zwiększenia użyteczności i wydajności.
Przewodnik migracji zestawu SDK języka C#
Aby zwiększyć możliwość dostarczania aplikacji przy użyciu sztucznej inteligencji na urządzeniu, wprowadzono istotne zmiany w architekturze zestawu SDK języka C# w wersji 0.8.0 i nowszych wersjach. W tej sekcji opisano kluczowe zmiany ułatwiające migrowanie aplikacji do najnowszej wersji zestawu SDK.
Uwaga / Notatka
W wersji 0.8.0 zestawu SDK i nowszych wprowadzono zmiany powodujące niezgodność w interfejsie API w porównaniu do poprzednich wersji (<=0.3.0).
Na poniższym diagramie pokazano, jak poprzednia architektura — dla wersji wcześniejszych niż 0.8.0 — w dużym stopniu polegała na używaniu serwera internetowego REST do zarządzania modelami i wnioskowaniem, takimi jak kończenia czatów:
Zestaw SDK użyje zdalnego wywołania procedury (RPC), aby znaleźć lokalny CLI Foundry na maszynie, uruchomić serwer internetowy, a następnie komunikować się z nim za pośrednictwem protokołu HTTP. Ta architektura miała kilka ograniczeń, w tym:
- Złożoność zarządzania cyklem życia serwera internetowego.
- Trudne wdrożenie: użytkownicy końcowi musieli zainstalować lokalny interfejs wiersza polecenia usługi Foundry na swoich maszynach i aplikacji.
- Zarządzanie wersjami interfejsu wiersza polecenia i zestawu SDK może prowadzić do problemów ze zgodnością.
Aby rozwiązać te problemy, przeprojektowana architektura w wersji 0.8.0 i nowszej korzysta z bardziej usprawnionego podejścia. Nowa architektura jest następująca:
W tej nowej architekturze:
- Aplikacja jest samodzielna. Nie wymaga oddzielnego zainstalowania lokalnego interfejsu wiersza polecenia Foundry na maszynie użytkownika końcowego, co ułatwia wdrażanie aplikacji.
- Serwer internetowy REST jest opcjonalny. Nadal możesz użyć serwera internetowego, jeśli chcesz zintegrować się z innymi narzędziami komunikujących się za pośrednictwem protokołu HTTP. Aby uzyskać szczegółowe informacje na temat korzystania z tej funkcji, przeczytaj Używanie uzupełniania czatów za pośrednictwem serwera REST z lokalną usługą Foundry .
- Zestaw SDK zapewnia natywną obsługę uzupełniania czatów i transkrypcji audio, umożliwiając tworzenie aplikacji konwersacyjnych sztucznej inteligencji z mniejszą liczbą zależności. Aby uzyskać szczegółowe informacje na temat korzystania z tej funkcji, przeczytaj Używanie interfejsu API natywnych uzupełniania czatów lokalnych w Foundry.
- Na urządzeniach Windows można użyć kompilacji Windows ML obsługującej przyspieszanie sprzętowe dla modeli na urządzeniu, ściągając odpowiednie środowisko uruchomieniowe i sterowniki.
Zmiany w interfejsie API
Wersja 0.8.0 i późniejsze udostępniają bardziej obiektowo zorientowany i komponowalny interfejs API. Głównym punktem wejścia pozostaje klasa FoundryLocalManager, ale zamiast stanowić płaski zestaw metod operujących przez statyczne wywołania do bezstanowego interfejsu API HTTP, zestaw SDK teraz udostępnia metody w instancji FoundryLocalManager, która zachowuje informacje o stanie usługi i modelach.
| Prymitywny | Wersje < 0.8.0 | Wersje >= 0.8.0 |
|---|---|---|
| Configuration | N/A | config = Configuration(...) |
| Pobierz menedżera | mgr = FoundryLocalManager(); |
await FoundryLocalManager.CreateAsync(config, logger);var mgr = FoundryLocalManager.Instance; |
| Pobieranie wykazu | N/A | catalog = await mgr.GetCatalogAsync(); |
| Wyświetlanie listy modeli | mgr.ListCatalogModelsAsync(); |
catalog.ListModelsAsync(); |
| Pobieranie modelu | mgr.GetModelInfoAsync("aliasOrModelId"); |
catalog.GetModelAsync(alias: "alias"); |
| Uzyskiwanie wariantu | N/A | model.SelectedVariant; |
| Ustawienie wariantu | N/A | model.SelectVariant(); |
| Pobieranie modelu | mgr.DownloadModelAsync("aliasOrModelId"); |
model.DownloadAsync() |
| Ładowanie modelu | mgr.LoadModelAsync("aliasOrModelId"); |
model.LoadAsync() |
| Odładowanie modelu | mgr.UnloadModelAsync("aliasOrModelId"); |
model.UnloadAsync() |
| Lista załadowanych modeli | mgr.ListLoadedModelsAsync(); |
catalog.GetLoadedModelsAsync(); |
| Uzyskaj ścieżkę modelu | N/A | model.GetPathAsync() |
| Uruchamianie usługi | mgr.StartServiceAsync(); |
mgr.StartWebServerAsync(); |
| Zatrzymaj usługę | mgr.StopServiceAsync(); |
mgr.StopWebServerAsync(); |
| Lokalizacja pamięci podręcznej | mgr.GetCacheLocationAsync(); |
config.ModelCacheDir |
| Wyświetlanie listy buforowanych modeli | mgr.ListCachedModelsAsync(); |
catalog.GetCachedModelsAsync(); |
Interfejs API umożliwia, aby Foundry Local był bardziej konfigurowalny w zakresie serwera WWW, rejestrowania, lokalizacji pamięci podręcznej i wyboru wariantu modelu. Na przykład Configuration klasa umożliwia skonfigurowanie nazwy aplikacji, poziomu rejestrowania, adresów URL serwera internetowego i katalogów dla danych aplikacji, pamięci podręcznej modelu i dzienników:
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"
};
Odniesienie do API
- Aby uzyskać więcej informacji na temat lokalnego zestawu SDK języka C# usługi Foundry, zobacz Dokumentacja lokalnego interfejsu API zestawu SDK języka C# w języku Foundry.
Przewodnik po migracji zestawu SDK języka JavaScript
Aby zwiększyć możliwość dostarczania aplikacji przy użyciu sztucznej inteligencji na urządzeniu, wprowadzono istotne zmiany w architekturze zestawu SDK języka JavaScript. W tej sekcji opisano kluczowe zmiany ułatwiające migrowanie aplikacji do najnowszej wersji zestawu SDK.
Uwaga / Notatka
W wersji SDK JavaScript 0.9.0 i późniejszych w interfejsie API wprowadzono zmiany powodujące, że nie są one zgodne z poprzednimi wersjami (<=0.5.0).
Na poniższym diagramie pokazano, jak poprzednia architektura w dużym stopniu polegała na używaniu serwera internetowego REST do zarządzania modelami i wnioskowaniem, takimi jak ukończenia czatu:
Zestaw SDK użyje zdalnego wywołania procedury (RPC), aby znaleźć lokalny CLI Foundry na maszynie, uruchomić serwer internetowy, a następnie komunikować się z nim za pośrednictwem protokołu HTTP. Ta architektura miała kilka ograniczeń, w tym:
- Złożoność zarządzania cyklem życia serwera internetowego.
- Trudne wdrożenie: użytkownicy końcowi musieli zainstalować lokalny interfejs wiersza polecenia usługi Foundry na swoich maszynach i aplikacji.
- Zarządzanie wersjami interfejsu wiersza polecenia i zestawu SDK może prowadzić do problemów ze zgodnością.
Aby rozwiązać te problemy, przeprojektowana architektura korzysta z bardziej usprawnionego podejścia. Nowa architektura jest następująca:
W tej nowej architekturze:
- Aplikacja jest samodzielna. Nie wymaga oddzielnego zainstalowania lokalnego interfejsu wiersza polecenia Foundry na maszynie użytkownika końcowego, co ułatwia wdrażanie aplikacji.
- Serwer internetowy REST jest opcjonalny. Nadal możesz użyć serwera internetowego, jeśli chcesz zintegrować się z innymi narzędziami komunikujących się za pośrednictwem protokołu HTTP.
- Zestaw SDK zapewnia natywną obsługę uzupełniania czatów i transkrypcji audio, umożliwiając tworzenie aplikacji konwersacyjnych sztucznej inteligencji z mniejszą liczbą zależności.
Zmiany w interfejsie API
Najnowsza wersja udostępnia bardziej obiektowy i komponowalny interfejs API. Głównym punktem wejścia pozostaje klasa FoundryLocalManager, ale zamiast stanowić płaski zestaw metod operujących przez statyczne wywołania do bezstanowego interfejsu API HTTP, zestaw SDK teraz udostępnia metody w instancji FoundryLocalManager, która zachowuje informacje o stanie usługi i modelach.
| Prymitywny | Poprzednia wersja | Bieżąca wersja |
|---|---|---|
| Configuration | N/A | config = { appName: "app-name", ... } |
| Pobierz menedżera | mgr = new FoundryLocalManager(); |
mgr = FoundryLocalManager.create(config); |
| Pobieranie wykazu | N/A | catalog = mgr.catalog; |
| Wyświetlanie listy modeli | mgr.listCatalogModels(); |
catalog.getModels(); |
| Pobieranie modelu | mgr.getModelInfo("aliasOrModelId"); |
catalog.getModel(alias); |
| Uzyskiwanie wariantu | N/A | model.id; |
| Ustawienie wariantu | N/A | model.selectVariant(modelId); |
| Pobieranie modelu | mgr.downloadModel("aliasOrModelId"); |
model.download(); |
| Ładowanie modelu | mgr.loadModel("aliasOrModelId"); |
model.load(); |
| Odładowanie modelu | mgr.unloadModel("aliasOrModelId"); |
model.unload(); |
| Lista załadowanych modeli | mgr.listLoadedModels(); |
catalog.getLoadedModels(); |
| Uzyskaj ścieżkę modelu | N/A | model.path; |
| Uruchamianie usługi | mgr.startService(); |
mgr.startWebService(); |
| Zatrzymaj usługę | N/A | mgr.stopWebService(); |
| Lokalizacja pamięci podręcznej | mgr.getCacheLocation(); |
config.modelCacheDir |
| Wyświetlanie listy buforowanych modeli | mgr.listCachedModels(); |
catalog.getCachedModels(); |
Interfejs API umożliwia, aby Foundry Local był bardziej konfigurowalny w zakresie serwera WWW, rejestrowania, lokalizacji pamięci podręcznej i wyboru wariantu modelu. Na przykład config program umożliwia skonfigurowanie nazwy aplikacji, poziomu rejestrowania, adresów URL serwera internetowego i katalogów dla danych aplikacji, pamięci podręcznej modelu i dzienników:
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",
};
W poprzedniej wersji lokalnego zestawu SDK języka JavaScript rozwiązania Foundry nie można skonfigurować tych ustawień bezpośrednio za pomocą zestawu SDK, co ogranicza możliwość dostosowywania zachowania usługi.
References
Przewodnik migracji zestawu SDK Python
Aby zwiększyć możliwość dostarczania aplikacji przy użyciu sztucznej inteligencji na urządzeniu, wprowadzono istotne zmiany w architekturze zestawu PYTHON SDK. W tej sekcji opisano kluczowe zmiany ułatwiające migrowanie aplikacji do najnowszej wersji zestawu SDK.
Uwaga / Notatka
W najnowszej wersji zestawu SDK Python (1.0.0) wprowadzono łamiące zgodność zmiany w interfejsie API w stosunku do poprzednich wersji (<=0.5.1).
Na poniższym diagramie pokazano, jak poprzednia architektura w dużym stopniu polegała na używaniu serwera internetowego REST do zarządzania modelami i wnioskowaniem, takimi jak ukończenia czatu:
Zestaw SDK użyje zdalnego wywołania procedury (RPC), aby znaleźć lokalny CLI Foundry na maszynie, uruchomić serwer internetowy, a następnie komunikować się z nim za pośrednictwem protokołu HTTP. Ta architektura miała kilka ograniczeń, w tym:
- Złożoność zarządzania cyklem życia serwera internetowego.
- Trudne wdrożenie: użytkownicy końcowi musieli zainstalować lokalny interfejs wiersza polecenia usługi Foundry na swoich maszynach i aplikacji.
- Zarządzanie wersjami interfejsu wiersza polecenia i zestawu SDK może prowadzić do problemów ze zgodnością.
Aby rozwiązać te problemy, przeprojektowana architektura korzysta z bardziej usprawnionego podejścia. Nowa architektura jest następująca:
W tej nowej architekturze:
- Aplikacja jest samodzielna. Nie wymaga oddzielnego zainstalowania lokalnego interfejsu wiersza polecenia Foundry na maszynie użytkownika końcowego, co ułatwia wdrażanie aplikacji.
- Serwer internetowy REST jest opcjonalny. Nadal możesz użyć serwera internetowego, jeśli chcesz zintegrować się z innymi narzędziami komunikujących się za pośrednictwem protokołu HTTP.
- Zestaw SDK zapewnia natywną obsługę uzupełniania czatów i transkrypcji audio, umożliwiając tworzenie aplikacji konwersacyjnych sztucznej inteligencji z mniejszą liczbą zależności.
Zmiany w interfejsie API
Najnowsza wersja udostępnia bardziej obiektowy i komponowalny interfejs API. Głównym punktem wejścia jest nadal FoundryLocalManager klasa, ale wzorzec inicjowania, zarządzanie modelami i wnioskowanie zmieniły się znacząco.
| Prymitywny | Poprzednia wersja (foundry-local) |
Bieżąca wersja (foundry-local-sdk) |
|---|---|---|
| Pakiet | pip install foundry-local |
pip install foundry-local-sdk |
| Importowanie | from foundry_local import FoundryLocalManager |
from foundry_local_sdk import Configuration, FoundryLocalManager |
| Configuration | N/A | config = Configuration(app_name="app-name") |
| Pobierz menedżera | manager = FoundryLocalManager(alias) |
FoundryLocalManager.initialize(config)manager = FoundryLocalManager.instance |
| Pobieranie wykazu | N/A | catalog = manager.catalog |
| Wyświetlanie listy modeli | manager.list_catalog_models() |
catalog.list_models() |
| Pobieranie modelu | manager.get_model_info(alias) |
catalog.get_model(alias) |
| Pobieranie modelu | manager.download_model(alias) |
model.download(progress_callback) |
| Ładowanie modelu | manager.load_model(alias) |
model.load() |
| Odładowanie modelu | manager.unload_model(alias) |
model.unload() |
| Lista załadowanych modeli | manager.list_loaded_models() |
catalog.get_loaded_models() |
| Wyświetlanie listy buforowanych modeli | manager.list_cached_models() |
catalog.get_cached_models() |
| Lokalizacja pamięci podręcznej | manager.get_cache_location() |
config.model_cache_dir |
| Uruchamianie usługi | manager.start_service() |
manager.start_web_service() |
| Punkt końcowy usługi | manager.endpoint |
manager.urls |
Interfejs API umożliwia, aby Foundry Local był bardziej konfigurowalny w zakresie serwera WWW, rejestrowania, lokalizacji pamięci podręcznej i wyboru wariantu modelu. Na przykład Configuration klasa umożliwia skonfigurowanie nazwy aplikacji, poziomu rejestrowania, adresów URL serwera internetowego i katalogów dla danych aplikacji, pamięci podręcznej modelu i dzienników:
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",
)
References
Przewodnik migracji zestawu Rust SDK
Aby zwiększyć możliwość dostarczania aplikacji przy użyciu sztucznej inteligencji na urządzeniu, wprowadzono istotne zmiany w architekturze zestawu Rust SDK. W tej sekcji opisano kluczowe zmiany ułatwiające migrowanie aplikacji do najnowszej wersji zestawu SDK.
Uwaga / Notatka
W najnowszej wersji zestawu Rust SDK (1.0.0) wprowadzono istotne zmiany w API w stosunku do poprzedniej wersji. Nazwa skrzynki została zmieniona z foundry-local na foundry-local-sdk.
Na poniższym diagramie pokazano, jak poprzednia architektura w dużym stopniu polegała na używaniu serwera internetowego REST do zarządzania modelami i wnioskowaniem, takimi jak ukończenia czatu:
Zestaw SDK użyje zdalnego wywołania proceduralnego (RPC), aby znaleźć plik wykonywalny Foundry Local CLI na maszynie, uruchomić serwer WWW, a następnie komunikować się z nim za pośrednictwem protokołu HTTP. Ta architektura miała kilka ograniczeń, w tym:
- Złożoność zarządzania cyklem życia serwera internetowego.
- Trudne wdrożenie: użytkownicy końcowi musieli zainstalować lokalny interfejs wiersza polecenia usługi Foundry na swoich maszynach i aplikacji.
- Zarządzanie wersjami interfejsu wiersza polecenia i zestawu SDK może prowadzić do problemów ze zgodnością.
Aby rozwiązać te problemy, przeprojektowana architektura korzysta z bardziej usprawnionego podejścia. Nowa architektura jest następująca:
W tej nowej architekturze:
- Aplikacja jest samodzielna. Nie wymaga oddzielnego zainstalowania lokalnego interfejsu wiersza polecenia Foundry na maszynie użytkownika końcowego, co ułatwia wdrażanie aplikacji.
- Serwer internetowy REST jest opcjonalny. Nadal możesz użyć serwera internetowego, jeśli chcesz zintegrować się z innymi narzędziami komunikujących się za pośrednictwem protokołu HTTP.
- Zestaw SDK zapewnia natywną obsługę uzupełniania czatów i transkrypcji audio, umożliwiając tworzenie aplikacji konwersacyjnych sztucznej inteligencji z mniejszą liczbą zależności.
Zmiany w interfejsie API
Najnowsza wersja udostępnia bardziej obiektowy i komponowalny interfejs API. Wzorzec konstruktora został zastąpiony podejściem opartym na konfiguracji, a zarządzanie modelami używa teraz dedykowanych Model obiektów.
| Prymitywny | Poprzednia wersja (foundry-local) |
Bieżąca wersja (foundry-local-sdk) |
|---|---|---|
| Skrzynka | foundry-local |
foundry-local-sdk |
| Configuration | N/A | FoundryLocalConfig::new("app-name") |
| Pobierz menedżera | FoundryLocalManager::builder().build().await? |
FoundryLocalManager::create(config)? |
| Pobieranie wykazu | N/A | manager.catalog() |
| Wyświetlanie listy modeli | manager.list_catalog_models().await? |
manager.catalog().get_models().await? |
| Pobieranie modelu | manager.get_model_info(alias).await? |
manager.catalog().get_model(alias).await? |
| Pobieranie modelu | manager.download_model(alias).await? |
model.download(callback).await? |
| Ładowanie modelu | manager.load_model(alias).await? |
model.load().await? |
| Odładowanie modelu | manager.unload_model(alias).await? |
model.unload().await? |
| Lista załadowanych modeli | manager.list_loaded_models().await? |
manager.catalog().get_loaded_models().await? |
| Wyświetlanie listy buforowanych modeli | manager.list_cached_models().await? |
manager.catalog().get_cached_models().await? |
| Uruchamianie usługi | manager.start_service()? |
manager.start_web_service().await? |
| Punkt końcowy | manager.endpoint()? |
manager.urls() |
| Wywołania HTTP |
reqwest::Client (ręczny interfejs REST) |
Natywny zestaw SDK: model.create_chat_client() |
Nowy zestaw SDK udostępnia natywnych klientów czatów i audio, eliminując w większości przypadków potrzebę ręcznego żądania 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);