Инструменты — это сторонние сервисы, которые могут вызываться приложениями типа Chatflow / Workflow / Агент и предоставляют полноценные возможности реализации API для расширения приложений Интеллос. Например, они добавляют дополнительные функции вроде поиска в интернете, генерации изображений и многое другое.
Пример плагина-инструмента
В этой статье «плагин-инструмент» обозначает целостный проект, который включает файлы поставщика инструмента, функциональный код и другие структуры. Поставщик инструмента может включать несколько инструментов (их можно понимать как дополнительные функции в составе одного инструмента) со следующей структурой:
Структура плагина-инструмента
В этой статье в качестве примера используется Google Search, чтобы продемонстрировать, как быстро разработать плагин-инструмент.

Предварительные требования

  • Инструмент-каркас (scaffolding) для плагинов Интеллос
  • Окружение Python (версия 3.12)
Подробные инструкции по подготовке инструмента-каркаса для разработки плагинов см. в разделе Инициализация инструментов разработки.

Создание нового проекта

Запустите инструмент командной строки (каркас), чтобы создать новый проект плагина Интеллос.
Если вы переименовали бинарный файл в dify и скопировали его в путь /usr/local/bin, для создания нового проекта плагина можно выполнить следующую команду:
Далее в тексте в качестве примера команды используется dify. Если возникнут проблемы, замените команду dify на путь к инструменту командной строки.

Выбор типа плагина и шаблона

Все шаблоны в инструменте-каркасе предоставляют готовые проекты кода. В этом примере выберите плагин типа Tool.
Если вы уже знакомы с разработкой плагинов и вам не нужны шаблоны, обратитесь к руководству Общие спецификации, чтобы реализовать разработку плагинов разных типов.
Тип плагина: Tool

Настройка прав плагина

Плагину также нужны права на чтение данных с платформы Интеллос. Предоставьте этому примеру плагина следующие права:
  • Tools
  • Apps
  • Включите постоянное хранилище Storage и выделите хранилище размера по умолчанию
  • Разрешите регистрацию эндпоинтов (Endpoints)
Для выбора прав используйте клавиши со стрелками в терминале, а для предоставления прав — клавишу «Tab».
После того как вы отметите все пункты прав, нажмите Enter, чтобы завершить создание плагина. Система автоматически сгенерирует код проекта плагина.
Права плагина

Разработка плагина-инструмента

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

Файл поставщика инструмента — это файл в формате yaml, который можно понимать как базовую точку входа конфигурации для плагина-инструмента. Он используется для передачи инструменту необходимой информации об авторизации. Перейдите в путь /provider в проекте-шаблоне плагина и переименуйте yaml-файл в google.yaml. Этот файл yaml будет содержать информацию о поставщике инструмента, включая имя поставщика, иконку, автора и другие сведения. Эта информация отображается при установке плагина. Пример кода
Убедитесь, что путь к файлу находится в каталоге /tools, а полный путь выглядит так:
При этом google.yaml должен использовать свой абсолютный путь в проекте плагина. В этом примере он расположен в корневом каталоге проекта. Поле identity в YAML-файле описывается следующим образом: identity содержит базовую информацию о поставщике инструмента, включая author, name, label, description, icon и т. д.
  • Иконка должна быть ресурсом-вложением и помещаться в папку _assets в корневом каталоге проекта.
  • Теги помогают пользователям быстро находить плагины по категориям. Ниже перечислены все теги, поддерживаемые в настоящее время.

2. Заполнение учётных данных стороннего сервиса

Для удобства разработки мы используем Google Search API, предоставляемый сторонним сервисом SerpApi. Для работы SerpApi требуется API Key, поэтому нам нужно добавить поле credentials_for_provider в файл yaml. Полный код выглядит так:
  • Вложенная структура credentials_for_provider должна соответствовать требованиям Общих спецификаций.
  • Нужно указать, какие инструменты включает поставщик. В этом примере включён только один файл tools/google_search.yaml.
  • Как поставщик, помимо определения базовой информации, вы также должны реализовать часть логики его кода, поэтому необходимо указать его логику реализации. В этом примере мы помещаем файл кода с функциональностью в google.py, но пока не реализуем его, а сначала напишем код для google_search.

3. Заполнение YAML-файла инструмента

У плагина-инструмента может быть несколько функций-инструментов, и каждой такой функции нужен файл yaml для описания, включающий базовую информацию о функции инструмента, параметры, вывод и т. д. По-прежнему используя инструмент GoogleSearch в качестве примера, создайте новый файл google_search.yaml в папке /tools.
  • identity содержит базовую информацию об инструменте, включая name, author, label, description и т. д.
  • parameters — список параметров
    • name (обязательно) имя параметра, уникальное, не может совпадать с именами других параметров.
    • type (обязательно) тип параметра, в настоящее время поддерживаются пять типов: string, number, boolean, select, secret-input, соответствующие строке, числу, булеву значению, выпадающему списку и зашифрованному полю ввода. Для конфиденциальной информации используйте тип secret-input.
    • label (обязательно) метка параметра для отображения во фронтенде.
    • form (обязательно) тип формы, в настоящее время поддерживаются два типа: llm, form.
      • В приложениях-агентах llm означает, что параметр выводится самой LLM, а form означает, что параметры можно задать заранее для использования этого инструмента.
      • В приложениях Workflow и llm, и form должны заполняться во фронтенде, но параметры llm будут использоваться как входные переменные для узла инструмента.
    • required — обязателен ли параметр
      • В режиме llm, если параметр обязателен, Агент должен будет вывести этот параметр.
      • В режиме form, если параметр обязателен, пользователю нужно будет заполнить этот параметр во фронтенде до начала разговора.
    • options — варианты значений параметра
      • В режиме llm Интеллос передаст все варианты в LLM, и LLM сможет выполнить вывод на их основе.
      • В режиме form, когда type равен select, фронтенд отобразит эти варианты.
    • default — значение по умолчанию.
    • min — минимальное значение, можно задать, когда тип параметра — number.
    • max — максимальное значение, можно задать, когда тип параметра — number.
    • human_description — описание для отображения во фронтенде, поддерживает несколько языков.
    • placeholder — подсказка для поля ввода, можно задать, когда тип формы — form, а тип параметра — string, number, secret-input, поддерживает несколько языков.
    • llm_description — описание, передаваемое в LLM. Чтобы LLM лучше понимала этот параметр, опишите его здесь как можно подробнее, чтобы LLM смогла разобраться в параметре.

4. Подготовка кода инструмента

После того как вы заполнили конфигурационную информацию для инструмента, можно приступать к написанию кода функциональности инструмента, реализующего его логическое назначение. Создайте google_search.py в каталоге /tools со следующим содержимым:
Этот пример означает запрос к serpapi и использование self.create_json_message для возврата отформатированной строки данных json. Если вы хотите узнать больше о типах возвращаемых данных, обратитесь к документам Удалённая отладка плагинов и Постоянное хранилище KV.

5. Завершение кода поставщика инструмента

Наконец, вам нужно создать код реализации поставщика, чтобы реализовать логику проверки учётных данных. Если проверка учётных данных не пройдёт, будет выброшено исключение ToolProviderCredentialValidationError. После успешной проверки сервис инструмента google_search будет вызван корректно. Создайте файл google.py в каталоге /provider со следующим содержимым:

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

После завершения разработки плагина нужно проверить, работает ли плагин корректно. Интеллос предоставляет удобный способ удалённой отладки, который помогает быстро проверить функциональность плагина в тестовом окружении. Перейдите на страницу «Управление плагинами», чтобы получить адрес удалённого сервера и ключ отладки (Key).
Ключ удалённой отладки
Вернитесь в проект плагина, скопируйте файл .env.example и переименуйте его в .env, затем впишите полученные адрес удалённого сервера и информацию о ключе отладки (Key). Файл .env:
Выполните команду python -m main, чтобы запустить плагин. На странице плагинов вы увидите, что плагин установлен в рабочем пространстве (Workspace), и другие участники команды также могут получить к нему доступ.
Выполните команду python -m main, чтобы запустить плагин

Упаковка плагина (опционально)

Убедившись, что плагин работает нормально, вы можете упаковать и назвать его с помощью следующего инструмента командной строки. После выполнения в текущей папке появится файл google.difypkg — это итоговый пакет плагина.
Поздравляем, вы прошли весь процесс разработки, отладки и упаковки плагина типа «инструмент»!

Публикация плагина (опционально)

Если вы хотите опубликовать плагин в Интеллос Маркетплейс, убедитесь, что ваш плагин соответствует спецификациям из раздела Публикация в Интеллос Маркетплейс. После прохождения проверки код будет влит в ветку main и автоматически опубликован в Интеллос Маркетплейс. Обзор публикации

Дополнительные материалы

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

Документация интерфейса плагинов:

Следующие шаги обучения


Edit this page | Report an issue