Как стать автором
Обновить

Телеграм бот + LLM (GigaChat)

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров8.3K

В данном посте я расскажу о своем опыте общения с 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 для публикации своих и чужих кодов =)

Теги:
Хабы:
Всего голосов 5: ↑4 и ↓1+3
Комментарии17

Публикации

Истории

Работа

Python разработчик
135 вакансий
Data Scientist
56 вакансий

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург