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. 配置搜索选项,包括:

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

7 个赞

帖子已拆分为新主题:我能为 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 个赞