Пользовательская модель — это LLM, которую вы разворачиваете или настраиваете самостоятельно. В этом документе на примере модели Xinference показано, как интегрировать пользовательскую модель в ваш плагин модели. По умолчанию пользовательская модель автоматически включает два параметра (её тип модели и имя модели) и не требует дополнительных определений в файле YAML поставщика. Реализовывать validate_provider_credential в файле конфигурации поставщика не нужно. Во время выполнения, в зависимости от выбранного пользователем типа или имени модели, Интеллос автоматически вызывает метод validate_credentials соответствующего слоя модели для проверки учётных данных.

Интеграция плагина пользовательской модели

Ниже приведены шаги для интеграции пользовательской модели:
  1. Создайте файл поставщика модели
    Определите типы моделей, которые будет включать ваша пользовательская модель.
  2. Создайте файлы кода по типам моделей
    В зависимости от типа модели (например, llm или text_embedding) создайте отдельные файлы кода. Убедитесь, что каждый тип модели организован в отдельные логические слои — это упростит сопровождение и дальнейшее расширение.
  3. Разработайте логику вызова модели
    Внутри каждого модуля типа модели создайте файл Python с именем этого типа модели (например, llm.py). Определите в файле класс, реализующий конкретную логику модели в соответствии со спецификациями интерфейса модели системы.
  4. Отладьте плагин
    Напишите модульные и интеграционные тесты для нового функционала поставщика, чтобы убедиться, что все компоненты работают как задумано.

1. Создайте файл поставщика модели

В каталоге /provider вашего плагина создайте файл xinference.yaml. Семейство моделей Xinference поддерживает типы моделей LLM, Text Embedding и Rerank, поэтому ваш файл xinference.yaml должен включать все три. Пример:
Далее определите provider_credential_schema. Поскольку Xinference поддерживает модели генерации текста, эмбеддингов и реранкинга, его можно настроить следующим образом:
Каждой модели в Xinference требуется model_name:
Поскольку Xinference должен быть развёрнут локально, пользователям нужно указать адрес сервера (server_url) и UID модели. Например:
После того как вы определите эти параметры, конфигурация YAML для поставщика пользовательской модели будет готова. Далее создайте функциональные файлы кода для каждой модели, определённой в этой конфигурации.

2. Разработайте код модели

Поскольку Xinference поддерживает llm, rerank, speech2text и tts, вам следует создать соответствующие каталоги внутри /models, каждый из которых содержит код своей функции. Ниже приведён пример для модели типа llm. Вы создаёте файл с именем llm.py, а затем определяете класс (например, XinferenceAILargeLanguageModel), наследующий __base.large_language_model.LargeLanguageModel. Этот класс должен включать:
  • Вызов LLM
Основной метод для вызова LLM, поддерживающий как потоковые, так и синхронные ответы:
Вам понадобятся две отдельные функции для обработки потоковых и синхронных ответов. Python считает любую функцию, содержащую yield, генератором, возвращающим тип Generator, поэтому их лучше разделить:
  • Предварительный подсчёт входных токенов
Если ваша модель не предоставляет интерфейс для подсчёта токенов, просто верните 0:
Также вы можете вызвать self._get_num_tokens_by_gpt2(text: str) из базового класса AIModel, который использует токенизатор GPT-2. Помните, что это приблизительная оценка, и она может не совпадать с вашей моделью в точности.
  • Проверка учётных данных модели
Аналогично проверке учётных данных на уровне поставщика, но в рамках одной модели:
  • Динамическая схема параметров модели
В отличие от предопределённых моделей, здесь нет YAML, который определял бы, какие параметры поддерживает модель. Схему параметров нужно формировать динамически. Например, Xinference поддерживает max_tokens, temperature и top_p. Некоторые другие поставщики (например, OpenLLM) могут поддерживать параметры вроде top_k только для определённых моделей. Это означает, что вам нужно адаптировать схему под возможности каждой модели:
  • Сопоставление ошибок
Когда во время вызова модели возникает ошибка, сопоставьте её с подходящим типом InvokeError, распознаваемым средой выполнения. Это позволяет Интеллос обрабатывать различные ошибки стандартизированным образом: Ошибки среды выполнения:
Подробнее о методах интерфейса см. в документации по моделям. Чтобы посмотреть полные файлы кода, рассмотренные в этом руководстве, перейдите в репозиторий на GitHub.

3. Отладьте плагин

После завершения разработки протестируйте плагин, чтобы убедиться, что он работает корректно. Подробнее см.:

Отладка плагина

4. Опубликуйте плагин

Если вы хотите разместить этот плагин в Интеллос Маркетплейс, см.: Публикация в Интеллос Маркетплейс

Изучить дополнительно

Быстрый старт: Документация по эндпоинтам плагинов:
Edit this page | Report an issue