Вообще, я люблю опенсорс — мой голосовой помощник Ирина тому подтверждение.
Тем не менее, в текстовых нейросетях пока опенсорс решений уровня 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 и функцию «новый диалог» для сброса контекста.
Простенький пример голосового диалога:
— Ирина, поболтаем?
— Да, давай.
— Что такое Солнце?
— Солнце — звезда, которая находится в центре нашей солнечной системы и обеспечивает нам свет и тепло.
Опенсорсное расширение для всех основных браузеров (Chrome, Edge, Firefox…), которое позволяет с помощью OpenAI API на страницах браузера выполнять:
-
Перевод
-
Суммаризацию (краткое содержание) текста
-
Объяснять программный код
-
Полировать текст (убирать грамматические ошибки и пр.)
Мой опенсорс REST-сервер, который позволяет переводить тексты через самые разные движки (онлайн и оффлайн), которые подключаются плагинами. К нему я сделал плагин для vsegpt — так что можно переводить и через нейросети.
Про OneRingTranslator я думаю ещё как-нибудь написать на Хабре, а пока, если интересно — в него встроена оценка качества перевода с помощью метрик BLEU/COMET, и вот результаты перевода через GPT-нейросети в сравнении с традиционными переводчиками (больше — лучше, Claude 2 прям топ):
Заключение
«Eat your own dog food»
Учитывая, что я сам использую свой сервис, думаю, он будет становиться лучше — по меньшей мере для меня, и людей, думающих схожим образом.
Мне бы хотелось еще подключить анализ документов — чтобы сеть могла по ним отвечать, ну и побольше дельных инструментов — но это дело времени. Хотелось бы подключить что-то отечественное вроде GigaChat — но у него пока нет API. Планирую сделать аналогичное компактное решение с OpenAI API и чатом только на опенсорсных нейросетях, чтобы можно было эффективно разворачивать в замкнутом контуре предприятия (если вдруг такое нужно — пишите в личку).
Ну а пока я только выложил сервис, и надеюсь, он будет полезен.
ссылка на оригинал статьи https://habr.com/ru/articles/762248/
Добавить комментарий