Чат-бот Discourse 🤖

:information_source: Краткое описание Оригинальный ИИ-чат-бот для Discourse
:hammer_and_wrench: Ссылка на репозиторий GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: Гид по установке Как установить плагины в Discourse
:heart: Спонсорская поддержка Пожалуйста, рассмотрите возможность стать постоянным спонсором моей работы с открытым исходным кодом на уровне, который соответствует ресурсам и потребностям вас или вашей организации, чтобы обеспечить этому плагину необходимую поддержку и гарантировать его дальнейшую работу на вашем сайте.

Вам нравится этот плагин? Пожалуйста, поставьте ему :star: на GitHub! :pray:

:information_source: Поскольку это плагин, предоставленный независимым разработчиком, пожалуйста, направляйте запросы на поддержку, сообщения об ошибках, предложения по UX и функциональности в этой теме. Обратите внимание, что этот плагин не доступен на хостинге Discourse.org. Вы можете установить его, если используете самохостинг, и, возможно, если вы находитесь на стороннем хостинге (но уточните это у вашего провайдера).

Оригинальный ИИ-чат-бот для Discourse

Chatbot приносит настраиваемые ИИ-диалоги в Топики, Личные сообщения, каналы Чата и ветки Чата. Придайте боту характер, подходящий для вашего сообщества, определите, какие группы могут им пользоваться, и выберите разные модели и инструменты для пользователей с низким, средним и высоким уровнем доверия.

Он может:

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

Для практического рабочего процесса поддержки см. Создание чат-бота технической поддержки.

При включенном локальном поиске по форуму бот может основывать ответы на содержимом вашего сообщества:

Для более простых разговоров ограничьте количество доступных инструментов или отключите их, чтобы сократить количество вызовов, задержки и стоимость:

Поддержка провайдеров

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

Функция OpenAI Anthropic Google Gemini xAI
Ответы LLM и инструменты :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Эмбеддинги :white_check_mark: :white_check_mark: :white_check_mark:
Компьютерное зрение :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Генерация изображений :white_check_mark: :white_check_mark: :white_check_mark:
Редактирование изображений Модели GPT Image :white_check_mark:
Ввод из PDF в разговор :white_check_mark:

Если пользовательский URL не задан, Chatbot использует встроенный официальный эндпоинт для выбранного провайдера. Пользовательские имена моделей и URL поддерживают Azure OpenAI, Ollama, прокси и другие сервисы, которые реализуют формат API поддерживаемого провайдера.

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

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

Доступ, квоты и инструменты

Никто не имеет доступа, пока вы не назначите группы в настройки уровней доверия Chatbot: низкий, средний или высокий. Пользователи наследуют квоту, модель и список разрешенных инструментов своего наивысшего соответствующего уровня доверия Chatbot. Квоты могут измеряться по количеству запросов или токенов.

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

Прочитайте о доступе и квотах и инструментах по уровням доверия.

Локальный поиск по форуму и конфиденциальность

:biohazard: Пожалуйста, поймите область действия эмбеддингов перед включением локального поиска по форуму.

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

Личные сообщения никогда не эмбеддируются. Держите уровень доверия для бенчмарка низким, избегайте частных Категорий, если их содержимое не может быть раскрыто каждому пользователю Chatbot, и удаляйте local_forum_search из уровней доверия, которые не должны им пользоваться.

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

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

Быстрый старт

  1. Установите плагин с помощью стандартной процедуры установки для самохостинга.
  2. Выберите chatbot_llm_provider, введите ключ API этого провайдера и выберите модели для каждого уровня доверия.
  3. Добавьте группы в настройки доступа для низкого, среднего или высокого уровня доверия и настройте квоты.
  4. Выберите встроенные инструменты, доступные для каждого уровня доверия.
  5. Если вы включаете local_forum_search, настройте его провайдера эмбеддингов и внимательно проверьте область его действия.
  6. Упомяните бота, ответьте ему, используйте кнопку быстрого доступа или настройте промпт для автоматического ответа в Категории.

Быстрый пример с OpenAI

  1. Создайте ключ API OpenAI и убедитесь, что оплата по API включена.
  2. Установите chatbot_llm_provider в значение OpenAI и вставьте ключ в chatbot_open_ai_token.
  3. Оставьте пользовательский URL пустым, выберите модель OpenAI для каждого уровня доверия, который вы намереваетесь использовать, и добавьте вашу тестовую группу в соответствующий параметр доступа Chatbot.
  4. Упомяните бота в разрешенном Топике, Личном сообщении или Чате, чтобы протестировать его.

README репозитория является источником истины для требований, всех основных групп настроек, поведения, специфичного для провайдера, пользовательских эндпоинтов, обслуживания эмбеддингов, кастомизации промптов, отладки, разработки расширений и удаления:

