Глубокое погружение в разработку плагинов ChatGPT для начинающих и любознательных исследователей

Плагины ChatGPT предоставляют новый способ расширения основных возможностей ChatGPT. По умолчанию ChatGPT в настоящее время не подключен к Интернету, поэтому простые задачи, такие как проверка погоды в определенном месте, невозможны. Но с помощью плагинов разработчики могут подключить API к ChatGPT, а ChatGPT может отправлять запросы на получение актуальной информации, например о погоде в Сан-Франциско.

С растущим магазином плагинов и более чем 700 плагинами, доступными на сегодняшний день, эта новая экосистема может обеспечить множество интересных вариантов использования. Хотя еще слишком рано говорить, правда ли это, многие называют магазин плагинов новым «магазином приложений», ссылаясь на то, насколько большими возможностями он будет. Но что такое плагин? Как разработчики могут получить доступ к их созданию? Какие есть примеры простых начальных плагинов?

В этой статье мы объясним:

  • Что такое плагин
  • Как стать разработчиком плагина
  • Преимущества создания собственных плагинов
  • Процесс создания простого плагина списка TODO

Мне, как разработчику плагинов, было очень приятно видеть, как сотни людей ежедневно используют мои (очень) простые плагины. Сообщество пользователей плагинов очень взволновано и пытается найти инструменты, которые стоит использовать в существующих рабочих процессах ChatGPT. Давайте погрузимся!

Что такое плагин?

Прежде чем мы пойдем дальше, стоит очень четко понять, что такое плагин в контексте ChatGPT. Согласно документации OpenAI:

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

Уникальная часть плагинов заключается в том, что, за одним небольшим исключением, плагин на самом деле представляет собой просто простой API. Разработчики создавали API на протяжении десятилетий, и это здорово, что нет необходимости принимать новую парадигму для разработки плагинов.

Плагин состоит из трех важных частей:

  • ai-plugin.json, файл, содержащий все метаданные о плагине.
  • openapi.yaml, стандартный формат для определения API
  • API, фактический код API, который работает на сервере и соответствует спецификации OpenAPI.

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

Если вы все еще не понимаете, что такое плагин, подумайте о том, чтобы зайти в ChatGPT и спросить о погоде, затем попробуйте модель плагина GPT-4 и используйте мой плагин WeatherWizard, чтобы сделать то же самое. Это простой, но наглядный пример того, почему плагины так важны для многих рабочих процессов в ChatGPT.

Как стать разработчиком плагинов

Сегодня доступ разработчика плагинов открыт не для всех. Чтобы разрабатывать плагины ChatGPT, вы должны быть приняты в программу для разработчиков, для которой требуется ChatGPT plus. К списку ожидания можно присоединиться по приведенной выше ссылке, предоставив OpenAI некоторую базовую информацию, но время ожидания может составлять несколько недель или более месяца.

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

Преимущества плагинов

Хотя GPT-3.5 и 4 — невероятные инструменты, на них не всегда можно положиться в плане получения точных ответов. Мало того, что данные, на которых он обучался, относятся к 2021 году, он также может просто возвращать неверную информацию (часто называемую галлюцинациями). Здесь на помощь приходят плагины. Если вы хотите получать множество статей с разными точками зрения, можно создать плагин, который обращается к API с этими данными. Ищете, где транслировать любимое шоу? Плагин может быть использован, чтобы держать вас в курсе.

Для разработчиков основными преимуществами создания плагина являются:

  • Осведомленность о вашем продукте
  • Приобретение новых пользователей
  • Включение новых возможностей

Большинство разработчиков создают плагины как средство для привлечения новых пользователей или предоставления возможности, которая ранее была невозможна, учитывая мощь ChatGPT. Есть также много разработчиков-любителей (таких как я), которые создают плагины (Weather Wizard и Apex Map, скоро появятся новые), чтобы получить опыт и лучше понять эту технологию. Но основной добавленной стоимостью для бизнеса по-прежнему является привлечение пользователей. ChatGPT имеет огромную пользовательскую базу людей, которые глубоко увлечены ИИ и готовы платить за доступ к плагинам (поскольку это только для плюсовых пользователей). Это означает, что если компании имеют сильное перекрытие аудитории, они могут конвертировать пользователей с гораздо большей скоростью, чем в других когортах пользователей.

