Поделиться через


Справочник по локальному пакету SDK для Foundry

Локальный пакет SDK Foundry позволяет отправлять функции искусственного интеллекта в приложениях, которые могут использовать локальные модели ИИ с помощью простого и интуитивно понятного API. Пакет SDK абстрагирует сложности управления моделями ИИ и обеспечивает простой интерфейс для интеграции локальных возможностей искусственного интеллекта в ваши приложения. В этом справочнике описаны реализации пакета SDK для C#, JavaScript, Python и Rust.

Пакет SDK не требует установки локального интерфейса командной строки Foundry на компьютере конечных пользователей, что позволяет отправлять приложения без дополнительных действий по настройке для пользователей — ваши приложения являются автономными. Дополнительные преимущества локального пакета SDK для Foundry:

  • Обнаружение оборудования и оптимизация: автоматическая оценка возможностей для GPU, NPU и ЦП.
  • Execution provider management (Windows): автоматическое скачивание и регистрация соответствующих поставщиков выполнения ONNX (CUDA, Vitis, QNN, OpenVINO, TensorRT) на основе возможностей устройств.
  • Поддержка металла с помощью WebGpu (macOS): встроенная поддержка запуска моделей в Apple Silicon с оптимизированной производительностью.
  • Приобретение модели: Беспрепятственная загрузка из каталога моделей Foundry с учетом версий, обновлений и автоматизированным подбором моделей, оптимизированным для оборудования, с поддержкой резервных вариантов.
  • Эффективная среда выполнения: добавляет примерно 20 МБ к размеру приложения, выполняется на устройствах от мобильных телефонов до настольных компьютеров.
  • Совместимость API OpenAI: простая интеграция с моделями и инструментами OpenAI.
  • Необязательный сервер REST: запуск Foundry Local в качестве локальной службы, доступной другими приложениями.

Справочник по пакету SDK для C#

Установка пакетов

Если вы разрабатываете или поставляете на Windows, выберите вкладку Windows. Пакет Windows интегрируется со средой выполнения Windows ML — обеспечивает тот же интерфейс API с более широким спектром аппаратного ускорения.

dotnet add package Microsoft.AI.Foundry.Local.WinML
dotnet add package OpenAI

Примеры C# в репозитории GitHub предварительно настроены. Если вы создаете с нуля, ознакомьтесь со справочником по локальному пакету SDK Foundry для получения дополнительных сведений о настройке проекта C# с помощью Foundry Local.

конфигурация проекта

Примеры репозиториев включают .csproj файл, который автоматически обнаруживает платформу. Если вы создаете проект с нуля, используйте эту конфигурацию в качестве ссылки:

<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.26100</TargetFramework>
    <WindowsAppSDKSelfContained>false</WindowsAppSDKSelfContained>
    <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>

  <!-- Windows: WinML for hardware acceleration -->
  <ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
    <PackageReference Include="Microsoft.AI.Foundry.Local.WinML" />
  </ItemGroup>

  <!-- Non-Windows: standard SDK -->
  <ItemGroup Condition="!$([MSBuild]::IsOSPlatform('Windows'))">
    <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>

В следующей таблице описываются ключевые параметры проекта:

Setting Описание
TargetFramework На Windows целевые объекты net9.0-windows10.0.26100 для аппаратного ускорения WinML. На других платформах целевые объекты net9.0.
WindowsAppSDKSelfContained Установите значение false, чтобы использовать Windows App SDK, установленный в системе, вместо включения его в комплект.
WindowsPackageType Установите для None сборки как приложение для рабочего стола без упаковки (без упаковки MSIX).
EnableCoreMrtTooling Установите false чтобы отключить средства управления ресурсами MRT Core, которые не нужны для консольных приложений.
RuntimeIdentifier По умолчанию используется идентификатор среды выполнения текущего SDK, что обеспечивает выбор правильных бинарных файлов платформы.
Microsoft.AI.Foundry.Local.WinML Пакет для Windows, который использует WinML для аппаратного ускорения и автоматического управления поставщиком служб выполнения.
Microsoft.AI.Foundry.Local Кроссплатформенный пакет для macOS, Linux и Windows без WinML.
Microsoft.ML.OnnxRuntime.Gpu / OnnxRuntimeGenAI.Cuda Пакеты поддержки GPU Linux для оборудования с поддержкой CUDA.

Быстрый старт

Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может инициализировать и получить доступ к локальному каталогу моделей.

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

В этом примере выводится количество моделей, доступных для вашего оборудования.

Образцы

Справочник по API

API транскрибирования собственного звука

Пакет SDK для C# включает собственный звуковой клиент для транскрибирования аудиофайлов на устройстве с помощью моделей Whisper. При этом выполняется вывод в процессе без необходимости веб-сервера REST.

Установите аудиоклиент

После загрузки модели Whisper получите звуковой клиент:

var audioClient = await model.GetAudioClientAsync();

Методы транскрибирования звука

Метод Signature Описание
TranscribeAudioStreamingAsync() (string audioFilePath, CancellationToken ct) => IAsyncEnumerable<TranscriptionChunk> Результаты транскрибирования передаются потоком пошагово. Каждый блок имеет Text свойство.

