Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Локальный пакет SDK Foundry позволяет добавлять функции ИИ в приложения, которые используют локальные модели искусственного интеллекта, с помощью простого и интуитивно понятного API. Пакет SDK абстрагирует сложности управления моделями ИИ и обеспечивает простой интерфейс для интеграции локальных возможностей искусственного интеллекта в ваши приложения. В этом справочнике описаны реализации пакета SDK для C#, 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#
Установка пакетов
dotnet add package Microsoft.AI.Foundry.Local
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.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>
В следующей таблице описываются ключевые параметры проекта:
| Setting | Описание |
|---|---|
TargetFramework |
Предназначен для версии .NET, требуемой примером. |
RuntimeIdentifier |
По умолчанию используется идентификатор среды выполнения текущего SDK, что обеспечивает выбор правильных бинарных файлов платформы. |
Microsoft.AI.Foundry.Local |
Пакет локального SDK Foundry для Windows, macOS и Linux. |
Быстрый старт
Используйте этот фрагмент кода, чтобы убедиться, что пакет 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()}");
В этом примере выводится количество моделей, доступных для вашего оборудования.
Образцы
- Для примеров приложений, демонстрирующих использование локального SDK Foundry C#, см. GitHub-репозиторий с примерами SDK Foundry Local C#.
Справочник по API
- Для получения более подробной информации о Foundry Local C# SDK см. справочник по API Foundry Local C# SDK.
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
Установка пакетов
npm install foundry-local-sdk 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}`);
}
В этом примере выводится список доступных моделей для оборудования.
Образцы
- Примеры приложений, демонстрирующие использование Local JavaScript SDK для Foundry, см. в репозитории образцов на GitHub для Local JavaScript SDK Foundry.
Справочник по API
- Дополнительные сведения о пакете Local JavaScript SDK для Foundry см. в справочнике по API Local JavaScript SDK для Foundry.
Ссылки
Справочник по пакету SDK Python
Установка пакетов
pip install foundry-local-sdk 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
Установка пакетов
cargo add foundry-local-sdk
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(())
}
В этом примере выводится количество моделей, доступных для вашего оборудования.
Образцы
- Примеры приложений, демонстрирующих, как использовать Foundry Local Rust SDK, можно найти в репозитории образцов SDK Foundry Local на GitHub.
Конфигурация
Структура 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 . |
Ссылки:
Справочник по SDK для C++
Prerequisites
Пакет SDK для C++ предоставляет обёртку, состоящую только из заголовочных файлов, над собственной средой выполнения Foundry Local. Развернутое приложение не требует Foundry Local CLI или среды выполнения .NET.
Клонируйте пример нативного чата, чтобы начать работу с настроенным проектом CMake:
git clone https://github.com/microsoft-foundry/foundry-samples.git
cd foundry-samples/samples/cpp/foundry-local/native-chat-completions
Для примеров C++ требуется:
Настройте и создайте пример:
cmake -S . -B build
cmake --build build --config Release
Во время настройки пример восстанавливает пакет NuGet версии 2.2.1 Microsoft.AI.Foundry.Local.Runtime в build/_packages. Пакет содержит заголовки C++ и нативные библиотеки для Windows, Linux и macOS. Вам не нужен отдельный пакет WinML.
Конфигурация CMake выбирает ресурсы среды выполнения для вашей операционной системы и архитектуры и копирует необходимые собственные библиотеки рядом с исполняемым файлом. В macOS и Linux запустите исполняемый файл из build. В Windows запустите .exe файл из build.
Выберите нативные ресурсы, соответствующие операционной системе и архитектуре вашего приложения:
| Операционная система | Architecture | Идентификатор среды выполнения (RID) |
|---|---|---|
| Windows | x64 или ARM64 |
win-x64 или win-arm64 |
| Linux | x64 или ARM64 |
linux-x64 или linux-arm64 |
| macOS | Apple silicon (ARM64) | osx-arm64 |
Добавить
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/build/native/include в путь поиска include-файлов компилятора. Свяжите нативную библиотеку из пакета's
build/_packages/Microsoft.AI.Foundry.Local.Runtime.2.2.1/runtimes/<rid>/native каталог:
-
foundry_local.libна Windows. -
libfoundry_local.soв Linux. -
libfoundry_local.dylibв macOS.
Разверните соответствующую нативную среду выполнения и библиотеки зависимостей рядом с исполняемым файлом или в пути поиска библиотек платформы. Храните восстановленные версии пакета вместе. Не смешивайте заголовки и нативные библиотеки из разных выпусков.
Быстрый старт
Замените main.cpp в примере следующим кодом, чтобы инициализировать пакет SDK и подсчитать модели в каталоге:
#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;
}
Пример выводит Models available:, за которым следует число моделей каталога.
Не скачивает и не загружает модель. Сохраняйте диспетчер активным при использовании объектов каталогов, моделей или метаданных, полученных из него.
Ссылка: объявления оболочки C++ для Configuration, Manager и Catalog.
Основной API
Оболочка использует идиому RAII (инициализация при получении ресурса) для освобождения нативных дескрипторов, когда объекты выходят из области видимости.
| API | Описание |
|---|---|
Manager{Configuration("app-name")} |
Инициализировать менеджер с именем приложения. |
manager.GetCatalog() |
Получите каталог моделей. |
catalog.GetModels() |
Перечислите модели в каталоге. |
catalog.GetModel(alias) |
Найдите модель по псевдониму. Проверьте возвращенный указатель перед его использованием. |
model->Download() |
Загрузите модель в локальный кэш. |
model->Load() |
Загрузите модель для вывода. |
model->Unload() |
Выгрузите модель из памяти. |
ChatSession::ProcessRequest(request) |
Запустите запрос чата и верните ответ. |
Справочник по API и примеры
Используйте общедоступный заголовочный файл и поддерживаемые примеры для полных рабочих процессов API и инференса: