本指南介绍如何为 Discourse AI - AI 机器人 设置和管理 Agent。
所需用户级别:管理员
Discourse AI 机器人包含一个灵活的系统来管理 Agent。本指南涵盖:
- AI Agent 的交互方法
- 配置选项
- 高级设置
- 支持的工具
- 定制可能性
在本指南中了解 AI 机器人及其启用方法。
什么是 Agent?
Agent 是一项强大的功能,可让您定制 Discourse 论坛中 AI 引擎的行为。它们充当“系统消息”,指导 AI 的响应和交互,有助于创建更个性化和引人入胜的用户体验。
为什么使用 Agent?
使用 Agent,您可以调整 AI 的行为,使其更好地适应您论坛的上下文和语气。无论您是希望 AI 在专业环境中使用更正式的语气,在社区论坛中使用更随意的语气,甚至为角色扮演游戏扮演特定角色,Agent 都能为您提供灵活性。
特定群组对 Agent 的访问权限
此外,您可以进行设置,使某些用户群组可以访问特定的 Agent。这意味着您可以为论坛的不同部分设置不同的 AI 行为,进一步增强社区互动的多样性和丰富性。
与 Agent 交互
可以通过多种方式与 Agent 交互:
- 私信 (PM)
- 聊天私信 (DM)
- 聊天频道提及
- 在公共主题中提及,使用
@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 编辑器提供了一些高级选项:
- Temperature 和 top_p(核采样):控制创造力与可预测性
- 最大上下文帖子:限制提供给 LLM 用于历史记录的帖子数量 - 较少的帖子会降低成本,但会导致 AI“忘记”较旧的内容(Agentic 模式下不可用)
- 执行模式:“Default”用于单次响应,“Agentic”用于多步工具使用,包括:
- 最大轮次令牌:Agentic 执行的令牌预算
- 压缩阈值:上下文压缩的百分比阈值(20-99%)
- 显示思考过程:向用户显示 AI 的推理过程(默认启用)
- 需要批准:在执行某些操作前需要人工批准
- 强制默认 LLM:阻止用户为此 Agent 切换 LLM
- 响应格式:配置结构化输出格式
- 示例:用于指导 AI 行为的少样本示例(用户/助手消息对)
- 上传选项:
- 分块令牌:控制文档分割
- 分块重叠令牌:设置块之间的重叠
- 搜索对话块:添加到用户查询的文档片段数量
- 问题整合 LLM:选择用于确定用户问题的 LLM
- RAG LLM 模型:选择用于 RAG 处理的特定 LLM
上传支持的先决条件
要使用上传支持:
- 启用
ai_embeddings_enabled设置- 通过
ai_embeddings_selected_model配置嵌入模型Discourse AI 支持各种嵌入模型。托管客户可以免费使用 bge-large-en 模型。
自托管用户或希望有更多选择的人可以自托管嵌入模型,或使用来自 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:
- 将用户添加到
ai_bot_debugging_allowed_groups设置中指定的群组- 此群组中的用户将在 AI 帖子的底部看到一个 AI 调试按钮
- 单击该按钮即可访问调试 UI 模态框
请记住:如果您向 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_key和ai_google_custom_search_cx设置- 工件(创建工件、更新工件、读取工件):在
ai_artifact_security设置为 lax、hybrid 或 strict 时可用- 分配 (Assign):安装了 Assign 插件时可用
- 标记为已解决 (Mark as Solved):安装了 Solved 插件时可用
某些工具需要额外的配置或 API 密钥。
自定义工具支持
您可以使用自定义工具支持创建自己的工具。
定制系统 Agent
- 创建一个新的 Agent
- 复制并粘贴您希望定制的 Agent 的系统提示
- 根据需要修改
- (可选)禁用原始系统 Agent 以避免重复
定制搜索
要为新 Agent 定制搜索:
- 创建一个新的 Agent
- 添加“搜索”工具
- 配置搜索选项,包括:
- 基础搜索查询
- 最大搜索结果数量
- 是否包含私人主题选项
这允许您委派搜索权限、增加结果数量或将搜索限制在站点的特定部分。
帖子已拆分为新主题:我能为 Discourse AI 提供图像生成器函数吗
“阅读”工具具体是做什么的?
简而言之,它允许大型语言模型读取论坛上的主题和帖子。
基本上,它会在给出 URL、名称或 ID 时读取主题/帖子,否则,或者仍然,它会使用嵌入,而什么、何时、为何以及如何取决于模型本身、提示等?
哦抱歉,我是在回复另一个帖子 ![]()
它使用主题 ID 或主题 ID + 帖子编号来查找主题/帖子的原始 Markdown,并带有最大长度的保护措施。
不依赖嵌入。
有点离题,但因为我没有什么可问的,而且你们会时不时地清理这些话题,所以我不在乎。
与AI的私人消息中的自动标题现在是正确的语言。这没什么大不了的,但它的心理价值很大。谢谢!
是否有办法将机器人用户添加到组中?我基本上想为这些用户添加一个头像装饰,但将他们添加到组中时,他们不会显示出来。
它们不会显示,但仍然存在。您可以通过尝试再次添加 AI 用户来确保这一点。或者,您可以在这些伪用户的设置中看到所需的组。
如果我想确切地了解 AI 机器人的工具是如何工作的,我应该查看 Discourse AI 仓库的哪个部分?
工具、Playground 和 Bot 都是不错的起点。
请参阅此示例:Understanding Tools in Discourse AI System - AI Conversation - Discourse Meta
这正是我想要的答案——谢谢您,好心人!如果有人需要:我建议阅读此仓库中的代码,以便更好地引导您为您的角色工具设置提示。
一个帖子被拆分到一个新主题:工程化一个人格来依赖聊天记录
我目前正尝试通过“Read”工具获取某个主题下的所有帖子,但它只向 LLM 模型提供了最多 100 个帖子。我已经将“Max posts”在 persona 设置中设置为 999,但问题仍然存在。
是否存在任何服务器端 API 请求限制导致了此问题?
@sam 有人知道这可能是由什么原因引起的吗?
我还没有检查代码库,但我怀疑它可能是代码本身设置的一个硬限制。我可以问一下您想通过此实现什么目标吗?这是这里的关键因素。
而且,也许最好使用论坛研究员的身份?
我们有一个“日志”类别,其中通常包含数百个帖子,主题所有者会在其中报告其项目在 4-5 个月内的进展情况。
我的目标是获取该主题内的所有帖子,按作者 = 主题所有者进行筛选,并创建摘要。
你必须为此使用论坛研究员,这是该角色的确切用例
@sam 我很想这样做,但目前它不支持图像。这是路线图上的内容,还是目前不优先考虑?
当然可以添加,这并不是一个很大的改动



