Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве приведены инструкции по переносу кода из устаревшей версии локального пакета SDK Foundry на текущую версию. Новый пакет SDK удаляет зависимость от локального интерфейса командной строки Foundry и поэтому позволяет отправлять приложения без необходимости устанавливать интерфейс командной строки или настраивать локальную среду Foundry. Новый пакет SDK также включает улучшения API для повышения удобства использования и производительности.
Руководство по миграции пакета SDK для C#
Чтобы улучшить возможность отправки приложений с использованием встроенного искусственного интеллекта, в версии 0.8.0 и более поздних существуют существенные изменения в архитектуре SDK на C#. В этом разделе описаны основные изменения, которые помогут перенести приложения в последнюю версию пакета SDK.
Замечание
В версии 0.8.0 пакета SDK и более поздних версиях в API имеются критические изменения из предыдущих версий (<=0.3.0).
На следующей схеме показано, как предыдущая архитектура для более ранних 0.8.0 версий зависит от использования веб-сервера REST для управления моделями и выводами, такими как завершение чата:
Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:
- Сложность управления жизненным циклом веб-сервера.
- Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
- Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.
Для решения этих проблем переработанная архитектура в версии и более поздних версиях 0.8.0 использует более упрощенный подход. Новая архитектура выглядит следующим образом:
В этой новой архитектуре:
- Приложение самодостаточено. Для развертывания приложений не требуется устанавливать Foundry Local CLI отдельно на машину конечного пользователя, что облегчает процесс развертывания.
- Веб-сервер REST необязателен. Вы по-прежнему можете использовать веб-сервер, если вы хотите интегрировать с другими средствами, которые взаимодействуют по протоколу HTTP. Дополнительные сведения об использовании этой функции см. в разделе «Использование функций завершения чата через сервер REST с Foundry Local».
- Пакет SDK имеет встроенную поддержку завершения чата и транскрибирования звука, что позволяет создавать приложения ИИ для общения с меньшим количеством зависимостей. Дополнительные сведения об использовании этой функции см. в API локальных завершений чата в Foundry.
- На устройствах Windows можно использовать сборку Windows ML, которая обрабатывает аппаратное ускорение для моделей на устройстве, извлекая нужные исполняющие среды и драйверы.
Изменения API
Версия 0.8.0 и более поздние предлагают более объектно-ориентированный и композируемый API. Основная точка входа по-прежнему является FoundryLocalManager классом, но вместо набора методов, которые работают через статические вызовы к API HTTP, не имеющему состояния, пакет SDK теперь предоставляет методы экземпляра FoundryLocalManager, поддерживающего состояние службы и моделей.
| Примитивный | < Версия 0.8.0 | Версия >= 0.8.0 |
|---|---|---|
| Configuration | N/A | config = Configuration(...) |
| Получение менеджера | mgr = FoundryLocalManager(); |
await FoundryLocalManager.CreateAsync(config, logger);var mgr = FoundryLocalManager.Instance; |
| Получить каталог | N/A | catalog = await mgr.GetCatalogAsync(); |
| Список моделей | mgr.ListCatalogModelsAsync(); |
catalog.ListModelsAsync(); |
| Получите модель | mgr.GetModelInfoAsync("aliasOrModelId"); |
catalog.GetModelAsync(alias: "alias"); |
| Получить вариант | N/A | model.SelectedVariant; |
| Задать вариант | N/A | model.SelectVariant(); |
| Скачивание модели | mgr.DownloadModelAsync("aliasOrModelId"); |
model.DownloadAsync() |
| Загрузка модели | mgr.LoadModelAsync("aliasOrModelId"); |
model.LoadAsync() |
| Выгрузка модели | mgr.UnloadModelAsync("aliasOrModelId"); |
model.UnloadAsync() |
| Список загруженных моделей | mgr.ListLoadedModelsAsync(); |
catalog.GetLoadedModelsAsync(); |
| Получение пути модели | N/A | model.GetPathAsync() |
| Запуск службы | mgr.StartServiceAsync(); |
mgr.StartWebServerAsync(); |
| Остановка службы | mgr.StopServiceAsync(); |
mgr.StopWebServerAsync(); |
| Расположение кэша | mgr.GetCacheLocationAsync(); |
config.ModelCacheDir |
| Список кэшированных моделей | mgr.ListCachedModelsAsync(); |
catalog.GetCachedModelsAsync(); |
API позволяет более гибко настраивать Foundry Local в отношении веб-сервера, ведения журнала, расположения кэша и выбора варианта модели. Например, Configuration класс позволяет настроить имя приложения, уровень ведения журнала, URL-адреса веб-сервера и каталоги для данных приложения, кэша моделей и журналов:
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"
};
Справочник по API
- Для получения более подробной информации о Foundry Local C# SDK см. справочник по API Foundry Local C# SDK.
Руководство по миграции пакета SDK для JavaScript
Чтобы улучшить возможность доставки приложений с помощью искусственного интеллекта на устройстве, существуют существенные изменения в архитектуре пакета SDK JavaScript. В этом разделе описаны основные изменения, которые помогут перенести приложения в последнюю версию пакета SDK.
Замечание
В версии 0.9.0 пакета SDK для JavaScript и более поздних версий в API имеются критические изменения из предыдущих версий (<=0.5.0).
На следующей схеме показано, как предыдущая архитектура сильно зависит от использования веб-сервера REST для управления моделями и выводом, такими как завершение чата:
Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:
- Сложность управления жизненным циклом веб-сервера.
- Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
- Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.
Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:
В этой новой архитектуре:
- Приложение самодостаточено. Для развертывания приложений не требуется устанавливать Foundry Local CLI отдельно на машину конечного пользователя, что облегчает процесс развертывания.
- Веб-сервер REST необязателен. Вы по-прежнему можете использовать веб-сервер, если вы хотите интегрировать с другими средствами, которые взаимодействуют по протоколу HTTP.
- Пакет SDK имеет встроенную поддержку завершения чата и транскрибирования звука, что позволяет создавать приложения ИИ для общения с меньшим количеством зависимостей.
Изменения API
Последняя версия предоставляет более объектно ориентированный и компонуемый API. Основная точка входа по-прежнему является FoundryLocalManager классом, но вместо набора методов, которые работают через статические вызовы к API HTTP, не имеющему состояния, пакет SDK теперь предоставляет методы экземпляра FoundryLocalManager, поддерживающего состояние службы и моделей.
| Примитивный | Предыдущая версия | Текущая версия |
|---|---|---|
| Configuration | N/A | config = { appName: "app-name", ... } |
| Получение менеджера | mgr = new FoundryLocalManager(); |
mgr = FoundryLocalManager.create(config); |
| Получить каталог | N/A | catalog = mgr.catalog; |
| Список моделей | mgr.listCatalogModels(); |
catalog.getModels(); |
| Получите модель | mgr.getModelInfo("aliasOrModelId"); |
catalog.getModel(alias); |
| Получить вариант | N/A | model.id; |
| Задать вариант | N/A | model.selectVariant(modelId); |
| Скачивание модели | mgr.downloadModel("aliasOrModelId"); |
model.download(); |
| Загрузка модели | mgr.loadModel("aliasOrModelId"); |
model.load(); |
| Выгрузка модели | mgr.unloadModel("aliasOrModelId"); |
model.unload(); |
| Список загруженных моделей | mgr.listLoadedModels(); |
catalog.getLoadedModels(); |
| Получение пути модели | N/A | model.path; |
| Запуск службы | mgr.startService(); |
mgr.startWebService(); |
| Остановка службы | N/A | mgr.stopWebService(); |
| Расположение кэша | mgr.getCacheLocation(); |
config.modelCacheDir |
| Список кэшированных моделей | mgr.listCachedModels(); |
catalog.getCachedModels(); |
API позволяет более гибко настраивать Foundry Local в отношении веб-сервера, ведения журнала, расположения кэша и выбора варианта модели. Например, config можно настроить имя приложения, уровень ведения журнала, URL-адреса веб-сервера и каталоги для данных приложения, кэша моделей и журналов:
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",
};
В предыдущей версии пакета SDK для Foundry Local JavaScript эти параметры не удалось настроить непосредственно с помощью пакета SDK, что ограничивает возможность настройки поведения службы.
Ссылки
Руководство по миграции пакета SDK Python
Чтобы улучшить возможность доставки приложений с помощью искусственного интеллекта на устройстве, существуют существенные изменения в архитектуре пакета SDK Python. В этом разделе описаны основные изменения, которые помогут перенести приложения в последнюю версию пакета SDK.
Замечание
В последней версии пакета SDK Python (1.0.0) в API имеются критические изменения из предыдущих версий (<=0.5.1).
На следующей схеме показано, как предыдущая архитектура сильно зависит от использования веб-сервера REST для управления моделями и выводом, такими как завершение чата:
Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:
- Сложность управления жизненным циклом веб-сервера.
- Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
- Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.
Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:
В этой новой архитектуре:
- Приложение самодостаточено. Для развертывания приложений не требуется устанавливать Foundry Local CLI отдельно на машину конечного пользователя, что облегчает процесс развертывания.
- Веб-сервер REST необязателен. Вы по-прежнему можете использовать веб-сервер, если вы хотите интегрировать с другими средствами, которые взаимодействуют по протоколу HTTP.
- Пакет SDK имеет встроенную поддержку завершения чата и транскрибирования звука, что позволяет создавать приложения ИИ для общения с меньшим количеством зависимостей.
Изменения API
Последняя версия предоставляет более объектно ориентированный и компонуемый API. Основная точка входа по-прежнему является классом FoundryLocalManager , но шаблон инициализации, управление моделями и вывод все изменились значительно.
| Примитивный | Предыдущая версия (foundry-local) |
Текущая версия (foundry-local-sdk) |
|---|---|---|
| Пакет | pip install foundry-local |
pip install foundry-local-sdk |
| Импорт | from foundry_local import FoundryLocalManager |
from foundry_local_sdk import Configuration, FoundryLocalManager |
| Configuration | N/A | config = Configuration(app_name="app-name") |
| Получение менеджера | manager = FoundryLocalManager(alias) |
FoundryLocalManager.initialize(config)manager = FoundryLocalManager.instance |
| Получить каталог | N/A | catalog = manager.catalog |
| Список моделей | manager.list_catalog_models() |
catalog.list_models() |
| Получите модель | manager.get_model_info(alias) |
catalog.get_model(alias) |
| Скачивание модели | manager.download_model(alias) |
model.download(progress_callback) |
| Загрузка модели | manager.load_model(alias) |
model.load() |
| Выгрузка модели | manager.unload_model(alias) |
model.unload() |
| Список загруженных моделей | manager.list_loaded_models() |
catalog.get_loaded_models() |
| Список кэшированных моделей | manager.list_cached_models() |
catalog.get_cached_models() |
| Расположение кэша | manager.get_cache_location() |
config.model_cache_dir |
| Запуск службы | manager.start_service() |
manager.start_web_service() |
| Конечная точка службы | manager.endpoint |
manager.urls |
API позволяет более гибко настраивать Foundry Local в отношении веб-сервера, ведения журнала, расположения кэша и выбора варианта модели. Например, Configuration класс позволяет настроить имя приложения, уровень ведения журнала, URL-адреса веб-сервера и каталоги для данных приложения, кэша моделей и журналов:
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",
)
Ссылки
Руководство по миграции пакета SDK Rust
Чтобы улучшить возможность доставки приложений с помощью ИИ на устройстве, существуют существенные изменения в архитектуре пакета SDK Rust. В этом разделе описаны основные изменения, которые помогут перенести приложения в последнюю версию пакета SDK.
Замечание
В последней версии SDK Rust (1.0.0) в API произошли изменения, нарушающие совместимость с предыдущей версией. Имя ящика изменилось с foundry-local на foundry-local-sdk.
На следующей схеме показано, как предыдущая архитектура сильно зависит от использования веб-сервера REST для управления моделями и выводом, такими как завершение чата:
Пакет SDK будет использовать удаленный процедурный вызов (RPC), чтобы найти исполняемый файл Foundry Local CLI на компьютере, запустить веб-сервер и связаться с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:
- Сложность управления жизненным циклом веб-сервера.
- Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
- Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.
Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:
В этой новой архитектуре:
- Приложение самодостаточено. Для развертывания приложений не требуется устанавливать Foundry Local CLI отдельно на машину конечного пользователя, что облегчает процесс развертывания.
- Веб-сервер REST необязателен. Вы по-прежнему можете использовать веб-сервер, если вы хотите интегрировать с другими средствами, которые взаимодействуют по протоколу HTTP.
- Пакет SDK имеет встроенную поддержку завершения чата и транскрибирования звука, что позволяет создавать приложения ИИ для общения с меньшим количеством зависимостей.
Изменения API
Последняя версия предоставляет более объектно ориентированный и компонуемый API. Шаблон построителя был заменен подходом на основе конфигурации, а управление моделями теперь использует выделенные Model объекты.
| Примитивный | Предыдущая версия (foundry-local) |
Текущая версия (foundry-local-sdk) |
|---|---|---|
| Ящик | foundry-local |
foundry-local-sdk |
| Configuration | N/A | FoundryLocalConfig::new("app-name") |
| Получение менеджера | FoundryLocalManager::builder().build().await? |
FoundryLocalManager::create(config)? |
| Получить каталог | N/A | manager.catalog() |
| Список моделей | manager.list_catalog_models().await? |
manager.catalog().get_models().await? |
| Получите модель | manager.get_model_info(alias).await? |
manager.catalog().get_model(alias).await? |
| Скачивание модели | manager.download_model(alias).await? |
model.download(callback).await? |
| Загрузка модели | manager.load_model(alias).await? |
model.load().await? |
| Выгрузка модели | manager.unload_model(alias).await? |
model.unload().await? |
| Список загруженных моделей | manager.list_loaded_models().await? |
manager.catalog().get_loaded_models().await? |
| Список кэшированных моделей | manager.list_cached_models().await? |
manager.catalog().get_cached_models().await? |
| Запуск службы | manager.start_service()? |
manager.start_web_service().await? |
| Конечная точка | manager.endpoint()? |
manager.urls() |
| HTTP-вызовы |
reqwest::Client (ручной REST) |
Собственный пакет SDK: model.create_chat_client() |
Новый пакет SDK предоставляет собственный чат и аудио-клиенты, устраняя необходимость вручную 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);