AI бот - Агенты

:bookmark: Это руководство объясняет, как настроить и управлять Агентами для Discourse AI - AI bot.

:person_raising_hand: Требуемый уровень пользователя: Администратор

AI-бот Discourse включает гибкую систему управления Агентами. В этом руководстве рассматриваются:

  • Методы взаимодействия с AI-агентами
  • Параметры конфигурации
  • Расширенные настройки
  • Поддерживаемые инструменты
  • Возможности кастомизации

:link: Узнайте больше об AI-боте и о том, как его включить в этом руководстве.

Что такое агенты?

Агенты — это мощная функция, позволяющая настраивать поведение AI-движка в вашем форуме Discourse. Они действуют как «системное сообщение», которое направляет ответы и взаимодействия AI, помогая создать более персонализированный и увлекательный пользовательский опыт.

Зачем использовать агентов?

С помощью агентов вы можете адаптировать поведение AI под контекст и тон вашего форума. Хотите ли вы, чтобы AI был более формальным для профессиональной среды, более неформальным для сообщества или даже воплощал конкретного персонажа для ролевой игры — агенты дают вам такую гибкость.

Доступ к агентам для конкретных групп

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

Взаимодействие с агентами

С агентами можно взаимодействовать несколькими способами:

  1. Личное сообщение (PM)
  2. Прямое сообщение в чате (DM)
  3. Упоминания в каналах чата
  4. Упоминание в публичной теме через @example_bot_username

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

  • Разрешить личные сообщения: Позволяет пользователям начинать PM с этим агентом (включено по умолчанию)
  • Разрешить упоминания в темах: Позволяет использовать @mention в темах для запуска ответа
  • Разрешить прямые сообщения в чате: Позволяет использовать DM в чате с этим агентом (требуется плагин чата)
  • Разрешить упоминания в каналах чата: Позволяет использовать @mention в каналах чата (требуется плагин чата)

Конфигурация

Чтобы настроить Агентов, перейдите по адресу discourse.example.com/admin/plugins/discourse-ai/ai-agents.

Ключевые параметры конфигурации включают:

  • Системный промпт: Направляет ход диалога
  • Поддержка Vision: Включите для LLM с поддержкой Vision, например GPT-4 Turbo, Claude 3
  • Модель по умолчанию: Обязательна для упоминаемых агентов и агентов с включенной функцией принудительного использования LLM по умолчанию
  • Разрешенные группы: Определение прав доступа с использованием групповой безопасности Discourse
  • Загрузки: Индексация текстовых файлов для дополнительных знаний (с использованием RAG — Retrieval-Augmented Generation)
  • Включенные инструменты: Контроль доступа к определенным инструментам
  • Режим выполнения: Выбор между режимом «по умолчанию» и «агентным» (агентный режим включает многошаговое использование инструментов с настраиваемыми лимитами токенов и сжатием)

Вот пример экрана полной конфигурации AI-агента:

Расширенные параметры конфигурации

Редактор агентов предлагает несколько расширенных опций:

  • Temperature и top_p (сэмплирование по ядру): Контроль креативности против предсказуемости
  • Max context posts: Ограничение количества постов, передаваемых LLM для истории — меньше постов снизит затраты, но заставит AI «забыть» о старом контенте (недоступно в агентном режиме)
  • Режим выполнения: «По умолчанию» для ответов в один проход, «Агентный» для многошагового использования инструментов с:
    • Max turn tokens: Бюджет токенов для агентного выполнения
    • Compression threshold: Порог сжатия контекста в процентах (20–99%)
  • Показывать размышления: Отображение процесса рассуждения AI пользователям (включено по умолчанию)
  • Требовать одобрение: Требовать человеческое одобрение перед выполнением определенных действий
  • Принудительное использование LLM по умолчанию: Запретить пользователям переключать LLM для этого агента
  • Формат ответа: Настройка структурированного формата вывода
  • Примеры: Few-shot примеры для направления поведения AI (пары сообщений пользователь/ассистент)
  • Параметры загрузки:
    • Chunk tokens: Контроль разделения документов
    • Chunk overlap tokens: Установка перекрытия между чанками
    • Search conversation chunks: Количество фрагментов документа, добавляемых к запросам пользователей
    • Question consolidator LLM: Выбор LLM для определения вопросов пользователей
    • RAG LLM model: Выбор конкретной LLM для обработки RAG

Предварительные требования для поддержки загрузки

Чтобы использовать поддержку загрузки:

  1. Включите настройку ai_embeddings_enabled
  2. Настройте модель эмбеддингов через ai_embeddings_selected_model

Discourse AI поддерживает различные модели эмбеддингов. Клиенты на хостинге получают бесплатный доступ к модели bge-large-en.

:information_source: Самохостеры или те, кто хочет больше выбора, могут самостоятельно разместить модель эмбеддингов или использовать модели от Open AI, Google (Gemini) и других.

Разделение текста в Discourse AI

Discourse использует рекурсивный разделитель текста по символам, чтобы сохранять абзацы, строки и слова вместе при разделении текста. Вы можете управлять разделением текста, используя разделитель [[metadata ВАШИ МЕТАДАННЫЕ ЗДЕСЬ]]:

[[metadata about cats]]
dлинная история о кошках
[[metadata about dogs]]
dлинная история о собаках

Этот метод предотвращает «загрязнение чанков», гарантируя, что в каждый чанк включаются только релевантные данные.

Отладка AI-агентов

Чтобы отладить вашего агента:

  1. Добавьте пользователей в группу, указанную в настройке ai_bot_debugging_allowed_groups
  2. Пользователи в этой группе увидят кнопку отладки AI в нижней части постов AI
  3. Нажмите кнопку, чтобы открыть модальное окно интерфейса отладки

:warning: Помните: если вы предоставите LLM размытую или бесполезную информацию, ему будет очень сложно преобразовать её в полезную.

Поддерживаемые инструменты

Discourse AI поддерживает различные инструменты, включая:

Всегда доступны

  • Категории
  • Время
  • Поиск
  • Чтение
  • Схема базы данных
  • Настройки поиска
  • Контекст настроек
  • Случайный выборщик
  • Веб-браузер
  • Поиск Meta Discourse
  • Оценщик JavaScript
  • Исследователь
  • Флаг поста
  • Закрыть тему
  • Скрыть тему
  • Заблокировать пост
  • Удалить тему
  • Редактировать пост
  • Редактировать категорию
  • Установить таймер темы
  • Установить медленный режим
  • Переместить посты
  • Выдать значок

Интеграция с GitHub

  • Контент файла GitHub
  • Diff запроса на слияние (Pull Request) GitHub
  • Поиск файлов GitHub

Эти три инструмента всегда доступны. Дополнительно:

  • Поиск кода GitHub требует заполнения настройки ai_bot_github_access_token

Условные инструменты

  • Теги и Редактировать теги: Доступны, когда на вашем сайте включена функция тегирования
  • Генерация изображений (Image, Create Image, Edit Image): Требуется кастомный инструмент генерации изображений, настроенный через административный интерфейс
  • Поиск Google: Требует заполнения настроек ai_google_custom_search_api_key и ai_google_custom_search_cx
  • Артефакты (Create Artifact, Update Artifact, Read Artifact): Доступны, когда ai_artifact_security установлено в lax, hybrid или strict
  • Назначение: Доступно, когда установлен плагин Assign
  • Отметить как решенное: Доступно, когда установлен плагин Solved

Некоторые инструменты требуют дополнительной конфигурации или API-ключей.

Поддержка пользовательских инструментов

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

Кастомизация системных агентов

  1. Создайте нового агента
  2. Скопируйте и вставьте системный промпт из агента, который вы хотите кастомизировать
  3. Измените при необходимости
  4. Опционально отключите оригинальный системный агент, чтобы избежать дублирования

Кастомизация поиска

Чтобы кастомизировать поиск для нового агента:

  1. Создайте нового агента
  2. Добавьте инструмент «search»
  3. Настройте параметры поиска, включая:
    • Базовый поисковый запрос
    • Максимальное количество результатов поиска
    • Опцию включения приватных тем

Это позволяет делегировать права на поиск, увеличить количество результатов или ограничить поиск определенными разделами вашего сайта.

7 лайков

A post was split to a new topic: Can I provide an image generator function to Discourse AI

What exactly does the Read tool do?

Also, mentions on posts are currently broken per this bug report.

In a nutshell it allows the LLM the ability to read topics and posts on your forum.

1 лайк

Basically it reads a topic/post when url, name or ID is given and otherwise, or still, it uses embeds and what, when, why and how depends model itself, prompting etc?

2 лайка

Oh sorry was replying to a different post :slight_smile:

It uses topic ID or topic ID + Post Number to find the raw markdown for a topic/post with some guards for max length.

Does not depend on embedding.

5 лайков

A bit off-topic, but because I don’t have anything to ask and you guys will clean these topics every now and then, I don’t care.

Automatic titles in PMs with AI are now in the right language. Not a biggie, but its psychological value is big. Thanks!

4 лайка

is there any way to add the Bot users to a group? I basically want to add an avatar flair to those users, but when adding them to a group, they don’t show up

They don’t show up, but are still there. You can be sure by trying add an AI person second time. Or you see needed group on settings of those pseudo users.

1 лайк

Which part of the Discourse AI repo should I check out if I want to precisely know how the AI bot’s tools work?

Tool, Playground, Bot are all good areas to start with.

See this for example: Understanding Tools in Discourse AI System - AI Conversation - Discourse Meta

3 лайка

Precisely the answer I was looking for — thank you kind sir! For anyone it may pertain to: I recommend reading through the code in this repo to be able better steer your prompts for your persona’s tools.

1 лайк

A post was split to a new topic: Engineering a persona to lean on chat history

I am currently trying to fetch all posts from a topic via the “Read” tool, but it only provides a maximum of 100 posts to the LLM model. I already set “Max posts” to 999 in persona settings, but the issue persists.

Could there be any server-side API request limitation causing the issue?

@sam any idea on this one what could be the cause for the 100 post limit that I am encountering?

I haven’t checked the codebase, but I suspect it may be a hard limit set in the code itself. May I ask what it is that you’re trying to achieve with this? That is a key factor here.

And perhaps it may be best to use the Forum Researcher persona?

We have “journal/log” category which often contain several hundred posts where the topic owner reports about his project progress over a span of 4-5 months.

My goal is to fetch all posts within that topic, filter them by author = topic owner and create a summary.

We considered using the researcher persona, but cuttently it doesn’t support vision. We also want to process users’ images.

1 лайк

Oh you got to use forum researcher for this, it’s an exact use case for the persona

2 лайка

@sam I would love to, but currently it doesn’t support images. Is that something on the roadmap or not a priority at the moment?

3 лайка

Sure I can add that , not too big of a change

3 лайка