:books: Открыть полный README

Выбранные функции интерфейса

Категории могут приветствовать новый Топик и попросить бота поискать соответствующий контент сообщества:

Необязательная кнопка быстрого доступа может открыть прямой Чат или Личное сообщение с ботом:

Инструмент User Fields может собирать поддерживаемые пустые поля в частном порядке:

Сбор полей User Fields

Поддержка и спонсорство

Пожалуйста, сообщайте о запросах на поддержку, ошибках, обратной связи по UX и идеях функций в этой теме Meta. Указывайте провайдера, имя модели, соответствующие настройки, HTTP-статус и тело ответа провайдера, удаляя ключи API и частный контент.

Эта работа зависит от поддержки сообщества. Если плагин ценен для вашего сайта, пожалуйста, поддержите его постоянное обслуживание.

Спонсоры проекта

Спонсор Уровень Сайт
Surety Silver Plus suretyhome.com

Отказ от ответственности

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

104 лайка
Building a technical support chatbot
Answer feature
Webhooks on chat messages?
How to check what prevents rake migrate?
Weekly Summary of AI topics
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Interact with discourse from Python?
Sidekiq not working
Locations Plugin :earth_africa:
Lessons from Colossal Caves
Issue after Rebuilding Discourse on Digital Ocean Droplet
Locations Plugin :earth_africa:
I have error when upgrade new version of discourse
I have error when upgrade new version of discourse
Site down after upgrade via SSH - how to fix?
2023: The Year in Review
Character count when writing description
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Is there an option to use Discourse Chat as a customer service type of chat?
Configure AI Chatbot for Trust Level 0 Access
Creating bot on discourse
AI Helper Plugin
Copy custom file in discourse container while build
Voice to text integration
Allow specifiy user different from guardian.user in chat services such as Chat::CreateMessage
How to add a ChatGPT trained AI to discourse?
Cannot get the js in my component to compile SyntaxError: Private field must be used in an enclosing class
Allow ChatBot to read PDFs so it can join in a group discussion
How to create a custom ChatGPT based bot?
Discourse and Coveo
Link for new DM / personal chat message with pre-filled information
UX IPhone issues
How to respond to automatic topics with AI
Comparison between discourse-ai AI Bot and merefield/discourse-chatbot
Allow multiple ‘new topic’ drafts
I have error when upgrade the latest discourse
Two different answers from gpt4o - one right, one wrong.. !?
Is the shortcut to start AI conversation a user setting or not?
Setting Form Templates with a tag
Recommendation: chatbot to support discussion in threads
Photography Mentor Bot
Grouped Site Settings under Headings in Plugins
Update Not Completed and Discourse not opening
Recommendation: chatbot to support discussion in threads
Discourse AI Topic Summary :robot:
Discourse AI Topic Summary :robot:
Hubot Adapter for Discourse
Hubot Adapter for Discourse
Verbose log
Making the case for a hard cap feature on user group AI usage for AI bots and AI Helper
LLMs and the impact on customer support
2024: The Year in Review
How to respond to automatic topics with AI
What User Information is Exposed to LLMs in Discourse AI
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Auto responder using AI
Locations Plugin :earth_africa:
Discourse AI Topic Summary :robot:
Discourse Chat Bridge (Telegram)
AI personas integration of the chat plugin: It would be great if site users could chat with AI personas
What's the best way to store data with a plugin?
Locations Plugin :earth_africa:
Locations Plugin :earth_africa:
Is there any built-in chatbot or conversational assistant available in Discourse?
ChatGPT Assistant Integration
Create posts with AI
Multisite vs multiple containers
Training a model on a site's posts?
How are we all feeling about ChatGPT and other LLMs and how they'll impact forums?
GPT-4 with vision available
Use AI to request summary and others things from topic
Upgrading from /admin/upgrade takes *very* long
Embed additional explainer text in Form Template
We need prompt chains: Allow custom AI persona tools to access LangChain.js and/or longer execution time
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Enabling AI Bot in Chat
When I start a conversation with the AI, it gives two answers to my question
Balancing Costs and Functionality in AI-Powered Forums
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)

Я добавил Jina.ai в список поддерживаемых API, которые можно использовать для веб-поиска и веб-скрапинга. Один ключ подходит для обоих сервисов. Существующие API будут использоваться, если вы не удалите их ключи.

Было две основные причины:

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

Ссылка в настройках.

Привет! Спасибо за интерес к Discourse Chatbot.

Два момента могут быть важны:

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

бот всегда будет вызываться, если вы упомянете его через @, поэтому не уверен, сможете ли вы использовать эту функцию.

1 лайк

На «каждый» пост? Или только на те, где есть ключевое слово? Это два разных требования?

Может, стоит упомянуть Chatbot в заранее определённом ответе, и бот продолжит диалог? Это будет означать два поста, но может сработать.

То есть, если ваш заранее определённый ответ будет выглядеть так: «@Chatbot (или как вы его переименовали) пожалуйста, обработайте это», то Chatbot ответит. Очевидно, что этот ответ можно адаптировать.

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

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

Интересно, не лучшим ли решением будет добавить возможность отправки личных сообщений в AI-классификатор постов? Вы могли бы нанять кого-то для реализации этого через pull request или создать задачу с тегом Contribute > Feature и надеяться, что она будет приоритизирована. Это, безусловно, было бы универсально полезно?

Я упростил код, воспользовавшись функцией, добавленной в API Open AI. Дайте знать, если столкнётесь с какими-либо проблемами.

Я решил, что пора назвать это 1.0.0 :champagne: :tada: :partying_face:

4 лайка

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

Пример плагина с функцией здесь:

но, конечно, вы можете добавить это в любой плагин…

PR:

4 лайка

@Festinger, ты решил это?

Встраивание поста: Возникла проблема, но будут повторные попытки до достижения лимита: undefined method `destroy!’ for nil

После последнего обновления я начал получать указанную выше ошибку. Особенно часто она возникает при работе с изображениями. Моя настройка режима зрения установлена на «напрямую». Ранее таких ошибок не возникало.

Вы помните, как удалили Пост (или Тему) вскоре после его создания?

Эта ошибка возникает, если вы создаёте Пост, а затем удаляете его до того, как он успеет создать эмбеддинг. В результате, при удалении Чат-бот пытается удалить несуществующий эмбеддинг, что приводит к появлению раздражающего сообщения в логе, но не наносит никакого вреда :wink:

Если у вас есть идея, как можно сделать это лучше, не стесняйтесь, создайте Pull Request.

1 лайк

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

Как пользователь увидел это? Это отображается только в логах?

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

Можете, пожалуйста, предоставить трассировку стека?

Тогда почему пользователь отправил вам сообщение об ошибке? Что именно он вам сказал? Пользователь не должен знать о какой-либо ошибке; она просто отображается в логах?

Похоже, что ваши «старые участники» могут удалять свои недавно созданные темы или сообщения (так как они знают, как это сделать)?

У вас есть какая-либо автоматизация?

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

Обновление: я только что загрузил изображение на сайт и не могу воспроизвести проблему.

1 лайк

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

Сообщений об ошибках нет.

1 лайк

Что произойдет, если вы напишете «поиск в интернете для …»?

Внутренний промпт общий, поэтому он не предполагает использование Google …

Позвольте мне показать вам очень хорошую демонстрацию этой мощной возможности:

(хотя здесь используется встроенная альтернатива jina.ai)

Я пробовал это. В системном промпте было написано: «когда пользователь просит поиск через Google, он на самом деле имеет в виду, что вы должны использовать функцию веб-поиска, к которой у вас есть доступ». Я удалил эту часть, а затем попробовал сформулировать запрос в промпте пользователя как веб-поиск — в конце концов, это не использует API от Google. Безрезультатно, и ответ аналогичный: я не могу выполнять веб-поиск…

Вот что я нашел, но это не открывает:

{
  "id": "chatcmpl-A1wT9Dp1fCIVSzRsVPhr3NnNCcPjW",
  "object": "chat.completion",
  "created": 1725026447,
  "model": "gpt-4o-2024-05-13",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_MvzexRPsDj6EGuXhuiFcmtrd",
            "type": "function",
            "function": {
              "name": "web_search",
              "arguments": "{\"query\":\"International Dog Day date, reason, and history\"}"
            }
          }
        ],
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1203,
    "completion_tokens": 20,
    "total_tokens": 1223
  },
  "system_fingerprint": "fp_157b3831f5"
}
2 лайка

Я могу обойтись без этого, так как моя цель — использовать чат-бота как внутренний Q/A-бот, а Jina может решить проблему использования моего основного сайта (на WordPress).

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

1 лайк

Я попробую воспроизвести

1 лайк

У меня это работает как через Serp API, так и через Jina.ai.

Не могли бы вы предоставить «внутренние размышления» ботов от PM?

Внутренние размышления
[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_mKY7pfG54xRduRKCz5xee9E0",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"список бабочек Англии\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_mKY7pfG54xRduRKCz5xee9E0",
    "content": "А-Я бабочек · А. Адонис голубой · B. Черная гусеница · Бризстон · Коричневый Аргус · Коричневая гусеница · C. Белая холмистая голубая · Шахматный пропуск · Облачный желтый · D."
  }
]
1 лайк

Стоит ли делать это через ЛС? Мы сейчас только засоряем эту тему.

Но:

[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"International Dog Day date and history\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
    "content": "International Dog Day date and history: my search for this on the internet failed."
  }
]