Даже после увеличения лимита сообщений GPT-4 разработка и/или запуск плагинов по-прежнему будут учитываться в вашем лимите сообщений. К счастью, есть несколько способов получить максимальную отдачу от этого лимита, о которых вы можете узнать больше в моем недавнем посте.



Приступаем к созданию плагина

Теперь, когда мы поговорили о деталях плагинов высокого уровня, пришло время погрузиться в создание нашего собственного примера плагина. Остальная часть этого поста предназначена для разработчиков, которые хотят создать плагин, или для тех, кому интересно, как работает этот процесс. Для этого примера мы будем использовать пример с открытым исходным кодом, созданный OpenAI, который доступен на Github. Плагин будет представлять собой простой список TODO, который позволит пользователю отслеживать задачи. После работы ChatGPT может добавлять, удалять и редактировать элементы в списке TODO.

Примечание: если вы похожи на меня и можете немного помочь в кодировании новых вещей, попробуйте использовать новый режим интерпретатора кода ChatGPT, пока вы создаете свой плагин, чтобы ускорить разработку. Я описал основы этого в посте, который я недавно сделал:



Первым шагом будет загрузка репозитория Github локально. В репозиторий включены несколько важных файлов. Давайте посмотрим на каждый файл и рассмотрим, что они делают шаг за шагом.

ai-plugin.json

Файл плагина AI — это специальный файл, созданный специально для плагинов, который определяет все ключевые данные о плагине. Если вы ошеломлены тем, что видите, мы рассмотрим это построчно и рассмотрим, что означают эти пункты.

{
"schema_version": "v1",
"name_for_human": "TODO List (no auth)",
"name_for_model": "todo",
"description_for_human": "Manage your TODO list. You can add, remove and view your TODOs.",
"description_for_model": "Plugin for managing a TODO list, you can add, remove and view your TODOs.",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "http://localhost:5003/openapi.yaml"
},
"logo_url": "http://localhost:5003/logo.png",
"contact_email": "[email protected]",
"legal_info_url": "http://example.com/legal"
}

Быстро пройдя построчно, мы видим следующее:

  • «schema_version»: это относится к номеру версии формата ai-плагина и должно быть установлено на v1.
  • «name_for_human»: это просто название плагина, которое пользователь увидит в ChatGPT.
  • «name_for_model»: имя плагина, который используется ВНУТРЕННИМ моделью.
  • «description_for_human»: краткое описание плагина, которое пользователь увидит в магазине плагинов ChatGPT.
  • «description_for_model»: это очень важная строка информации. Это дает описание плагина для модели, чтобы он имел соответствующий контекст относительно того, для чего предназначен плагин, и может решить, когда вызывать плагин на основе пользовательского запроса.
  • «auth»: метод аутентификации. Здесь «тип» — «нет», что означает, что плагин не требует аутентификации.
  • «api»: тип API и соответствующий URL-адрес. «type» — «openapi», указывающий на то, что используется спецификация OpenAPI. «url» — это ссылка на YAML-файл спецификации OpenAPI.
  • «logo_url»: это URL-адрес, по которому можно найти изображение логотипа плагина. Используется для отображения в пользовательском интерфейсе ChatGPT.
  • «contact_email»: контактный адрес электронной почты для любых запросов, связанных с плагином.
  • «legal_info_url»: URL-адрес, по которому пользователи могут найти юридическую информацию, связанную с плагином.

main.py

Этот файл Python настраивает простой асинхронный веб-сервер, использующий платформу Quart для управления списком TODO для каждого пользователя. Сервер предоставляет конечные точки для добавления, извлечения и удаления элементов списка дел. Он также содержит логотип и два файла конфигурации: манифест JSON для плагина и файл YAML, описывающий спецификацию OpenAPI для плагина. Обратите внимание, что main.py — это определение сервера. ChatGPT никогда не увидит этот код и не знает о нем. Вместо этого файл OpenAPI.yaml, который будет рассмотрен позже, является интерфейсом между ChatGPT и сервером. В этом серверном коде вы, как разработчик, имеете наибольшую гибкость.

Для этого файла я разобью код на 3 части. К ним относятся импорт и настройки, маршруты и конечные точки, а также основная функция.

Импорт и настройка

import json
import quart
import quart_cors
from quart import request
app = quart_cors.cors(quart.Quart(__name__), allow_origin="https://chat.openai.com")
# Keep track of todo's. Does not persist if the Python session is restarted.
_TODOS = {}

В этом разделе импортируются пакеты, необходимые для запуска плагина. Он также инициализирует экземпляр Quart и указывает, что к серверу разрешено отправлять только перекрестные запросы от https://chat.openai.com' (не нужно беспокоиться о том, какие значит начать). Глобальная переменная связывает пользователей с их списком TODO.

Маршруты и конечные точки

Если вы посмотрели на следующий код и подумали, что он выглядит ошеломляющим, то я с вами. Однако на самом деле эти строки просты. Это команды серверу для добавления и удаления пользовательских строк, а также указание пути к файлу logo.png, json и основным элементам.

  1. @app.post(“/todos/<string:username>”): конечная точка для добавления элемента TODO для определенного пользователя. Он берет объект JSON из тела запроса, который должен содержать поле «todo», представляющее элемент TODO.
  2. @app.get(“/todos/<string:username>”): Эта конечная точка извлекает список TODO для определенного пользователя. Он отвечает массивом JSON элементов списка TODO пользователя.
  3. @app.delete(“/todos/<string:username>”): Эта конечная точка удаляет элемент TODO для определенного пользователя. Он ожидает объект JSON из тела запроса, содержащего поле «todo_idx», которое указывает индекс элемента TODO, подлежащего удалению в списке TODO пользователя.
  4. @app.get(“/logo.png”): Эта конечная точка обслуживает статический файл с именем «logo.png». Он предоставляет логотип для плагина.
  5. @app.get(“/.well-known/ai-plugin.json”): Эта конечная точка обслуживает файл манифеста JSON для подключаемого модуля, который также содержит все важные метаданные о подключаемом модуле.
  6. @app.get(“/openapi.yaml”): Эта конечная точка обслуживает файл YAML, содержащий спецификацию OpenAPI для подключаемого модуля.

Опять же, все это функции для конкретных случаев использования, необходимая часть — убедиться, что вы обслуживаете файл YAML, файл ai-plugin и файл логотипа. Также возможно иметь эти элементы в отдельной программе, не являющейся частью основной логики API.

openapi.yaml

С этим файлом проще всего работать при создании плагинов. Хотя вы можете разработать спецификацию OpenAPI вручную, я обнаружил, что ChatGPT отлично помогает автоматически генерировать большую часть этого файла при наличии файла main.py. Однако вам может понадобиться добавить/уточнить несколько важных строк. К ним относятся следующие:

  • Название: Название вашего плагина
  • Версия: номер версии плагина.
  • Описание: Описание плагина и инструкция о том, как должна действовать модель (при необходимости/желании)
  • Сервер: URL-адрес, который ведет на ваш сервер.

Как запустить плагин локально

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

pip install -r requirements.txt

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

python main.py

После запуска сервера создайте новый разговор ChatGPT для плагинов:

В раскрывающемся меню выберите «Плагины» в разделе GPT-4.

Перейдите в «Магазин плагинов» и нажмите «Разработать собственный плагин». Прохождение процедуры «Разработка собственного плагина» требуется каждый раз, когда вы вносите изменения в файл ai-plugin.json, поскольку этот файл кэшируется (копия хранится) на серверах OpenAI.

Наконец, введите домен для плагина. Это было «localhost: 5003» для примера списка TODO.

Если все прошло хорошо, вы сможете отправить сообщение и спросить что-то вроде «Что есть в моем списке дел» или «Добавить продукты в мой список дел», и ChatGPT отправит запрос на ваш локальный сервер (вы должны иметь возможность чтобы увидеть, как это происходит в режиме реального времени с журналами).

Надеемся, что это руководство было полезным шагом к созданию собственных плагинов ChatGPT. Если у вас остались какие-либо вопросы или вы просто ищете другой отличный источник, ознакомьтесь с разделом OpenAI Введение в плагин или оставьте комментарий ниже, и я обновлю статью, чтобы прояснить любые новые вопросы. До встречи в следующей статье!