

Google Search, чтобы продемонстрировать, как быстро разработать плагин-инструмент.
Предварительные требования
- Инструмент-каркас (scaffolding) для плагинов Интеллос
- Окружение Python (версия 3.12)
Создание нового проекта
Запустите инструмент командной строки (каркас), чтобы создать новый проект плагина Интеллос.dify и скопировали его в путь /usr/local/bin, для создания нового проекта плагина можно выполнить следующую команду:
Далее в тексте в качестве примера команды используетсяdify. Если возникнут проблемы, замените командуdifyна путь к инструменту командной строки.
Выбор типа плагина и шаблона
Все шаблоны в инструменте-каркасе предоставляют готовые проекты кода. В этом примере выберите плагин типа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), и другие участники команды также могут получить к нему доступ.

Упаковка плагина (опционально)
Убедившись, что плагин работает нормально, вы можете упаковать и назвать его с помощью следующего инструмента командной строки. После выполнения в текущей папке появится файлgoogle.difypkg — это итоговый пакет плагина.
Публикация плагина (опционально)
Если вы хотите опубликовать плагин в Интеллос Маркетплейс, убедитесь, что ваш плагин соответствует спецификациям из раздела Публикация в Интеллос Маркетплейс. После прохождения проверки код будет влит в ветку main и автоматически опубликован в Интеллос Маркетплейс. Обзор публикацииДополнительные материалы
Быстрый старт:
- Разработка плагинов-расширений
- Разработка плагинов-моделей
- Бандл-плагины: упаковка нескольких плагинов
Документация интерфейса плагинов:
- Общие спецификации — структура манифеста и спецификации инструментов
- Эндпоинт — подробное определение эндпоинта
- Обратный вызов — обратный вызов возможностей Интеллос
- Схема модели — модели
- Плагины-агенты — расширение стратегий Агента
Следующие шаги обучения
- Удалённая отладка плагинов — изучите более продвинутые методы отладки
- Постоянное хранилище — узнайте, как использовать хранилище данных в плагинах
- Пример разработки плагина для Slack-бота — рассмотрите более сложный пример разработки плагина
- Плагин-инструмент — изучите продвинутые возможности плагинов-инструментов
Edit this page | Report an issue

