Это Петрович на Akiman DIY
Это Петрович на Akiman DIY

Всем привет! Никогда не видели чтобы слесари были админом канала? Так вот сейчас я вам это и покажу! Его зовут Петрович, он слесарь 8 разряда, ему 40 лет и он приколист :-)
Его единственный недостаток в том, что он не реальный человек а бот работающий на нейросетке. О том как я это делал, и как LLM мне в этом помогли, я и хочу вам рассказать! Поехали.

  1. Идея (Иде я нахожуся?)
    В общем это было простое решение. Давно хотел написать какого нибудь телеграмм бота. До этого я не писал телеграм ботов, точнее писал но на уровне получил сообщение, ответил заготовленным текстом. В пятницу я предаваясь ностальгии по IRC вспомнил что в ирке в сообществах часто были прикольные боты развлекающие пользователей и отвечающих заготовленными фразами и умеющих кикать пользователей (Были распространены игры вроде русской рулетки). Но сейчас то повсюду БЯМ (большие языковые модели), LLM и вообще всякие нейросетки. Значит сейчас бот может быть значительно умнее! Я не хотел сразу делать что то масштабное, поэтому появился бот-приколист.

Для тех кто забыл или не помнил что такое Ирка
Для тех кто забыл или не помнил что такое Ирка

2. Цена вопроса и что понадобится

Понадобится совсем немного: некоторый навык работы на Python, комп, 5-12 часов работы и какой нибудь сервачок на 1Гб оперативы (Но можно обойтись и без него), так же очень желательно оплатить какой нибудь сервис LLM. Я потратил на это примерно 500 рублев. Сервер стоит около 300 рублей в месяц. Итого 800 руб.

3. Реализация (скоростная с помощью дипсик)

Сразу скажу я не просил deepseek писать код для меня. Как по мне это не только провальный путь, но и более длительный. Мне хватает багов которые я сам в код вношу :-). Не хватало еще дебажить баги дипсика. Я им пользовался как справочником, для поиска нужных методов и особенностей протокола телеграмм, но блин каким же кайфом стала разработка ПО в этом смысле. StackOverflow просто отдыхает! Найти нужный метод - пожалуйста, не знаешь из за чего возникла ошибка- предложит варианты и объяснит принцип работы. Скорость увеличивается в разы! Но это если не просить его писать код. С генерацией кода как по мне скорость наоборот уменьшается.


Реализовывал на Python либах telebot и OpenAI. Это кстати не говорит что используя библиотеку OpenAI вы привязаны именно к chatgpt. Эта либа может использоваться практически со всеми существующими LLM меняете адрес, токен и вперед!

Полагаю не буду приводить весь код хотя он и занимает всего примерно 250 строк, но основную структуру и вехи приведу.

import telebot
from openai import OpenAI
from src.processing import process_group_messages, process_single_message


client_open_ai = OpenAI( api_key='**********llm token ********', ) 
#создание клиента к LLM

bot = telebot.TeleBot('******************telegramm token*********************') 

#создает экземпляр клиента телебота

@bot.message_handler(content_types=['text', 'photo']) # хендлер для ловли сообщений

def get_text_messages(message: telebot.types.Message): # функция обработки входящих

    if message.from_user.is_bot or (message.chat.id not in chat_ids): 

        #боту нельзя отвечать ботам

        return

    if message.chat.type in ['group', 'supergroup']: #для ответа только в чате а не в личке

        if message.media_group_id: #отвечаем только на сообщения в канале

            process_single_message(bot, message, client_open_ai) # обработка сообщения и ответ

bot.polling(none_stop=True, interval=1) #запуск и работа бота

Вот и все! Здесь опущена незначимая часть кода, но структура мне кажется понятна и проста. Пока кстати история в чате не применяется к ответам.

А это код для обращения к LLM :

 response = client_open_ai.responses.create(

        model="your_model",

        instructions="Здесь нужно описать твою ситуацию не зависящую от сообщений",

        input=[

            {

                "role": "user",

                "content": content

            }

        ]

    )

4. Для чего все это?

Это конечно субботний пробный кейс-туториал просто for fun но!
Представляете какие это возможности вам дает?

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

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

5. Как итог

В общем то целью этого поста было три вещи.

  1. Показать новичкам что свой нейробот в телеграмме это просто и совсем недолго

  2. Дать минимальный туториал как его написать

  3. Восхитится насколько удобно стало пользоваться БЯМ в качестве справочника

  4. Возможно сподвигнуть кого то написать своего бота

  5. ....

  6. Profit!

И если хотя бы 2 из 4 целей мной были выполнены, я уже буду считать что писал не зря!

Ну а в конце я конечно дам адрес моего ТГ канала чтобы вы могли самостоятельно потестить зародыш Петровича. Почему зародыш? Потому что я собираюсь к нему приделать еще много всего интересного!

Мой ТГ канал: https://t.me/akiman_sa

Всех благ!

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