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

Тем не менее, в текстовых нейросетях пока опенсорс решений уровня 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, больше - лучше
COMET-оценка результата перевода на 100 текстах FLORES, больше - лучше

Заключение

"Eat your own dog food"

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

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

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

https://vsegpt.ru/

Комментарии (22)


  1. Suoriks
    20.09.2023 11:02

    Попытался зарегистрироваться, но форма сказала мне "что-то пошло не так".


    1. janvarev Автор
      20.09.2023 11:02

      Пожалуйста, попробуйте еще раз - я смотрю, вроде сейчас пользователи регистрируются.


  1. excoder
    20.09.2023 11:02
    +1

    А как вы обеспечили доступ к OpenAI моделям? Просто через свой аккаунт на OpenAI?


    1. janvarev Автор
      20.09.2023 11:02
      +1

      Промежуточный провайдер, но разрешите, я не буду вдаваться в детали :)


    1. gentux
      20.09.2023 11:02
      +1

      1. janvarev Автор
        20.09.2023 11:02

        Нет, но вы можете мне не верить :)

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


  1. stas_grishaev
    20.09.2023 11:02

    Подключил пробный период и на моделях gpt4/claude-2 ловится вот такая ошибка.


    1. janvarev Автор
      20.09.2023 11:02

      Посмотрел. Оплата, как я говорил, идёт за запросы - небольшой баланс, выдаваемый на тест, вы уже почти израсходовали несколькими запросами до этого (2.1 осталось на аккаунте), ошибка "Потенциально ваш запрос превышает бюджет".

      Claude2 и gpt4 этому особо подвержены, они относительно дорогие на 1000 потенциальных символов.

      В индивидуальном порядке ещё немного пополнил ваш баланс для тестирования.


      1. klarius4
        20.09.2023 11:02

        ни одного вопроса не задал и словил такой же глюк


        1. janvarev Автор
          20.09.2023 11:02

          Не совсем такой же, а, как видно по тексту ошибки, вы, видимо, не ввели API ключ в настройки чата, или ввели его неверно.


  1. theurus
    20.09.2023 11:02
    +6

    Google Bard, Claude 2, MS Bing(aka GPT4) работают абсолютно бесплатно, нужен только впн что бы вырваться из чебурнета. А еще есть алиса и гигачад Ж) тоже совсем бесплатные.

    Как можно в таких шикарных условия пытаться впаривать платный чатГПТ, доколе?

    Бесплатный копилот для vscode и других тоже есть - Codeium.

    ps гигачат сегодня в телеге для всех открылся. да и снова бесплатно https://t.me/gigachat_bot


  1. zartdinov
    20.09.2023 11:02

    API для физлиц планируется?


    1. janvarev Автор
      20.09.2023 11:02

      Может, непонятно написал: API есть и поддерживается для всех :)


  1. vagon333
    20.09.2023 11:02
    +1

    Любопытное решение.
    Проблем с доступом нет, но есть хотелка автоматизировать постановку и обработку заданий.
    Написал простенький репозиторий промптов.
    Ниже пара скриншотов, может кому идеи пригодятся.
    Или можно потрещать на эту тему, если обществу будет польза.

    Домашний репозиторий промтов


    1. janvarev Автор
      20.09.2023 11:02

      К сожалению, не до конца понятно, как работает система промтов, но выглядит интересно.

      Понял, что строится mermaid диаграмма по анализу кода. Немного вопрос - а как загружается код при вызове? В 16k контекст (вижу по последней диаграмме) помещается весь, что ли?


      1. vagon333
        20.09.2023 11:02

        Из 2х скриншотов, конечно, не понятно, но в целом:

        1. Есть Репозиторий промптов, заточенные под разные задачи с разными настройками: модель, температура, источник данных, скрипт для обработки результата.
        2. Есть механизм вызова №1 через API.
        3. Есть лог вызовов №1 со скриптом последующей обработки результата - сохранение в базе, или вызов след. промпта.

        Вкратце - это все.

        Пользы:
        1. абстракция от промптов - есть исполнитель задачи (под капотом - промпт с настройками ввода-вывода)
        2. безопасный вызов (вызывающие должны иметь разрешение на работу с каждым промптом)
        3. общение через API
        4. хранение в базе.


  1. Dancho67
    20.09.2023 11:02

    Вы случаем с недавно почившей ChimeraGPT дела не имели? Уж очень описание похоже, да и функционал +-


    1. janvarev Автор
      20.09.2023 11:02

      Да, видел я этот проект, но как писал выше: https://habr.com/ru/articles/762248/comments/#comment_25982824 - такого рода проекты предоставления бесплатного доступа очень неустойчивы. Нет, к этому мы тоже отношения не имеем :)


    1. theurus
      20.09.2023 11:02
      +1

      Химера живее всех живых, работает уже очень долго, можно сказать основной поставщик для халявного бота https://t.me/kun4sun_bot


      1. theurus
        20.09.2023 11:02

        Кстати о ботах в телеге, если вам не хочется поднимать своего chatGPT бота то можно просто вставить свой ключ в этого и поехать https://t.me/chat_GPT_free_007_bot


  1. Taper32
    20.09.2023 11:02

    Добрый день, вопрос от непрофессионала - можно ли все это еще сильнее упростить, написав приложение для смартфона?


    1. janvarev Автор
      20.09.2023 11:02

      Если именно приложение - то надо найти то, которое позволит подставлять ключи и URL сервера, возможно, такие уже есть.

      Если просто доступ с телефона - то у нас чатом вполне себе можно пользоваться в вебе со смартфона, там верстка мобайл-френдли.