GitHub Copilot ➜ OpenAI API proxy. Serverless

Демо

Демо здесь.


Зачем


GitHub Copilot доступен бесплатно для подтверждённых учащихся, преподавателей и мейнтейнеров популярных проектов с открытым исходным кодом.

Даже если вы не подходите под указанные выше критерии, стоимость платной подписки
(Individual) более доступна, чем аналогичное предложение от OpenAI.
Она стоит всего 10 долларов и при этом обеспечивает доступ к GPT-4.


Если вышеперечисленные варианты вам не подходят — попробуйте полностью бесплатную альтернативу: openai-gemini.


Для чего

GitHub Copilot чат доступен исключительно в избранных IDE.

Проект openai-github-copilot позволяет использовать его с намного более широким спектром инструментов: предоставляется общий API, совместимый с OpenAI, который можно развернуть бесплатно.
(Однако подписка на GitHub Copilot всё так же требуется.)


Serverless?

Хотя прокси и работает в облаке, для его функционирования не требуется обслуживание сервера.
Его можно легко развернуть на Cloudflare бесплатно (со щедрыми ограничениями, подходящими для личного использования).


Локальный запуск прокси также возможен, хотя такой вариант удобен скорее для разработки.


С чего начать

Сначала вам необходимо создать учетную запись на Cloudflare.

Самый простой способ развёртывания — вручную вставить содержимое src/worker.mjs
в качестве index.js на https://workers.cloudflare.com/playground (см. кнопку Deploy).


Примечание:
Это немного упрощенная версия кода, в которой не реализовано кэширование токенов,
и отсутствует страница /token.
Для развёртывания полнофункциональной версии обратитесь к следующему разделу.


Расширенные инструкции


Важно:
Если ваша учетная запись на Cloudflare только что создана, и у вас нет ещё нет ни одного Worker, некоторые из ссылок, упомянутых ниже, могут быть недоступны.
Поэтому рекомендуется создать хотя бы пробный «Hello World» Worker: Deploy «Hello World» script.
Вы можете назвать его «copilot».

Deploy to Cloudflare Workers

После нажатия этой кнопки вы пройдёте через процесс форкинга репозитория на Github, а затем потребуется ввести данные учётной записи Cloudflare — id и токен доступа (его надо будет создать).
Эти шаги необходимы для непрерывной интеграции (CI).


Внимание:
Первоначальное развёртывание (deploy) должно завершится неудачей, поскольку для него требуется KV namespace, которого ещё не существует.

Перейдите к Workers & Pages / KV и создайте namespace с именем «copilot-KV».
Затем скопируйте его ID и измените файл wrangler.toml в вашем форке репозитория, заменив существующий id на скопированное значение.

Как только вы опубликуете эти изменения (в веб интерфейсе или посредством git push), CI автоматически развернёт репозиторий на Cloudflare Workers, на этот раз без каких-либо проблем.


Развёртывание вручную

Вместо »развёртывания кнопкой» вы также можете работать с проектом локально, используя
cli:


  • Создать KV namespace: wrangler kv:namespace create KV
  • Запустить сервис локально: wrangler dev
  • Развернуть на Cloudflare: wrangler deploy


Как пользоваться

Если вы откроете ваш только что созданный прокси в браузере, вы увидите только сообщение 404 Not Found. Это ожидаемо, поскольку API не предназначен для прямого доступа через браузер.

Чтобы использовать его, вам следует ввести API-адрес и токен доступа Github Copilot в соответствующие поля в настройках вашего программного обеспечения.


Не все программы позволяют задать нестандартный адрес OpenAI API, но очень многие позволяют (хотя эти настройки иногда могут быть глубоко спрятаны).


API base / address / URL / …

Как правило, требуется указывать базу API в таком формате:
https://copilot.YOURSUBDOMAIN.workers.dev/v1

Однако некоторые программы могут ожидать адрес без окончания /v1:
https://copilot.YOURSUBDOMAIN.workers.dev

Соответствующее поле может быть обозначено как »OpenAI proxy».
Возможно, вам придётся поискать в разделе »Advanced settings» или аналогичном.
Или в каком-то конфиг-файле (стоит изучить подробности в документации).

Для некоторых утилит командной строки может понадобиться задать переменную окружения, например:

set OPENAI_BASE_URL=https://copilot.YOURSUBDOMAIN.workers.dev/v1

… или:

set OPENAI_API_BASE=https://copilot.YOURSUBDOMAIN.workers.dev/v1


Ключ API

Прежде всего необходимо получить токен доступа Github с поддержкой Copilot (который должен начинаться с ghu_, или с gho_).
После развёртывания данный проект предоставляет веб-страницу /token, которая помогает создать такой токен (см. демо).
Также в разделе scripts можно найти и альтернативные методы получения токена.

Введите этот токен в поле »OpenAI API key» в настройках вашей программы.
Альтернативно, он может находиться в каком-то конфиг-файле (стоит поискать подробности в документации).

Для некоторых утилит командной строки может потребоваться установить переменную окружения, например:

set OPENAI_API_KEY=ghu_...


Технические примечания

Copilot предоставляет следующие конечные точки (endpoints):


  • /v1/chat/completions
    • tools и другие связанные свойства игнорируются.
    • Вывод подвергаются обработке, чтобы устранить отличия от OpenAI.
      Свойство model всегда равно «gpt-4».
  • /v1/embeddings
    • input:
      поддерживает только массив строк
    • encoding_format, dimensions: игнорируется.
    • Вывод никак не модифицируется и имеет некоторые незначительные отличия от OpenAI:
    • отсутствует свойство object ("object": "embedding")
    • отсутствует свойство model ("model": "text-embedding-3-small")
  • /v1/models: Copilot не предоставляет список моделей, поэтому он был определен эмпирически, и эта конечная точка API обслуживается самим openai-github-copilot.
  • /token: отображает веб-страницу, которая позволяет получить токен доступа к Github Copilot.

Если возникнут какие-либо вопросы — с радостью отвечу в комментариях.

Приятного использования!

© Habrahabr.ru