Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Вообще, я люблю опенсорс - мой голосовой помощник Ирина тому подтверждение.
Тем не менее, в текстовых нейросетях пока опенсорс решений уровня 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 прям топ):
Заключение
"Eat your own dog food"
Учитывая, что я сам использую свой сервис, думаю, он будет становиться лучше - по меньшей мере для меня, и людей, думающих схожим образом.
Мне бы хотелось еще подключить анализ документов - чтобы сеть могла по ним отвечать, ну и побольше дельных инструментов - но это дело времени. Еще бы хотелось подключить что-то отечественное вроде GigaChat - но у него пока нет API.
Ну а пока я только выложил сервис, и надеюсь, он будет полезен.
https://vsegpt.ru/