GigaShell. Сберовская нейросеть в твоей консоли

Преамбула

До некоторых пор вся эта шумиха с нейросетями обходила меня стороной. Но вот когда тут на Хабре появилась статья про ShellGPT, вот тут, признаться, триггернуло.

Консоль я искренне люблю, и идея прикрутить современный интерактивный помощник к такой, в хорошем смысле архаичной вещи, как linux-консоль, мне понравилась. Этакое сочетание чего-то старого, проверенного и надёжного, с чем-то новым, экспериментальным, выдающим fuzzy ответы, но перспективным и нужным.

Пока не закончился токен, я охотно использовал эту программу, а в конце данного материала даже поделюсь интересным приёмом работы.

Я сам являюсь сотрудником Сбера, на позиции, не имеющей никакого отношения ни к python, ни к AI. Но на сберовской внутренней конференции Т.конф побывал. Общался с разработчиками GigaChat на тему когда же будет API. Вопрос задавал именно с такой целью, написать свой аналог, позволяющий одной короткой командой заэксплуатировать отечественную нейросеть, никуда не переключаясь из консоли.

И вот, наконец, API готов, а следом готов и мой простенький скрипт, который я и предлагаю вниманию хабрасообщества.

Установка

Если будет время, то потом будут и более правильные способы установки, через pip, или DEB/RPM пакетами, но пока установка в таком режиме

git clone https://github.com/skywardfire1/gigashell.git
chmod +x install.bash
# Спросит пароль на суперпользователя
./install.bash --install

Все возможные ошибки попытался отловить, да и вы, если что, несомненно, разберётесь, но также и не стесняйтесь писать на почту, указанную в профиле.

Регистрация и авторизация

В отличие от нейросети от OpenAI, бесплатное использование гигачата не ограничено по времени, так что смело проходите сюда , получайте токен, а потом экспортируйте его в переменную окружения GIGACHAT_CREDENTIALS. Лично я сделал вот так:

echo -e "\n" >> ~/.zshrc
echo "export GIGACHAT_CREDENTIALS=содержимое_токена" >> ~/.zshrc

И да, мне тоже не нравится, что мы храним секрет в открытом виде в конфигурационном файле. Будет неплохо, если поделитесь своими способами как этого избежать.

Использование

Пока на данный момент поддерживается только базовая функция «задать вопрос — получить ответ». Но уже на данном этапе скрипт gigashell упрощает жизнь, сообщая нейросети некоторую некритичную информацию о вашей системе. Название ОС, версию ядра, название и версию дистрибутива, а также в какой оболочке всё это происходит.

Кое-что из этого списка, быть может, добавлю

Кое-что из этого списка, быть может, добавлю

В дальнейшей разработке я буду придерживаться ключей и функциональности из ShellGPT, с некоторыми минорными дополнениями, мне нравятся некоторые решения разработчика, например, ключ -s, который вообще-то в идеале должен выводить только лишь одну финальную команду, но пока у меня не получилось заставить Гигачат уверенно делать это. Любые советы по этому вопросу так же приветствуются, как и любые предложения по TODO в целом.

Итак,

Ошибка в слове

Ошибка в слове «пакетов» допущена сознательно

Как видим, нейросеть упорно выводит дополнительные пояснения, а также рисует дополнительные тэги, несмотря на то, что её явным образом попросили этого не делать.

TODO и некоторые размышления

При установке обратите внимание, что создаётся символическая ссылка /usr/local/bin/gs, поэтому если кто-то использует GhostScript, то где-нибудь какой-нибудь функционал может поломаться. Это сильно маловероятно, но на всякий случай, you have been warned.

Занимаюсь этим всем исключительно в свободное время, поэтому быстрого расширения функционала не обещаю, но вообще в планах сделать:

  • возможность указания ролей для автоматического дополнения промтов, и более точного указания контекста

  • continuous mode, в котором на данный момент всё равно особого смысла нет, на мой взгляд

  • ключ -s будет автоматически предлагать выполнить команду, которую выдала нейросеть

Пока это всё работает не так круто, как связка ShellGPT + нейросеть от openAI, но лично я доволен, что у нас такое есть. И я считаю, что мои коллеги из рабочих групп по AI молодцы, и проделали хорошую работу. А в GPT и инженерного труда, и денег вложено в тысячи, если не десятки тысяч раз больше.

Приём

Мне понравился такой приём работы, когда нужно, чтобы нейросеть пояснила что-то конкретное, вот тут удобство проявляется, пожалуй, наиболее ярко.

Очень удобно, между прочим!

Очень удобно, между прочим!

То-есть, очень удобно подставлять краткий вывод какой-либо команды, чтобы избежать Ctrl-C Ctrl-V.

© Habrahabr.ru