Параметры AudioClient

Недвижимость Тип Описание
Language string Код языка ISO 639-1 (например, "en"). Улучшает точность.
Temperature float Температура выборки (0,0–1.0). Более низкие значения являются более детерминированными.

Пример

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

Ссылки:

Справочник по пакету SDK для JavaScript

Установка пакетов

Если вы разрабатываете или поставляете на Windows, выберите вкладку Windows. Пакет Windows интегрируется со средой выполнения Windows ML — обеспечивает тот же интерфейс API с более широким спектром аппаратного ускорения.

npm install foundry-local-sdk-winml openai

Быстрый старт

Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может инициализировать и получить доступ к локальному каталогу моделей.

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

В этом примере выводится список доступных моделей для оборудования.

Образцы

Справочник по API

Ссылки

Справочник по пакету SDK Python

Установка пакетов

Если вы разрабатываете или поставляете на Windows, выберите вкладку Windows. Пакет Windows интегрируется со средой выполнения Windows ML — обеспечивает тот же интерфейс API с более широким спектром аппаратного ускорения.

pip install foundry-local-sdk-winml openai

Быстрый старт

Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может инициализировать и получить доступ к локальному каталогу моделей.

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

В этом примере выводится количество моделей, доступных для вашего оборудования.

Образцы

  • Для примеров приложений, демонстрирующих использование Foundry Local Python SDK, см. репозиторий GitHub Foundry Local SDK Samples.

Конфигурация

Класс Configuration позволяет настроить поведение пакета 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"},
)
Параметр Тип Описание
app_name str Имя приложения.
log_level str Уровень ведения журнала (например, "info", "debug").
model_cache_dir str Каталог для кэшированных моделей.
web dict Конфигурация веб-службы с ключом urls .

Основной API

Метод Описание
FoundryLocalManager.initialize(config) Инициализируйте синглтон-менеджер с помощью Configuration.
FoundryLocalManager.instance Получите доступ к инициализированному экземпляру диспетчера.
manager.catalog.list_models() Список всех доступных моделей в каталоге.
manager.catalog.get_model(alias) Получение модели по псевдониму.
manager.catalog.get_cached_models() Перечисление моделей в локальном кэше.
manager.catalog.get_loaded_models() Список моделей, загруженных в данный момент.
model.download(progress_callback) Загрузите модель (будет пропущено, если уже кэшировано).
model.load() Загрузите модель для вывода.
model.unload() Выгрузите модель.
model.is_cached Проверьте, кэшируется ли модель локально.
model.is_loaded Проверьте, загружена ли модель.

API собственных завершений чата

После загрузки модели получите клиент чата:

client = model.get_chat_client()
Метод Описание
client.complete_chat(messages) Создайте полный чат-ответ.
client.complete_streaming_chat(messages) Потоки блоков ответа в чате.

API транскрибирования собственного звука

После загрузки модели Whisper получите звуковой клиент:

audio_client = model.get_audio_client()
Метод Описание
audio_client.transcribe(file_path) Транскрибирование звукового файла. Возвращает объект со свойством text .

Ссылки:

Справочник по пакету SDK Rust

Установка пакетов

Если вы разрабатываете или поставляете на Windows, выберите вкладку Windows. Пакет Windows интегрируется со средой выполнения Windows ML — обеспечивает тот же интерфейс API с более широким спектром аппаратного ускорения.

cargo add foundry-local-sdk --features winml
cargo add tokio --features full
cargo add tokio-stream anyhow

Быстрый старт

Используйте этот фрагмент кода, чтобы убедиться, что пакет SDK может инициализировать и получить доступ к локальному каталогу моделей.

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(())
}

В этом примере выводится количество моделей, доступных для вашего оборудования.

Образцы

Конфигурация

Структура FoundryLocalConfig позволяет настроить поведение пакета 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");

Основной API

Метод Описание
FoundryLocalManager::create(config) Создайте новый менеджер с помощью FoundryLocalConfig.
manager.catalog().get_models().await Список всех доступных моделей.
manager.catalog().get_model(alias).await Получение модели по псевдониму.
manager.catalog().get_cached_models().await Перечисление моделей в локальном кэше.
manager.catalog().get_loaded_models().await Список моделей, загруженных в данный момент.
model.download(callback).await Загрузите модель (будет пропущено, если уже кэшировано).
model.load().await Загрузите модель для вывода.
model.unload().await Выгрузите модель.

API собственных завершений чата

После загрузки модели создайте клиент чата с дополнительными параметрами:

let client = model.create_chat_client()
    .temperature(0.7)
    .max_tokens(256);
Метод Описание
client.complete_chat(&messages, tools).await Создайте полный чат-ответ.
client.complete_streaming_chat(&messages, tools).await Части ответа чата в потоке.

Типы сообщений: ChatCompletionRequestSystemMessage, ChatCompletionRequestUserMessage, ChatCompletionRequestMessage.

API транскрибирования собственного звука

После загрузки модели Whisper создайте звуковой клиент:

let audio_client = model.create_audio_client();
Метод Описание
audio_client.transcribe(file_path).await Транскрибирование звукового файла. Возвращает объект с полем text .

Ссылки: