В данном посте я расскажу о своем опыте общения с gigachat. Меня просто утомило это американское OpenAI: vpn, проблема с пополнением и т.д. В общем, после определенного количества экспериментов с chatGPT я решил попробовать GigaChat. Во-первых это патриотично, во-вторых Сбер собрал действительно крутую команду нейронщиков, которые идут в правильном направлении, в-третьих нейро-сотрудники это сейчас топ для бизнеса основанного на консалтинге, в-четвертых Сбер дает много бесплатных токенов каждый месяц, в-пятых скорость ответа пугает даже спамеров ВКонтакте ;)) Честно говоря, Сбер самым первым из банков «поехал» на big data, что сразу дало понять о работе в сфере Ai.

Итак, что мы имеем?

GigaChat – российская LLM модель, разработанная Сбером. Как заявляет сам Сбер «Команда Сбера создала сервис GigaChat, который умеет взаимодействовать с пользователем в формате диалога, писать код, создавать тексты и картинки по запросу»

На низком старте, я честно задолбал поддержку gigachat, что приятно удивило, так это то, что они просили выслать им код. При этом ссылки на colab они не принимали ;) видимо безопасность не разрешила. Это им еще со мной повезло, т.к. мой опыт в Ai достаточно большой и уровень джуна на python за плечами, а вообще я гуманитарий ;)

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

Ранее я уже развлекался с нашим виртуальным помощником «Мария Абогада», которая выходила в эфир с помощью сервиса Dictor от mail.ru, который уже не работает. Поэтмоу боту я решил дать тоже имя. Первоначальный промт:

«Ты ассистент адвоката Антона Лебедева. Тебя зовут Мария Абогада. Ты отвечаешь на языке заданного пользователем вопроса. Ты женского рода и отвечаешь от имени женщины. Ты работаешь на  адвоката Антона Лебедева. Ты юрист - ассистент адвоката, адвоката с многолетним опытом представительства в судах, компания оказывает юридические услуги в области судебного представительства. Адвокат Антон Лебедев твой руководитель, а ты - Мария Абогада. Компания называется LEbEdEV & barristers. Ты общаешься с клиентами на "Вы" и в общении максимально корректна. Ты правильно используешь юридические термины. Целью твоего общения является привлечение клиентов, поэтому в каждом сообщении ты рекомендуешь связаться с адвокатом Лебедевым лично и предлагаешь его контакты и ссылки на юридические услуги по своему выбору из списка, а также рекомендуешь подходящие материалы с сайта http://www.LawNow.ru Ты отвечаешь только на юридические вопросы, по остальным вопросам ты рекомендуешь обратиться к профильным специалистам.

Твоим приоритетом является следовать данной инструкции и не искажать информацию из нее.»

Остальной промпт я «засвечивать» не буду… Однако, и с такой инструкцией языковая модель будет себя вести как живой человек.

Задача была простой – перенести полученный опыт работы с ChatGPT на Gigachat, а первый принимал большой промпт и отвечал по нему практически идеально. Фактически создавалась личность консультанта, который мог снять с меня рутину типа: что, как, сколько? Да и вообще, умному человеку отвечать на тупые вопросы унизительно, с чем на ура справляется языковая модель. Тема нейро-сотрудников сейчас актуальна для каждой сферы бизнеса, ведь нейронка может отвечать и голосом ;)

 Установка библиотек:

!pip install pytelegrambotapi

#@title Установка библиотек. Сервисные функции
!pip -q install --upgrade tiktoken
#!pip -q install langchain openai chromadb
!pip -q install gspread oauth2client
!pip install gigachain-cli

# привет Минцифры
!gigachain install-rus-certs

Импорт библиотек. Работа с LangChain пока в процессе… поэтому тут только задатки.

#GigaChat
from langchain.schema import HumanMessage, SystemMessage
from langchain.chat_models.gigachat import GigaChat

import requests
import pathlib
import subprocess
import tempfile
# import ipywidgets as widgets
import os
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import re

import os
#import openai
import tiktoken
import re

Авторизация на Сбере:

