Руководство по миграции локального пакета SDK для Foundry

В этом руководстве приведены инструкции по переносу кода из устаревшей версии локального пакета 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 для управления моделями и выводами, такими как завершение чата:

Схема предыдущей архитектуры для Foundry Local.

Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:

  • Сложность управления жизненным циклом веб-сервера.
  • Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
  • Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.

Для решения этих проблем переработанная архитектура в версии и более поздних версиях 0.8.0 использует более упрощенный подход. Новая архитектура выглядит следующим образом:

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

В этой новой архитектуре:

  • Приложение самодостаточено. Для развертывания приложений не требуется устанавливать 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

Руководство по миграции пакета SDK для JavaScript

Чтобы улучшить возможность доставки приложений с помощью искусственного интеллекта на устройстве, существуют существенные изменения в архитектуре пакета SDK JavaScript. В этом разделе описаны основные изменения, которые помогут перенести приложения в последнюю версию пакета SDK.

Замечание

В версии 0.9.0 пакета SDK для JavaScript и более поздних версий в API имеются критические изменения из предыдущих версий (<=0.5.0).

На следующей схеме показано, как предыдущая архитектура сильно зависит от использования веб-сервера REST для управления моделями и выводом, такими как завершение чата:

Схема предыдущей архитектуры для Foundry Local.

Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:

  • Сложность управления жизненным циклом веб-сервера.
  • Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
  • Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.

Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:

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

В этой новой архитектуре:

  • Приложение самодостаточено. Для развертывания приложений не требуется устанавливать 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 для управления моделями и выводом, такими как завершение чата:

Схема предыдущей архитектуры для Foundry Local.

Пакет SDK будет использовать удаленный процедурный вызов (RPC) для поиска исполняемого файла Foundry Local CLI на компьютере, запуска веб-сервера и обмена данными с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:

  • Сложность управления жизненным циклом веб-сервера.
  • Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
  • Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.

Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:

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

В этой новой архитектуре:

  • Приложение самодостаточено. Для развертывания приложений не требуется устанавливать 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 для управления моделями и выводом, такими как завершение чата:

Схема предыдущей архитектуры для Foundry Local.

Пакет SDK будет использовать удаленный процедурный вызов (RPC), чтобы найти исполняемый файл Foundry Local CLI на компьютере, запустить веб-сервер и связаться с ним по протоколу HTTP. Эта архитектура имеет несколько ограничений, в том числе:

  • Сложность управления жизненным циклом веб-сервера.
  • Сложное развертывание. Конечные пользователи должны установить локальный интерфейс командной строки Foundry на своих компьютерах и приложении.
  • Управление версиями интерфейса командной строки и пакета SDK может привести к проблемам совместимости.

Для решения этих проблем переработанная архитектура использует более упрощенный подход. Новая архитектура выглядит следующим образом:

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

В этой новой архитектуре:

  • Приложение самодостаточено. Для развертывания приложений не требуется устанавливать 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);

Ссылки