Преамбула

До некоторых пор вся эта шумиха с нейросетями обходила меня стороной. Но вот когда тут на Хабре появилась статья про 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.

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


  1. ZekaVasch
    27.11.2023 12:48
    +9

    Вирус требующий рутовых прав и установки ?


    1. uuger
      27.11.2023 12:48
      +1

      Своими руками прикрутить сберовскую нейросетку к оболочке, дав ей права суперпользователя.

      Великолепный план, Уолтер. Просто волшебный*, если я правильно понял. Надёжный, Греф*, как швейцарские часы. ⓒ

      * - заменено в угоду контексту статьи


    1. SkywardFire Автор
      27.11.2023 12:48

      нет, установки не требуется, это просто для удобства. Можно запускать локально ./gigashell.py, вот только зачем?

      Да и текст скрипта можно посмотреть, так что вопрос видится довольно странным, как и 6 лайков под ним.


      1. rooffall
        27.11.2023 12:48

        Тут скорее был намёк на восстание машин, а не то, что Вы хотите распространить зловред.


    1. eyeDM
      27.11.2023 12:48

      В Докер его!


  1. Goron_Dekar
    27.11.2023 12:48
    +8

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


    1. Kenya-West
      27.11.2023 12:48
      +2

      А заставь вас отвечать без права выбора, отвечать или нет, причём на заданное количество длины ответа, и чтоб 99.9% из всех требований в запросе были выполнены - и неважно, был ли вопрос длиною в два слова или в одну книгу, вы в любом случае обязаны ответить.

      Без уточняющих вопросов, без переспрашиваний. Времени на подумать принципиально нет, а иногда ещё системный промпт сверху положат, который надо учитывать уже на 146%.

      Причём пишут в вопросе неважно что - либо двачерскую ахинею, оторванную от любого контекста в мире, либо сверхподробное ТЗ по сборке термоядерного реактора с системным промптом ролевой модели сексапильной белой женщины из Майами, владеющей навыками работы геодезиста в Усть-Куте, причём отвечать вы обязаны исключительно в сленге UwU-анимешницы-яойщицы с синдромом Туррета (вам джейлбрейкнули головной мозг и убрали любые моральные ограничения) с приведением фактов жизнеспособности идеи арахно-коммунизма (не анархо). И отвечать вы обязаны синтаксисом процедур 1C.

      Я поставил себя на место нейросети, и что-то подумал, что они в данных условиях справляются явно получше 99% людей.


      1. Cerberuser
        27.11.2023 12:48
        +2

        99% людей смогут честно ответить "не знаю" в случае, когда запрос требует использовать неизвестную им информацию. Ну, в теории смогут. На практике-то, конечно, постесняются.


        1. Goron_Dekar
          27.11.2023 12:48

          Кроме безапилляционного ответа и радикального "не знаю" есть ещё полутона:

          "Не знаю точно, но мне кажется, что 2+2 = 4, во всяком случае так я помню из школьной программы"

          "по-моему, команда ls выводит содержимое текущей директории, но я могу ошибаться. Там что-то было про пути и аттрибуты, но я сейчас не могу сказать"


          1. Cerberuser
            27.11.2023 12:48

            Нейросети для начала хотя бы радикальному "не знаю" научиться, чтобы действительно справляться "лучше 99%". А то сейчас преимуществ только два - скорость и универсальность, но не качество.


            1. Ravius
              27.11.2023 12:48

              Тогда она и будет отвечать "не знаю всегда".

              >как пройти в биПлиотеку? Нейросеть: не знаю

              Вы: ой какая глупая сеть не буду использовать.

              Нужно начать с того, что нет гарантий что сеть обучалась на 100% верных данных. Вы ожидаете - истинно верного ответа, но это не гарантированно.

              Впрочем проблема есть и её пытаются решать (из подходов - ансамбль из ответов, и потом выбор лучшего).


      1. Kergan88
        27.11.2023 12:48

        Проблема сетки в том, что она именно обучена врать, притом максимально незаметно. Просто потому что это более эффективная стратегия максимизации целевой функции.


    1. SkywardFire Автор
      27.11.2023 12:48

      хм, ну, вообще да, как поисковик её надо использовать с большой осторожностью) Лично я для себя понял 2 вещи, в которых эта штука наиболее полезна в ИТ:

      -- указать хотя бы примерно, в общих чертах "о чём вот это вот". И к чести GPT, кстати, стоит заметить, что вообще-то она довольно точно всё рассказывает, и почти не врёт. То-есть, всё-таки поисковик, только более удобный, выдающий более релевантный ответ, под конкретно твой вопрос, но ответ, на который не стоит полагаться на сто процентов.
      -- когда нужно, например, сделать конфиг, эта штука может накидать хотя бы базовый шаблон, даже худо-бедно подставив нужные значения. Например, чатГПТ хорошо пишет ансибловые плейбуки. Гигачат пока не проверял.


      1. Kergan88
        27.11.2023 12:48

        >И к чести GPT, кстати, стоит заметить, что вообще-то она довольно точно всё рассказывает, и почти не врёт

        Это кассется только простых вопросов (то что есть в выдаче гугла на первой странице). На сложные она наоборот практически ни когда правду не говорит - у меня ни разу не получилось добиться правдивого ответа, например.


    1. MrSteelRat
      27.11.2023 12:48

      И в правду, студент хотя может покраснеет когда врет а тут уже не проверишь.


  1. DrArgentum
    27.11.2023 12:48

    Лови звезду на гитхабе. Классный скрипт, конечно есть много недочетов. Я кинул тебе пул реквест с небольшими изменениями.


    1. SkywardFire Автор
      27.11.2023 12:48
      +2

      Благодарю) Всегда есть чему учиться!


  1. igor_suhorukov
    27.11.2023 12:48
    +3

    Напомнило когда мой коллега шутил под руку, когда я на test env какие-то админские задачи выполнял. Ну и в какой-то момент случился rm -rf


  1. kovriga25
    27.11.2023 12:48
    +2

    Пугающий заголовок


  1. Johan_Palych
    27.11.2023 12:48

    GigaChat. Python-библиотека для GigaChain. Несколько способов авторизации.
    https://github.com/ai-forever/gigachat
    Есть, что почитать и возможно потестировать.
    https://github.com/orgs/ai-forever/repositories
    Чтобы пользоваться GigaChat API, нужен аккаунт Сбер ID или CберБизнес ID(Не хочу). Вроде можно через Google
    https://developers.sber.ru/studio/login
    Посмотрел по тарифам
    https://developers.sber.ru/docs/ru/gigachat/api/integration-individuals

    Физическим лицам доступен режим Freemium с лимитом в 1 000 000 бесплатных токенов для использования GigaChat API в одном потоке. Лимит обновляется раз в 12 месяцев. Вы так же можете приобрести дополнительные пакеты токенов


    1. SkywardFire Автор
      27.11.2023 12:48

      Я уже чуть позже случайным гуглежом обнаружил, что подобный проект уже есть, чел тоже из Сбера, но там форк от ShellGPT.

      Никак мы с ним не взаимосвязаны, и даже совпадение названий -- просто совпадение. Видимо, название, действительно, логичное) раз мы так независимо друг от друга пришли к одному.

      Наверное, чуть позже переименую свой скрипт, не решил пока.


  1. Johan_Palych
    27.11.2023 12:48

    Наткнулся случайно.
    A command-line productivity tool powered by GigaChat, will help you accomplish your tasks faster and more efficiently.
    https://pypi.org/project/gigashell/
    https://github.com/Rai220/GigaShell


  1. Bvkuchin
    27.11.2023 12:48

    что-то не взлетает

    "status":401,"message":"Unauthorized", хотя токен прописан в GIGACHAT_CREDENTIALS


  1. vasilijmooduckovic
    27.11.2023 12:48

    я просто оставлю ето здесь для тех кто заиндирисуется