Вообще, я люблю опенсорс - мой голосовой помощник Ирина тому подтверждение.

Тем не менее, в текстовых нейросетях пока опенсорс решений уровня GPT-4 нет - а пользоваться им при написании кода, честно говоря, правда полезно.

Если честно, меня несколько утомило решать вопросы доступа и оплаты OpenAI аккаунта, необходимого для доступа к GPT-4 и API (да, я провожу эксперименты, и API мне нужен).

Я бы с удовольствием поэкспериментировал и с другими сетями - например, Claude, о которой говорят гораздо меньше, но которая, по-видимому, не намного хуже (спойлер: я пробовал - по моему мнению, Claude 2 вполне на уровне GPT-4).

Постепенно реализовывая свои "хотелки", я создал сервис VseGPT.ru, который решает мои основные проблемы - предоставляет общий интерфейс в виде чата и OpenAI API к разным топовым нейросетям - ChatGPT, Claude, Google Palm и опенсорсным Llama 70b, 34b Code и пр.

Сервис я делал в основном под свои профессиональные потребности, так что давайте посмотрим, насколько он подойдет вам (+ помечено, если в сервисе есть, - если нет):

  • Доступ по OpenAI API (крайне важно) (+).

    • Во-первых, я хочу свободу для экспериментов - например, чтобы делать обработку данных через серию запросов с помощью LangChain, или сделать плагин для Ирины, для того, чтобы с ней поболтать.

    • Во-вторых, я хочу пользоваться уже существующей массой инструментов, которые интегрируются с OpenAI API. Например, расширение для браузера ChatGPTBox через OpenAI API умеет делать прямо в браузере: суммирование текстов, перевод, "полировку" английского текста (исправление ошибок), объяснять код. Возможность пользоваться сторонними инструментами крайне привлекательна.

    • В-третьих, желательна минимизация лимитов по запросам к API - ждать по 20-60 секунд между запросами крайне неудобно (+)

  • Доступ через вебчат (крайне важно) (+).

    • Иногда у меня нет времени лезть в Python скрипт, и я хочу просто задать вопрос нейросети через удобный интерфейс. Желательно сохранение чатов, светлая/темная тема, по возможности - поддержка Markdown для кода.

    • Еще желательна поддержка streaming при запросе - чтобы результат выводился по мере генерации токенов, и не нужно было ждать полного ответа (+)

  • Свободное переключение между нейросетями (важно) (+).

    • Не хочу вендорлок на решения OpenAI. Хочу попробовать Claude - он дешевле, и у него обещают контекст в 100 000 токенов. Хочу попробовать опенсорсную LLama 70b (с трудом запускается на домашних машинах).

    • Хочу возможность быстрого переключения на другую сеть - например, на Claude v1 как аналог ChatGPT - если вдруг вторая будет недоступна.

  • Небольшая оплата за размер запроса в зависимости от нейросети (приемлемо) (+)

    • Понятно, что совсем бесплатные решения либо будут сильно лимитированы, либо будут работать нестабильно. В конце концов, GPT-4 стоит в 10 раз дороже ChatGPT, и бесплатно её предоставлять на большие диалоги и обработки статей нереально. Поэтому я готов оплачивать свои запросы - если это реально недорого.(И, пожалуйста, без привязки банковской карты - только внутренний счёт).

  • Небольшая стоимость подписки (приемлемо) (+)

    • Да, за такой сервис я готов был бы платить - но определенно не 20$. Рублей 200-400 было бы норм. И да, российской картой, пожалуйста. Да, нормально, если при низкой стоимости подписки оплата за запросы идёт отдельно.

  • Бесплатный тестовый доступ (важно) (+)

    • Я хочу сначала попробовать, что всё работает, а уже потом заплатить.

  • Доступ через Телеграм (не очень важно) (-)

    • В принципе, какие-то запросы было бы удобно делать через Телеграм, но там будет неудобно управлять диалогом. Для меня это не очень важно.

Совместимость с OpenAI API

Уже запустив сервис, я ещё раз почувствовал - как круто, что можно использовать совместимые наработки.

Мой API поддерживает наиболее популярный вызов /v1/chat/completion, который позволяет по серии диалога "юзер-нейросеть" получить новый ответ. (Есть /completion - просто дополнить текст - но он у меня не поддерживается, и в инструментах он используется не так часто)

Для интеграции с другими инструментами обычно достаточно, чтобы в них можно было сменить OpenAI API URL. В стандартной Python библиотеке openai это делается так:

import openai

openai.api_key = "sk-XXXXXXXXXXXXXXXX" # берётся на сервисе
openai.api_base = "https://vsegpt_api_url" # берётся на сервисе

# формируем список сообщений
messages = []

# системный промт - мы не задаем, но при желании можно
# messages.append({"role": "system", "content": system_text}) 

# сообщение от пользователя
messages.append({"role": "user", "content": "Напиши последовательно числа от 1 до 10"}) 

response_big = openai.ChatCompletion.create(
    # id модели на сервисе или стандартный "gpt-3.5-turbo"
    model="anthropic/claude-instant-v1", 
    messages=messages,
    temperature=0.7,
    n=1,
    max_tokens=int(len(prompt) * 1.5),
)

response = response_big["choices"][0]["message"]
print("Response:",response)

И... код работает!

В API поддерживается и просто запрос, и с параметром stream=True - т.е. чтобы ответ выдавался по мере готовности (пример обработки стриминга есть в стандартной библиотеке OpenAI).

Интеграции

Благодаря совместимому OpenAI API можно быстро подключать что-то своё.

Болталка для голосового помощника Ирины.

Я уже делал плагин, дающий возможность общаться через Ирину с ChatGPT какое-то время назад - с сохранением контекста диалога, и возможностью настройки системного промта ("Отвечай кратко и по существу", "Объясняй как маленькому ребенку" и пр.). Сейчас я достаточно быстро добавил новый API endpoint под vsegpt и функцию "новый диалог" для сброса контекста.

Простенький пример голосового диалога:

— Ирина, поболтаем?
 — Да, давай.
 — Что такое Солнце?
 — Солнце — звезда, которая находится в центре нашей солнечной системы и обеспечивает нам свет и тепло.

ChatGPTBox

Опенсорсное расширение для всех основных браузеров (Chrome, Edge, Firefox...), которое позволяет с помощью OpenAI API на страницах браузера выполнять:

  • Перевод

  • Суммаризацию (краткое содержание) текста

  • Объяснять программный код

  • Полировать текст (убирать грамматические ошибки и пр.)

OneRingTranslator

Мой опенсорс REST-сервер, который позволяет переводить тексты через самые разные движки (онлайн и оффлайн), которые подключаются плагинами. К нему я сделал плагин для vsegpt - так что можно переводить и через нейросети.

Про OneRingTranslator я думаю ещё как-нибудь написать на Хабре, а пока, если интересно - в него встроена оценка качества перевода с помощью метрик BLEU/COMET, и вот результаты перевода через GPT-нейросети в сравнении с традиционными переводчиками (больше - лучше, Claude 2 прям топ):

COMET-оценка результата перевода на 100 текстах FLORES, больше - лучше

Заключение

"Eat your own dog food"

Учитывая, что я сам использую свой сервис, думаю, он будет становиться лучше - по меньшей мере для меня, и людей, думающих схожим образом.

Мне бы хотелось еще подключить анализ документов - чтобы сеть могла по ним отвечать, ну и побольше дельных инструментов - но это дело времени. Хотелось бы подключить что-то отечественное вроде GigaChat - но у него пока нет API. Планирую сделать аналогичное компактное решение с OpenAI API и чатом только на опенсорсных нейросетях, чтобы можно было эффективно разворачивать в замкнутом контуре предприятия (если вдруг такое нужно - пишите в личку).

Ну а пока я только выложил сервис, и надеюсь, он будет полезен.

https://vsegpt.ru/