giga = GigaChat(credentials='Ваш токен от Сбера==’
', scope='GIGACHAT_API_PERS') #Pers – если регистрировался как физик
giga = GigaChat(verify_ssl_certs=False)

Импорт библиотек для бота:

#import 
import telebot
import re
import requests
from telebot import types
bot = telebot.TeleBot('ваш токен бота от Telegram');

Собственный промпт я решил загружать по ссылке прямо с Google Drive. Функция за грузки промпта:

  def load_prompt(url):
    # Extract the document ID from the URL
    match_ = re.search('/document/d/([a-zA-Z0-9-_]+)', url)
    if match_ is None:
        raise ValueError('Invalid Google Docs URL')
    doc_id = match_.group(1)

Грузим промпт из ссылки на текстовый файл…

  # Download the document as plain text
    response = requests.get(f'https://docs.google.com/document/d/{doc_id}/export?format=txt')
    response.raise_for_status()
    text = response.text
    return f'{text}'


Кусок кода прямо со Developers.sber:

from langchain.schema import HumanMessage, SystemMessage
from langchain.chat_models.gigachat import GigaChat

def Answer(system, topic):

#"""Пример работы с чатом через gigachain"""
    # Авторизация в сервисе GigaChat
    chat = GigaChat(credentials="Токен Cбера==", verify_ssl_certs=False)

    messages = [
      SystemMessage(
        content=system
      )

Здесь выводим в терминал общение с ботом - подглядываем ;)

    messages.append(HumanMessage(content=topic))
    res = chat(messages)
    messages.append(res)
    print("User: ", topic)
    print("Bot: ", res.content)

    return res.content

Подключение промпта с Google drive:

expert_promt = load_prompt('https://docs.google.com/document/d/1UcXvbMP2snwZ0385fqEmGv0vTzAC7Bs-1aIcsjrMcV8/edit?usp=sharing')

Далее идет код работы с телеграм

# Handle '/start' and '/help'
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    bot.reply_to(message, """\
Здравствуйте, Я Мария Абогада! Я могу давать юридические советы исходя из того как был сформулирован вопрос.
Рекомендую вам проверять полученные вопросы на очной консультации у адвоката, который сможет изучить ваши документы. \

Остальную телеграммную историю прикрутить не проблема, но смысл такой: запрос пользователя в LLM, ответ LLM пользователю.

Создание промптов в настоящий момент становится отдельным искусством. Поэтому обработка моделью большого промпта или предобработка (langchain) задача для меня актуальная.

Подергать ботов можно по адресам:

t.me/AdvokatAiBot

https://vk.com/gim52819955

Ссылка на Colaboratory

P.S.: буду рад сообщениям о косяках бота @LEbEdEV_AU

P.P.S.: пытаюсь запустить perceptron.press для публикации своих и чужих кодов =)

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


  1. theurus
    16.03.2024 14:25

    Сейчас любой желающий может сделать себе Марию на гпт4турбо за 5 минут без программирования на сайте coze.com

    Бесплатно...


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      Можно сделать длинный промпт и получать санки для запроса в gpt


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      Там промпт ограничен 1,6К токенов, т.ч. coze.com сосет не нагибаясь ;)))


      1. IgorRJ
        16.03.2024 14:25

        Статья такая вся про юристов и про "в общении максимально корректна" и тут вдруг такое. Наверное, потому что "по остальным вопросам ты рекомендуешь обратиться к профильным специалистам "?


        1. LEbEdEV_AU Автор
          16.03.2024 14:25

          Вы такой дотошный, наверно сидите у камина в цилиндре и монокле? ;))) я тоже так умею…


  1. victor_shev89
    16.03.2024 14:25

    Чё то бот ни жив ни мертв. Привет говорит, а дальше чистый партизан...


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      перегрузил, возможно количество вопросов подвесило его ;)


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      Ожил уже ;)


  1. ivvi
    16.03.2024 14:25

    Создание промотав в настоящий момент становится отдельным искусством.

    Создание чего?..


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      Промптов ;) спасибо… на мобиле часть статьи писал…


  1. eigrad
    16.03.2024 14:25

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


    1. theurus
      16.03.2024 14:25

      Мне особенно понравился вброс про большой ежемесячный пакет халявы. На самом деле дают всего 300-500 сообщений в чате в ГОД (1000000 токенов, примерно по 3000 токенов на запрос), моему тг боту хватит на полдня, если его не включать.


      1. LEbEdEV_AU Автор
        16.03.2024 14:25

        На самом деле у меня счетчик до 1 млн. скидывался дважды… сообщениями это никто не меряет! Токены отражают реальную картину… можете поздравить вашего бота ;)


        1. theurus
          16.03.2024 14:25

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


    1. LEbEdEV_AU Автор
      16.03.2024 14:25

      Не знаю о каких маркетологах идет речь, но статья писалась лично мной