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


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

Это важно

  • Foundry Local доступен в предварительной версии. Общедоступные предварительные версии предоставляют ранний доступ к функциям, которые находятся в процессе активного развертывания.
  • Функции, подходы и процессы могут изменяться или иметь ограниченные возможности до общедоступной доступности.

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

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

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

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

Настройка проекта

Высокоуровневая архитектура локального пакета SDK Foundry выглядит следующим образом:

Схема новой архитектуры для Foundry Local.

Пакет SDK — это облегчающая оболочка для API Foundry Local Core C (.dll/.so/.dylib), которая предоставляет более удобный интерфейс для разработчиков JavaScript. Пакет SDK обрабатывает загрузку собственной библиотеки, управление памятью и преобразование типов данных между JavaScript и C. API Foundry Local Core C имеет два варианта, но одна и та же область API:

  • WindowsML (WinML) — технология, специфичная для Windows, использующая WindowsML для получения необходимых драйверов и провайдеров выполнения для доступного оборудования. Это рекомендуемый вариант для пользователей Windows, так как он обеспечивает более высокую производительность и совместимость с широким спектром оборудования.
  • Кроссплатформенный — можно использовать в Windows, macOS и Linux. Следует отметить, что на устройствах macOS с Apple Silicon кроссплатформенный пакет SDK будет использовать платформу Apple Metal для аппаратного ускорения с помощью поставщика выполнения WebGPU onNX.

При установке пакета Sdk для Foundry Local в проект можно установить версию WinML или кроссплатформенную версию.

Используйте Foundry Local в проекте JavaScript, выполнив следующие инструкции для Windows или кроссплатформенные (macOS/Linux/Windows):

  1. Создайте проект JavaScript:
    mkdir app-name
    cd app-name
    npm init -y
    npm pkg set type=module
    
  2. Установите пакет локального пакета SDK для Foundry:
    npm install --winml foundry-local-sdk
    npm install 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}`);
}

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

Образцы

  • Примеры приложений, демонстрирующие использование локального пакета SDK JavaScript для Foundry, можно найти в репозитории GitHub с образцами локального SDK JavaScript для Foundry.

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

Ссылки

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

Руководство по настройке проекта

Существует два пакета NuGet для локального SDK Foundry — пакет WinML и кроссплатформенный пакет, которые имеют один и тот же интерфейс API, но оптимизированы для разных платформ.

  • Windows: использует пакет Microsoft.AI.Foundry.Local.WinML, относящийся к приложениям Windows, использующим платформу Windows Machine Learning (WinML).
  • КроссплатформенныйMicrosoft.AI.Foundry.Local: использует пакет, который можно использовать для кроссплатформенных приложений (Windows, Linux, macOS).

В зависимости от целевой платформы выполните следующие инструкции, чтобы создать новое приложение C# и добавить необходимые зависимости:

Используйте Foundry Local в проекте C#, следуя инструкциям, специфичным для Windows, или кроссплатформенным (macOS/Linux/Windows).

  1. Создайте проект C# и перейдите в него:
    dotnet new console -n app-name
    cd app-name
    
  2. Откройте файл app-name.csproj и измените его:
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net9.0-windows10.0.26100</TargetFramework>
        <RootNamespace>app-name</RootNamespace>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <WindowsAppSDKSelfContained>false</WindowsAppSDKSelfContained>
        <WindowsPackageType>None</WindowsPackageType>
        <EnableCoreMrtTooling>false</EnableCoreMrtTooling>
      </PropertyGroup>
    
      <PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
        <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AI.Foundry.Local.WinML" Version="0.9.0" />
        <PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
        <PackageReference Include="OpenAI" Version="2.5.0" />
      </ItemGroup>
    
    </Project>
    
  3. nuget.config Создайте файл в корневом каталоге проекта со следующим содержимым, чтобы пакеты были правильно восстановлены:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <clear />
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
        <add key="ORT" value="https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT/nuget/v3/index.json" />
      </packageSources>
      <packageSourceMapping>
        <packageSource key="nuget.org">
          <package pattern="*" />
        </packageSource>
        <packageSource key="ORT">
          <package pattern="*Foundry*" />
        </packageSource>
      </packageSourceMapping>
    </configuration>
    

Замечание

Пакет NuGet Microsoft.AI.Foundry.Local предназначен для net8.0. Прямая совместимость .NET обеспечивает бесперебойную работу в проектах, предназначенных для .NET 9, .NET 10 и более поздних версий без необходимости дополнительной настройки. Пакет SDK использует только API .NET 8 и не содержит путей кода для конкретной платформы, поэтому поведение идентично независимо от целевой среды выполнения приложения. Мы нацелены на .NET 8, так как это текущий выпуск долгосрочной поддержки (LTS) с самой широкой базой установки.

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

Используйте этот фрагмент кода, чтобы убедиться, что пакет 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);
}

Ссылки: