Pull to refresh

GitHub Copilot ➜ OpenAI API прокси. Serverless

Level of difficultyEasy
Reading time3 min
Views6.9K

Демо


Демо здесь.


Зачем


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.
Для развёртывания полнофункциональной версии обратитесь к следующему разделу.

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


Здесь были инструкции развёртывания c Github по кнопке Cloudflare
К сожалению кнопка не поддерживает репозитории на других хостингах, а проект переехал на gitea.com.

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


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


  • Создать KV namespace: wrangler kv:namespace create KV
    (и соответственнл обновить id в вашем wrangler.toml файле).
  • Запустить сервис локально: 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.

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


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

Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments6

Articles