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.
Foundry Local SDK umożliwia dostarczanie funkcji sztucznej inteligencji w aplikacjach korzystających z lokalnych modeli sztucznej inteligencji za pomocą prostego i intuicyjnego interfejsu API. Zestaw SDK wyodrębnia złożoność zarządzania modelami sztucznej inteligencji i zapewnia bezproblemowe środowisko integracji lokalnych funkcji sztucznej inteligencji z aplikacjami. W tej dokumentacji przedstawiono implementacje zestawu SDK dla języków C#, C++, JavaScript, Python i Rust.
SDK nie wymaga zainstalowania lokalnego interfejsu wiersza polecenia Foundry na komputerze użytkowników końcowych, co umożliwia dostarczanie aplikacji bez dodatkowych kroków konfiguracji dla użytkowników — Twoje aplikacje są samodzielne. Dodatkowe korzyści lokalnego zestawu SDK Foundry obejmują:
- Wykrywanie i optymalizacja sprzętu: automatyczna ocena możliwości procesora GPU, procesora NPU i procesora CPU.
- Zarządzanie dostawcami wykonawczymi (Windows): Automatyczne pobieranie i rejestrowanie odpowiednich dostawców wykonawczych ONNX Runtime (CUDA, Vitis, QNN, OpenVINO, TensorRT) na podstawie możliwości urządzenia.
- Obsługa systemu operacyjnego za pośrednictwem protokołu WebGpu (macOS): natywna obsługa uruchamiania modeli w systemie Apple Silicon ze zoptymalizowaną wydajnością.
- Pozyskiwanie modelu: bezproblemowe pobieranie z Foundry Model Catalog z obsługą wersji, aktualizacji i automatycznym wyborem modelu zoptymalizowanego pod kątem sprzętu oraz z możliwością stosowania rezerwowych rozwiązań.
- Wydajne środowisko uruchomieniowe: dodaje około 20 MB do rozmiaru aplikacji, działa na urządzeniach od telefonów komórkowych do komputerów stacjonarnych.
- Zgodność interfejsu API openAI: łatwa integracja z modelami i narzędziami OpenAI.
- Opcjonalny serwer REST: uruchom narzędzie Foundry Local jako usługę lokalną dostępną dla innych aplikacji.
Dokumentacja zestawu SDK języka C#
Instalowanie pakietów
dotnet add package Microsoft.AI.Foundry.Local
dotnet add package OpenAI
Przykłady języka C# w repozytorium GitHub to wstępnie skonfigurowane projekty. Jeśli tworzysz od podstaw, zapoznaj się z dokumentacją zestawu SDK lokalnego rozwiązania Foundry , aby uzyskać więcej informacji na temat sposobu konfigurowania projektu w języku C# przy użyciu rozwiązania Foundry Local.
Konfiguracja projektu
Przykładowe repozytoria zawierają .csproj plik, który automatycznie obsługuje wykrywanie platformy. Jeśli tworzysz projekt od podstaw, użyj tej konfiguracji jako odwołania:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<!-- Windows: target Windows SDK for WinML hardware acceleration -->
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
<Platforms>ARM64;x64</Platforms>
<WindowsPackageType>None</WindowsPackageType>
<EnableCoreMrtTooling>false</EnableCoreMrtTooling>
</PropertyGroup>
<!-- Non-Windows: standard .NET -->
<PropertyGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
<TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
<RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AI.Foundry.Local" />
</ItemGroup>
<!-- Linux GPU support -->
<ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-x64'">
<PackageReference Include="Microsoft.ML.OnnxRuntime.Gpu" />
<PackageReference Include="Microsoft.ML.OnnxRuntimeGenAI.Cuda" />
</ItemGroup>
<!-- Shared utilities -->
<ItemGroup>
<Compile Include="../Shared/*.cs" />
</ItemGroup>
</Project>
W poniższej tabeli opisano kluczowe ustawienia projektu:
| Setting | Opis |
|---|---|
TargetFramework |
Dotyczy wersji .NET wymaganej przez przykład. |
RuntimeIdentifier |
Domyślnie jest to identyfikator czasu wykonywania bieżącego pakietu SDK, zapewniając, że wybrano prawidłowe pliki binarne dla platformy. |
Microsoft.AI.Foundry.Local |
Pakiet lokalnego zestawu SDK usługi Foundry dla Windows, macOS i Linux. |
Szybki start
Użyj tego fragmentu kodu, aby sprawdzić, czy zestaw SDK może zainicjować katalog modeli lokalnych i uzyskać do niego dostęp.
using Microsoft.AI.Foundry.Local;
using Microsoft.Extensions.Logging;
using System.Linq;
var config = new Configuration
{
AppName = "app-name",
LogLevel = Microsoft.AI.Foundry.Local.LogLevel.Information,
};
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Information);
});
var logger = loggerFactory.CreateLogger<Program>();
await FoundryLocalManager.CreateAsync(config, logger);
var manager = FoundryLocalManager.Instance;
var catalog = await manager.GetCatalogAsync();
var models = await catalog.ListModelsAsync();
Console.WriteLine($"Models available: {models.Count()}");
W tym przykładzie wyświetlana jest liczba modeli dostępnych dla twojego sprzętu.
Próbki
- Przykładowe aplikacje, które pokazują, jak używać lokalnego zestawu SDK języka C# usługi Foundry, zobacz Foundry Local C# SDK Samples GitHub repository .
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.
Natywny interfejs API transkrypcji audio
Zestaw SDK języka C# zawiera natywnego klienta audio do transkrypcji plików audio na urządzeniu przy użyciu modeli Whisper. Spowoduje to uruchomienie wnioskowania w procesie bez konieczności korzystania z serwera internetowego REST.
Pobierz klienta audio
Po załadowaniu modelu Whisper pobierz klienta audio:
var audioClient = await model.GetAudioClientAsync();
Metody transkrypcji audio
| Metoda | Signature | Opis |
|---|---|---|
TranscribeAudioStreamingAsync() |
(string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> |
Przesyła strumieniowo wyniki transkrypcji według fragmentu. Każdy fragment ma Text właściwość . |
Ustawienia elementu AudioClient
| Majątek | Typ | Opis |
|---|---|---|
Language |
string |
Kod języka ISO 639-1 (na przykład "en"). Poprawia dokładność. |
Temperature |
float |
Temperatura próbkowania (0,0–1,0). Niższe wartości są bardziej deterministyczne. |
Przykład
var audioClient = await model.GetAudioClientAsync();
audioClient.Settings.Language = "en";
audioClient.Settings.Temperature = 0.0f;
await foreach (var chunk in audioClient.TranscribeAudioStreamingAsync(
"recording.mp3", CancellationToken.None))
{
Console.Write(chunk.Text);
}
Dokumentacja:
Dokumentacja zestawu SDK języka JavaScript
Instalowanie pakietów
npm install foundry-local-sdk openai
Szybki start
Użyj tego fragmentu kodu, aby sprawdzić, czy zestaw SDK może zainicjować katalog modeli lokalnych i uzyskać do niego dostęp.
import { FoundryLocalManager } from 'foundry-local-sdk';
console.log('Initializing Foundry Local SDK...');
const manager = FoundryLocalManager.create({
appName: 'foundry_local_samples',
logLevel: 'info'
});
console.log('✓ SDK initialized successfully');
// Explore available models
console.log('\nFetching available models...');
const catalog = manager.catalog;
const models = await catalog.getModels();
console.log(`Found ${models.length} models:`);
for (const model of models) {
console.log(` - ${model.alias}`);
}
W tym przykładzie zostanie wyświetlona lista dostępnych modeli sprzętu.
Próbki
- Aby zapoznać się z przykładowymi aplikacjami, które pokazują, jak używać lokalnego zestawu SDK JavaScript usługi Foundry, zobacz Foundry Local JavaScript SDK Samples GitHub repository .
Odniesienie do API
- Aby uzyskać więcej informacji na temat lokalnego zestawu SDK języka JavaScript rozwiązania Foundry, przeczytaj Dokumentacja lokalnego interfejsu API zestawu JavaScript SDK usługi Foundry.
References
Dokumentacja zestawu SDK Python
Instalowanie pakietów
pip install foundry-local-sdk openai
Szybki start
Użyj tego fragmentu kodu, aby sprawdzić, czy zestaw SDK może zainicjować katalog modeli lokalnych i uzyskać do niego dostęp.
import asyncio
from foundry_local_sdk import Configuration, FoundryLocalManager
async def main():
config = Configuration(app_name="app-name")
FoundryLocalManager.initialize(config)
manager = FoundryLocalManager.instance
models = manager.catalog.list_models()
print(f"Models available: {len(models)}")
if __name__ == "__main__":
asyncio.run(main())
W tym przykładzie wyświetlana jest liczba modeli dostępnych dla twojego sprzętu.
Próbki
- Aby uzyskać przykładowe aplikacje pokazujące, jak używać lokalnego SDK Python w rozwiązaniu Foundry, zobacz repozytorium GitHub: Foundry Local SDK Samples.
Konfiguracja
Klasa Configuration umożliwia dostosowanie zachowania zestawu SDK:
from foundry_local_sdk import Configuration
config = Configuration(
app_name="app-name",
log_level="info",
model_cache_dir="./foundry_local_data/model_cache",
web={"urls": "http://127.0.0.1:55588"},
)
| Parametr | Typ | Opis |
|---|---|---|
app_name |
str |
Nazwa aplikacji. |
log_level |
str |
Poziom rejestrowania (na przykład "info", "debug"). |
model_cache_dir |
str |
Katalog dla buforowanych modeli. |
web |
dict |
Konfiguracja usługi internetowej z kluczem urls . |
Główne API
| Metoda | Opis |
|---|---|
FoundryLocalManager.initialize(config) |
Zainicjuj menedżera singletona za pomocą Configuration. |
FoundryLocalManager.instance |
Uzyskaj dostęp do zainicjowanej instancji menedżera. |
manager.catalog.list_models() |
Wyświetl listę wszystkich dostępnych modeli w wykazie. |
manager.catalog.get_model(alias) |
Pozyskaj model po aliasie. |
manager.catalog.get_cached_models() |
Wyświetlanie listy modeli w lokalnej pamięci podręcznej. |
manager.catalog.get_loaded_models() |
Wyświetl listę aktualnie załadowanych modeli. |
model.download(progress_callback) |
Pobierz model (pomija, jeśli jest buforowany). |
model.load() |
Załaduj model do wnioskowania. |
model.unload() |
Odładuj model. |
model.is_cached |
Sprawdź, czy model jest buforowany lokalnie. |
model.is_loaded |
Sprawdź, czy model został załadowany. |
Natywny Interfejs API uzupełniania czatów
Po załadowaniu modelu pobierz klienta czatu:
client = model.get_chat_client()
| Metoda | Opis |
|---|---|
client.complete_chat(messages) |
Wygeneruj pełną odpowiedź na czat. |
client.complete_streaming_chat(messages) |
Fragmenty odpowiedzi czatu strumieniowego. |
Natywny interfejs API transkrypcji audio
Po załadowaniu modelu Whisper pobierz klienta audio:
audio_client = model.get_audio_client()
| Metoda | Opis |
|---|---|
audio_client.transcribe(file_path) |
Transkrypcja pliku audio. Zwraca obiekt z właściwością text . |
Dokumentacja:
Dokumentacja zestawu Rust SDK
Instalowanie pakietów
cargo add foundry-local-sdk
cargo add tokio --features full
cargo add tokio-stream anyhow
Szybki start
Użyj tego fragmentu kodu, aby sprawdzić, czy zestaw SDK może zainicjować katalog modeli lokalnych i uzyskać do niego dostęp.
use foundry_local_sdk::{FoundryLocalConfig, FoundryLocalManager};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let manager = FoundryLocalManager::create(FoundryLocalConfig::new("app-name"))?;
let models = manager.catalog().get_models().await?;
println!("Models available: {}", models.len());
Ok(())
}
W tym przykładzie wyświetlana jest liczba modeli dostępnych dla twojego sprzętu.
Próbki
- Aby zapoznać się z przykładowymi aplikacjami, które pokazują, jak używać lokalnego zestawu SDK języka Rust usługi Foundry, zobacz repozytorium Foundry Local SDK Samples GitHub repozytorium.
Konfiguracja
Struktura FoundryLocalConfig umożliwia dostosowanie zachowania zestawu SDK:
use foundry_local_sdk::FoundryLocalConfig;
let config = FoundryLocalConfig::new("app-name")
.with_log_level("info")
.with_model_cache_dir("./foundry_local_data/model_cache")
.with_web_urls("http://127.0.0.1:55588");
Główne API
| Metoda | Opis |
|---|---|
FoundryLocalManager::create(config) |
Utwórz nowego menedżera za pomocą polecenia FoundryLocalConfig. |
manager.catalog().get_models().await |
Wyświetl listę wszystkich dostępnych modeli. |
manager.catalog().get_model(alias).await |
Pozyskaj model po aliasie. |
manager.catalog().get_cached_models().await |
Wyświetlanie listy modeli w lokalnej pamięci podręcznej. |
manager.catalog().get_loaded_models().await |
Wyświetl listę aktualnie załadowanych modeli. |
model.download(callback).await |
Pobierz model (pomija, jeśli jest buforowany). |
model.load().await |
Załaduj model do wnioskowania. |
model.unload().await |
Odładuj model. |
Natywny Interfejs API uzupełniania czatów
Po załadowaniu modelu utwórz klienta czatu z opcjonalnymi ustawieniami:
let client = model.create_chat_client()
.temperature(0.7)
.max_tokens(256);
| Metoda | Opis |
|---|---|
client.complete_chat(&messages, tools).await |
Wygeneruj pełną odpowiedź na czat. |
client.complete_streaming_chat(&messages, tools).await |
Fragmenty odpowiedzi czatu strumieniowego. |
Typy komunikatów: ChatCompletionRequestSystemMessage, , ChatCompletionRequestUserMessageChatCompletionRequestMessage.
Natywny interfejs API transkrypcji audio
Po załadowaniu modelu Whisper utwórz klienta audio:
let audio_client = model.create_audio_client();
| Metoda | Opis |
|---|---|
audio_client.transcribe(file_path).await |
Transkrypcja pliku audio. Zwraca obiekt z polem text . |
Dokumentacja:
Dokumentacja referencyjna zestawu SDK języka C++
Prerequisites
Zestaw SDK języka C++ udostępnia wrapper wyłącznie nagłówkowy dla natywnego środowiska uruchomieniowego Foundry Local. Wdrożona aplikacja nie wymaga narzędzia Foundry Local CLI ani środowiska uruchomieniowego .NET.
Sklonuj przykład czatu natywnego, aby rozpocząć od skonfigurowanego projektu CMake:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/cpp/foundry-local/native-chat-completions
Przykłady języka C++ wymagają:
- CMake 3.20 lub nowszy.
- Kompilator C++20.
-
Interfejs wiersza polecenia narzędzia NuGet na urządzeniu
PATH.
Skonfiguruj i skompiluj przykład:
cmake -S . -B build
cmake --build build --config Release
Podczas konfiguracji przykład odtwarza pakiet NuGet w wersji 2.2.1 z Microsoft.AI.Foundry.Local.Runtime do build/_packages. Pakiet zawiera nagłówki języka C++ i biblioteki natywne dla Windows, Linux i macOS. Nie potrzebujesz oddzielnego pakietu WinML.
Konfiguracja narzędzia CMake wybiera zasoby środowiska uruchomieniowego dla Twojego systemu operacyjnego i architektury oraz kopiuje wymagane biblioteki natywne obok pliku wykonywalnego. W systemach macOS i Linux uruchom plik wykonywalny z build. W systemie Windows uruchom plik z build.
Wybierz zasoby natywne zgodne z systemem operacyjnym i architekturą aplikacji:
| System operacyjny | Architecture | Identyfikator środowiska uruchomieniowego (RID) |
|---|---|---|
| Windows | x64 lub ARM64 |
win-x64 lub win-arm64 |
| Linux | x64 lub ARM64 |
linux-x64 lub linux-arm64 |
| macOS | Apple silicon (ARM64) | osx-arm64 |
Dodaj
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/build/native/include do ścieżki dołączania kompilatora. Połącz bibliotekę natywną z pakietu
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/runtimes/<rid>/native katalog:
-
foundry_local.libw systemie Windows. -
libfoundry_local.sow systemie Linux. -
libfoundry_local.dylibw systemie macOS.
Umieść pasujące natywne biblioteki środowiska uruchomieniowego i zależności obok pliku wykonywalnego lub w ścieżce wyszukiwania bibliotek platformy. Zachowaj przywrócone wersje pakietów razem. Nie mieszaj nagłówków i bibliotek natywnych z różnych wersji.
Szybki start
Zastąp element main.cpp w przykładzie następującym kodem, aby zainicjować zestaw SDK i zliczyć modele w katalogu:
#include <foundry_local/foundry_local_cpp.h>
#include <iostream>
using namespace foundry_local;
int main() {
try {
Manager manager{Configuration("app-name")};
auto models = manager.GetCatalog().GetModels();
std::cout << "Models available: " << models.size() << "\n";
} catch (const Error& error) {
std::cerr << "Foundry Local error [" << error.Code()
<< "]: " << error.what() << "\n";
return 1;
}
return 0;
}
Przykład wypisuje Models available:, po którym następuje liczba modeli katalogu.
Nie pobiera ani nie ładuje modelu. Utrzymuj menedżera przy życiu podczas korzystania z katalogu, modelu lub obiektów metadanych uzyskanych za jego pomocą.
Informacje referencyjne: deklaracje otoki języka C++ dla elementów Configuration, Manager i Catalog.
Główne API
Klasa opakowująca używa idiomu resource acquisition is initialization (RAII) w celu zwolnienia natywnych uchwytów, gdy obiekty wychodzą poza zakres.
| API | Opis |
|---|---|
Manager{Configuration("app-name")} |
Zainicjuj menedżera z nazwą aplikacji. |
manager.GetCatalog() |
Pobierz wykaz modeli. |
catalog.GetModels() |
Wyświetl modele w katalogu. |
catalog.GetModel(alias) |
Wyszukaj model według aliasu. Przed jego użyciem sprawdź zwrócony wskaźnik. |
model->Download() |
Pobierz model do lokalnej pamięci podręcznej. |
model->Load() |
Załaduj model do wnioskowania. |
model->Unload() |
Zwolnij model z pamięci. |
ChatSession::ProcessRequest(request) |
Uruchom żądanie czatu i zwróć odpowiedź. |
Dokumentacja interfejsu API i przykłady
Użyj nagłówka publicznego i obsługiwanych przykładów dla kompletnego interfejsu API i przepływów pracy wnioskowania: