Создание бота в вк: гайд для старта на платформе / Хабр

vkontakte api — Бот на Python не работает в беседе VK

Вопрос задан

Изменён 1 год 1 месяц назад

Просмотрен 306 раз

не так давно начал изучать Python в частности VK Api. Никак не могу добавить бота в беседу, чтобы он минимально реагировал на сообщения пользователей в чате. Перебрал все ответы пользователей на этом форуме по поводу этой проблемы, но скрипт либо не запускается либо не работает. Документация на сайте разработчиков ВКонтакте не менялась с 2019 года. Буду рад помощи!

Сейчас имею такой код:

import vk_api
from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
from config import tok
vk_session = vk_api.VkApi(token = [TOKEN])
longpoll = VkBotLongPoll(vk_session, [ID] )
def sender(id, text):
    vk_session.
method('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0}) def chat_sender(id, text): vk_session.method('messages.send', {'chat_id' : id, 'message' : text, 'random_id' : 0}) for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: msg = event.object.message['text'].lower() if event.from_chat: id = event.chat_id chat_sender(id, msg.upper()) else: id = event.object.message['from_id'] sender(id, msg.upper())
  • python
  • vkontakte-api
  • вконтакте
  • бот

Думаю разберёшься

from vk_api.longpoll import VkLongPoll, VkEventType
vk_session = vk_api.VkApi(token = "TOKEN") 
longpoll = VkLongPoll(vk_session)
def send(id, message):
    vk_session.method('messages.send', {'chat_id': id, 'message': message, 'random_id': 0})
    
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:                              
            if event.
from_chat: msg = event.text.lower() id = event.chat_id if msg == "привет": send(id, msg.upper()) else: send(id, "Не поняла вашего ответа...")

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Создание и развёртывание бота.

| tgvkbot

В первую очередь, почему же нужно создавать именно своего бота?

  • Ограничения Telegram
  • Ограничения VK
  • Гарантия сохранности переписки и полного контроля над ботом

Бот имеет полностью открытый исходный код, с которым можно ознакомиться перейдя по ссылке View on GitHub в верхнем углу станицы.

Гайд далее рассказывает об устаревшем методе установки бота на heroku. К сожалению, пришлось забросить такой вариант из-за модификаций бота и отключения старых VK API. Исходники старого бота лежат в ветке heroku-old

Для энтузиастов есть инструкция по установке бота на свой сервер.

Если вы боитесь командной строки, рекомендую воспользоваться готовым ботом от разработчика @tgVKbot

Heroku

Развёртывать бота мы будем на Heroku, поэтому там нужно завести аккаунт heroku.com

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

Подробнее можно ознакомиться тут

VK

По ссылке нужно создать своё Standalone-приложение, затем во вкладке Настройки перевести Состояние в Приложение включено и видно всем, не забудьте сохранить изменения!

На этом этапе мы сохраняем себе куда-нибудь ID приложения

Telegram

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

Опционально:

Настройка команд бота

dialogs - Список диалогов
search - Поиск диалогов
chat - Текущий чат
leave - Покинуть текущий чат
start - Подключить ВК
stop - Отключить ВК

Логотип VK для аватарки бота.

Heroku + VK + Telegram

Получив ID приложения и токен бота, можно смело начинать развёртывать бота на Heroku.

Нажав на кнопку ниже вы попадёте на страницу развёртывания, где будут поля:

  • Имя приложения — можно оставить пустым, Heroku выберет за вас.
  • Регион развёртывания — выбираем Европу, чтобы бот был пошустрее.
  • Telegram API Token — токен бота полученный ранее.
  • VK APP ID — ID приложения ВКонтакте полученный ранее.

После успешного развёртывания можно смело пользоваться ботом.

Если вы вдруг что-то напутали с токеном и/или ID, их всегда можно настроить перейдя в Settings->Config Vars соответствующего приложения в своей панели управления dashboard. heroku.com

Если всё прошло гладко, то можно ознакомиться с Использованием

Обновление

Обо всех ВАЖНЫХ обновлениях можно будет узнать в Telegram канале

К сожалению простого механизма обновления бота нет и не предусмотрено, поэтому единственный способ — повторное развёртывание бота на Heroku с уже имеющимися токеном бота и ID приложения из VK. При обновлении обязательно удалить предыдущее приложение с ботом на Heroku. Делается это в

Settings соответствующего приложения, в самом низу страницы. После обновления не забудьте заново залогиниться ВК с помощью /start

Аналитика чат-ботов на Python. После создания хотя бы одного чат-бота… | by Aleks Spevak

Создав даже одного чат-бота, создатель всегда хочет понять, сколько людей им пользуются, что пишут в него. Особенно, если бот был написан для коммерческих целей. После появления рекламы в Telegram аналитика в чат-ботах стала еще более необходимой, так как появилась возможность рекламировать ботов напрямую пользователям. Преимущества моего решения по сравнению с другими на рынке: бесплатно, простота внедрения, 20 метрик для аналитики, можно создавать свои метрики, данные хранятся только у вас, подходит для любого количества сообщений в месяц, хранит история за все время подключения, может хранить данные по любому количеству ботов в одном месте. Также это решение может быть реализовано не только для чат-ботов Telegram, но и для любых других чат-ботов (Slack, Discord, Vk и так далее).

Я назвал библиотеку LoraBot. Аналитика подключается к вашему боту как сторонняя библиотека, а все данные хранятся в PostgreSQL. Вы можете развернуть базу данных на своем сервере с помощью файла docker-compose, который находится в репозитории. Если у вас есть собственная база данных или вы хотите развернуть ее в облаке как SaaS, вам нужно самостоятельно создать пользователя, запустить файл create_tables.sql и указать учетные данные в файле .env. Также в репозитории можно найти чат-боты Telegram, Slack, Discord, Vk с уже реализованной аналитикой и способ получения аналитики от LoraBot.

Как внедрить аналитику в свой чат-бот?

Вам необходимо скачать LoraBot в виде zip или с помощью git:

 git clone https://github.com/aleksspevak/lorabot.git 

Запустите базу данных для LoraBot с помощью следующей команды. Если у вас не установлен docker-compose, вы можете прочитать, как его установить здесь: https://docs.docker.com/compose/install/

 docker-compose up -d 

Установите необходимые библиотеки для LoraBot :

 pip3 установить -r требования.txt 

Установить пароль для доступа к аналитике в файле .env:

 ANALYTICS_PASSWORD=lorabot 

Инициализировать LoraBot в вашем боте:

 from lorabot import LoraBot 
lora_bot = LoraBot("имя вашего бота1") Функции LoraBot, чтобы начать получать информацию для аналитики как в примерах:

 # для отслеживания новых пользователей например в телеграмме уместно поставить в функции обработки команды /start 
lora_bot.user(USER_ID )
#для отслеживания команд, сообщений меню, сообщений
lora_bot. message(TEXT, TEXT_TYPE, USER_ID)
#для отслеживания событий
lora_bot.event(EVENT, EVENT_TYPE, USER_ID)
#для отслеживания отзыва
lora_bot.review(REVIEW, USER_ID) )
#для отслеживания оценки бота
lora_bot.assessment(RATING_IN_INT_FORMAT, USER_ID)

Для получения аналитики сделать какое-то условное ветвление, например в файле telegram_bot.py сделано условие на получение сообщения с ключевым словом, после этого проверяется пароль и после этого владелец бота получает доступ к аналитике:

Аналитические показатели

Перейдите по ссылке, чтобы найти все показатели, анализируемые в LoraBot. Обратите внимание, что некоторые метрики имеют параметры для установки периода аналитики, количества возвращаемых данных или для установки типа сообщений/событий. Также некоторые функции возвращают только текстовую информацию, а есть функции, которые возвращают и визуализацию данных, и текстовую информацию. Вот несколько примеров, как вернуть информацию из аналитики в боте Telegram:

 #Вернуть суммарную информацию о пользователях, использующих вашего бота(только текст) 
info = lora_bot. analyze_total(START_PERIOD, END_PERIOD)
bot.send_message(message.chat.id, info)
#Возвращает информацию об активных пользователях за день (фото+текст)
photo, info = lora_bot.analyze_dau(START_PERIOD, END_PERIOD)
bot.send_message(message.chat.id, info)
bot.send_photo(message.chat.id, photo)

Всего в LoraBot 20 метрик и их можно разделить на следующие группы:

  • Общие Метрики
  • Метрики пользователей
  • Метрики для анализа сообщений
  • Метрики для анализа событий
  • Метрики для анализа отзывов и оценок от пользователей бота
  • Прочие метрики

Также есть отдельная функция, в которую можно передать свой SQL-запрос прямо из бота. Это будет полезно для создания пользовательских метрик.

Схема базы данных, где хранится информация о пользователях, сообщениях, событиях и отзывах:

Заключение

На данный момент решение протестировано мной в течение месяца и результат меня удовлетворил. Я надеюсь, что это решение поможет и вам.

P.S. Аналитика это конечно хорошо, но если вам нужно, чтобы ваш бот работал без ручного запуска, заверните его в Dockerfile и запустите в том же файле docker-compose, где запускается база данных. Разместить бота на сервере станет намного проще.

Новый чат-бот OpenAI штурмует Интернет

Послушайте эту историю

За последние несколько лет чат-боты стали одним из очагов инноваций в области искусственного интеллекта. Они также являются ярким примером внедрения ИИ, поскольку их можно использовать во множестве вариантов использования. Чат-боты уже зарекомендовали себя как краеугольный камень взаимодействия человека и искусственного интеллекта — от генерации потенциальных клиентов для продаж до ответов на часто задаваемые вопросы и взаимодействия с клиентами для ролей поддержки.

С выпуском ChatGPT эти боты готовы к следующему этапу эволюции. OpenAI в четверг объявила об обучении и выпуске новой модели, которая взаимодействует с людьми с помощью естественного языка.

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

Что отличает ChatGPT

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

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

Это резко контрастирует с предыдущими чат-ботами, построенными на LLM, которые — из-за материала, содержащегося в их наборах данных — не имели никаких фильтров для типа контента, который они генерировали. Это привело к тому, что они предоставили хорошо написанные ответы на вопросы по вызывающим разногласия темам, что вызвало широкое противоречие (см. Galactica Facebook).

ChatGPT также позволяет пользователям вносить исправления в любые свои заявления. Это важная часть цикла обратной связи, которую OpenAI хочет включить в общедоступный предварительный просмотр бота, поскольку он позволяет пользователям напрямую взаимодействовать с ботом, чтобы скорректировать его курс до нужного ответа. Это также может помочь боту избежать информационных галлюцинаций — феномена, при котором большая языковая модель создает информацию, которая выглядит достоверной, но на самом деле представляет собой необоснованный словесный суп.

Ограничения модели

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

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

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

Несмотря на свои ограничения, ChatGPT представляет взвешенный подход к созданию ориентированных на пользователя алгоритмов генерации естественного языка. Хотя недостатки публикации этих мощных моделей уже широко обсуждались, разговор о том, как мы можем сделать их более безопасными, только начинается.

На пути к более безопасному ИИ

На каждом этапе модель предотвращается от неправильного использования с помощью различных проверок и мер. Со стороны клиента все ответы фильтруются через API модерации OpenAI, который обнаруживает и удаляет нежелательный контент из подсказок пользователя. Все это делается с помощью одного вызова API, и его эффективность ясно видна в безопасном характере ответов ChatGPT.

В дополнение к этому создается впечатление, что модель обучена избегать вредных и ложных ответов. Исследователи извлекли уроки из таких примеров, как GPT-3 и Codex, которые обычно дают очень нефильтрованные ответы, и настроили модель в процессе RLHF, чтобы этого не произошло. Хотя этот подход не идеален, его сочетание с другими факторами, такими как API модерации и относительно чистый набор данных, приближает его к развертыванию в чувствительных средах, таких как образование.

Цикл обратной связи, созданный исследователями, также является важной частью головоломки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Закрыть
Menu