AI 机器人 - 代理

:bookmark: 本指南介绍如何为 Discourse AI - AI 机器人 设置和管理 Agent。

:person_raising_hand: 所需用户级别:管理员

Discourse AI 机器人包含一个灵活的系统来管理 Agent。本指南涵盖:

  • AI Agent 的交互方法
  • 配置选项
  • 高级设置
  • 支持的工具
  • 定制可能性

:link:本指南中了解 AI 机器人及其启用方法。

什么是 Agent?

Agent 是一项强大的功能,可让您定制 Discourse 论坛中 AI 引擎的行为。它们充当“系统消息”,指导 AI 的响应和交互,有助于创建更个性化和引人入胜的用户体验。

为什么使用 Agent?

使用 Agent,您可以调整 AI 的行为,使其更好地适应您论坛的上下文和语气。无论您是希望 AI 在专业环境中使用更正式的语气,在社区论坛中使用更随意的语气,甚至为角色扮演游戏扮演特定角色,Agent 都能为您提供灵活性。

特定群组对 Agent 的访问权限

此外,您可以进行设置,使某些用户群组可以访问特定的 Agent。这意味着您可以为论坛的不同部分设置不同的 AI 行为,进一步增强社区互动的多样性和丰富性。

与 Agent 交互

可以通过多种方式与 Agent 交互:

  1. 私信 (PM)
  2. 聊天私信 (DM)
  3. 聊天频道提及
  4. 在公共主题中提及,使用 @example_bot_username

管理员可以通过四个单独的切换按钮控制允许每个 Agent 使用的交互方法:

  • 允许私信:允许用户与此 Agent 发起私信(默认启用)
  • 允许主题提及:允许在主题中进行 @mention 以触发响应
  • 允许聊天私信:允许与此 Agent 进行聊天私信(需要聊天插件)
  • 允许聊天频道提及:允许在聊天频道中进行 @mention(需要聊天插件)

配置

要配置 Agent,请导航至 discourse.example.com/admin/plugins/discourse-ai/ai-agents

主要配置选项包括:

  • 系统提示:引导对话
  • 视觉支持:为支持视觉功能的 LLM(如 GPT-4 Turbo、Claude 3)启用
  • 默认模型:可提及的 Agent 和启用了强制默认 LLM 的 Agent 所必需
  • 允许群组:使用 Discourse 群组安全定义权限
  • 上传:索引文本文件以获取附加知识(使用 RAG - 检索增强生成)
  • 启用的工具:控制对特定工具的访问
  • 执行模式:在“默认”和“Agentic”模式之间选择(Agentic 模式启用多轮工具使用,并具有可配置的令牌限制和压缩)

这是完整的 AI Agent 配置屏幕的视图:

高级配置选项

Agent 编辑器提供了一些高级选项:

  • Temperaturetop_p(核采样):控制创造力与可预测性
  • 最大上下文帖子:限制提供给 LLM 用于历史记录的帖子数量 - 较少的帖子会降低成本,但会导致 AI“忘记”较旧的内容(Agentic 模式下不可用)
  • 执行模式:“Default”用于单次响应,“Agentic”用于多步工具使用,包括:
    • 最大轮次令牌:Agentic 执行的令牌预算
    • 压缩阈值:上下文压缩的百分比阈值(20-99%)
  • 显示思考过程:向用户显示 AI 的推理过程(默认启用)
  • 需要批准:在执行某些操作前需要人工批准
  • 强制默认 LLM:阻止用户为此 Agent 切换 LLM
  • 响应格式:配置结构化输出格式
  • 示例:用于指导 AI 行为的少样本示例(用户/助手消息对)
  • 上传选项
    • 分块令牌:控制文档分割
    • 分块重叠令牌:设置块之间的重叠
    • 搜索对话块:添加到用户查询的文档片段数量
    • 问题整合 LLM:选择用于确定用户问题的 LLM
    • RAG LLM 模型:选择用于 RAG 处理的特定 LLM

上传支持的先决条件

要使用上传支持:

  1. 启用 ai_embeddings_enabled 设置
  2. 通过 ai_embeddings_selected_model 配置嵌入模型

Discourse AI 支持各种嵌入模型。托管客户可以免费使用 bge-large-en 模型。

:information_source: 自托管用户或希望有更多选择的人可以自托管嵌入模型,或使用来自 Open AI、Google (Gemini) 等的模型。

Discourse AI 中的文本分割

Discourse 使用递归字符文本分割器 (Recursive Character Text Splitter) 在分割文本时保持段落、行和单词的完整性。您可以使用 [[metadata YOUR METADATA HERE]] 分隔符控制文本分割:

[[metadata about cats]]
a long story about cats
[[metadata about dogs]]
a long story about dogs

此方法通过确保每个块只包含相关数据来防止“块污染”。

调试 AI Agent

要调试您的 Agent:

  1. 将用户添加到 ai_bot_debugging_allowed_groups 设置中指定的群组
  2. 此群组中的用户将在 AI 帖子的底部看到一个 AI 调试按钮
  3. 单击该按钮即可访问调试 UI 模态框

:warning: 请记住:如果您向 LLM 提供模糊或无用的信息,它将很难将其转换为有用的信息。

支持的工具

Discourse AI 支持各种工具,包括:

始终可用

  • 类别 (Categories)
  • 时间 (Time)
  • 搜索 (Search)
  • 阅读 (Read)
  • 数据库 Schema (Database Schema)
  • 搜索设置 (Search Settings)
  • 设置上下文 (Setting Context)
  • 随机选择器 (Random Picker)
  • 网络浏览器 (Web Browser)
  • 搜索 Meta Discourse
  • JavaScript 评估器 (JavaScript Evaluator)
  • 研究员 (Researcher)
  • 标记帖子 (Flag Post)
  • 关闭主题 (Close Topic)
  • 取消列表主题 (Unlist Topic)
  • 锁定帖子 (Lock Post)
  • 删除主题 (Delete Topic)
  • 编辑帖子 (Edit Post)
  • 编辑类别 (Edit Category)
  • 设置主题计时器 (Set Topic Timer)
  • 设置慢速模式 (Set Slow Mode)
  • 移动帖子 (Move Posts)
  • 授予徽章 (Grant Badge)

GitHub 集成

  • GitHub 文件内容 (GitHub File Content)
  • GitHub 拉取请求差异 (GitHub Pull Request Diff)
  • GitHub 搜索文件 (GitHub Search Files)

这三个工具始终可用。此外:

  • GitHub 搜索代码 (GitHub Search Code) 需要填写 ai_bot_github_access_token 设置

条件工具

  • 标签编辑标签 (Edit Tags):在站点启用标记功能时可用
  • 图像生成(图像、创建图像、编辑图像):需要通过管理界面配置自定义图像生成工具
  • Google 搜索:需要填写 ai_google_custom_search_api_keyai_google_custom_search_cx 设置
  • 工件(创建工件、更新工件、读取工件):在 ai_artifact_security 设置为 lax、hybrid 或 strict 时可用
  • 分配 (Assign):安装了 Assign 插件时可用
  • 标记为已解决 (Mark as Solved):安装了 Solved 插件时可用

某些工具需要额外的配置或 API 密钥。

自定义工具支持

您可以使用自定义工具支持创建自己的工具。

定制系统 Agent

  1. 创建一个新的 Agent
  2. 复制并粘贴您希望定制的 Agent 的系统提示
  3. 根据需要修改
  4. (可选)禁用原始系统 Agent 以避免重复

定制搜索

要为新 Agent 定制搜索:

  1. 创建一个新的 Agent
  2. 添加“搜索”工具
  3. 配置搜索选项,包括:

这允许您委派搜索权限、增加结果数量或将搜索限制在站点的特定部分。

8 个赞
Discourse AI - AI bot
RAG capacities of discourse-ai
Multiple AI bots, and replying in public
Experiments with AI based moderation on Discourse Meta
Two different answers from gpt4o - one right, one wrong.. !?
"Triage posts using AI" script of "Automation" plugin always includes image data in request
New AI Persona Editor for Discourse
Renaming AI Persona -> AI Agent
Discourse AI - AI triage
Using Discourse AI as a Discobot
Setting up NSFW detection in your community
Gemini Flash 2.5 Image - now on Discourse
Content Localization - Manual and Automatic with Discourse AI
Why is my AI forum helper struggling to answer questions?
AI Bot – Bring Your Own MCP Server
Tag topics using AI
Unlock All Discourse AI Features with Our Hosted LLM
Using PDF and attachment support with AI bots
Setting up spam detection in your community
Multiple AI bots, and replying in public
AI bot - Custom tools
AI bot - Chat and PM integration
A Plug-In to convert Discourse Forum Discussions into Clear Proposal Revisions with Community-Sourced Justifications
Discourse AI
OpenAI image generation and editing now supported in Discourse AI
Can Discourse AI Suggest Relevant Topics and Send Private Messages to Users Based on Their Queries?
Renaming AI Persona -> AI Agent
Improving your results from the "Web Artifact Creator" bot with the Prompt Master bot
Discourse AI - Helper
How to generate AI replies for forum topics using Persona
Discourse AI - AI triage using Agent
Setting up toxicity detection in your community

帖子已拆分为新主题:我能为 Discourse AI 提供图像生成器函数吗

“阅读”工具具体是做什么的?

另外,根据此 bug 报告,帖子中的提及功能目前已损坏

简而言之,它允许大型语言模型读取论坛上的主题和帖子。

1 个赞

基本上,它会在给出 URL、名称或 ID 时读取主题/帖子,否则,或者仍然,它会使用嵌入,而什么、何时、为何以及如何取决于模型本身、提示等?

2 个赞

哦抱歉,我是在回复另一个帖子 :slight_smile:

它使用主题 ID 或主题 ID + 帖子编号来查找主题/帖子的原始 Markdown,并带有最大长度的保护措施。

不依赖嵌入。

5 个赞

有点离题,但因为我没有什么可问的,而且你们会时不时地清理这些话题,所以我不在乎。

与AI的私人消息中的自动标题现在是正确的语言。这没什么大不了的,但它的心理价值很大。谢谢!

4 个赞

是否有办法将机器人用户添加到组中?我基本上想为这些用户添加一个头像装饰,但将他们添加到组中时,他们不会显示出来。

它们不会显示,但仍然存在。您可以通过尝试再次添加 AI 用户来确保这一点。或者,您可以在这些伪用户的设置中看到所需的组。

1 个赞

如果我想确切地了解 AI 机器人的工具是如何工作的,我应该查看 Discourse AI 仓库的哪个部分?

工具、Playground 和 Bot 都是不错的起点。

请参阅此示例:Understanding Tools in Discourse AI System - AI Conversation - Discourse Meta

3 个赞

这正是我想要的答案——谢谢您,好心人!如果有人需要:我建议阅读此仓库中的代码,以便更好地引导您为您的角色工具设置提示。

1 个赞

一个帖子被拆分到一个新主题:工程化一个人格来依赖聊天记录

我目前正尝试通过“Read”工具获取某个主题下的所有帖子,但它只向 LLM 模型提供了最多 100 个帖子。我已经将“Max posts”在 persona 设置中设置为 999,但问题仍然存在。

是否存在任何服务器端 API 请求限制导致了此问题?

@sam 有人知道这可能是由什么原因引起的吗?

我还没有检查代码库,但我怀疑它可能是代码本身设置的一个硬限制。我可以问一下您想通过此实现什么目标吗?这是这里的关键因素。

而且,也许最好使用论坛研究员的身份?

我们有一个“日志”类别,其中通常包含数百个帖子,主题所有者会在其中报告其项目在 4-5 个月内的进展情况。

我的目标是获取该主题内的所有帖子,按作者 = 主题所有者进行筛选,并创建摘要。

1 个赞

你必须为此使用论坛研究员,这是该角色的确切用例

2 个赞

@sam 我很想这样做,但目前它不支持图像。这是路线图上的内容,还是目前不优先考虑?

3 个赞

当然可以添加,这并不是一个很大的改动

3 个赞