本指南介绍了如何在 Discourse AI 插件中创建、配置和集成自定义 AI 工具,使管理员能够通过用户定义的 JavaScript 函数扩展机器人的功能。
所需用户级别:管理员
工具是可编程的功能,AI 机器人可以使用它们来执行特定任务或检索信息,而不仅仅是基于文本的响应。这些工具是脚本或集成,允许机器人与外部 API 交互、操作数据或执行其他功能来扩展其功能。
摘要
本文档涵盖:
- 创建新的自定义 AI 工具
- 配置工具参数和脚本
- 可用于工具脚本的 API
- 将自定义工具与 AI 角色集成
- 测试和故障排除自定义工具
创建新的自定义 AI 工具
要创建新的 AI 工具:
- 导航到管理面板 > 插件 > Discourse AI > 工具
- 点击“新建工具”(您可以使用现有的预设来了解选项)
- 填写以下字段:
- 名称:工具在 LLM 中显示的名称
- 描述:工具在 LLM 中显示的描述
- 摘要:工具的作用以帮助用户的摘要(显示在详细信息中)
- 参数:定义工具作为 LLM 显示的输入
- 脚本:为工具提供动力的 JavaScript 代码
- 点击“保存”
配置工具脚本
可用 API
您的工具脚本可以访问以下 API:
-
HTTP 请求:
http.get(url, options) http.post(url, options)使用这些与外部服务进行交互。您可以使用
options来指定 HTTP 标头:http.get(url, { headers: { Auth: "some value" } }) http.post(url, { headers: { Auth: "some value", body: "some body" } }) http.patch(url, { headers: { Auth: "some value", body: "some body" } }) http.delete(url, { headers: ...}) http.put(url, { headers: ... , body: ...}) -
LLM(语言模型)集成:
llm.truncate(text, length)这允许您在 AI 模型令牌限制内操作文本。
-
自定义上传集成 (RAG)
index.search(query, { filenames: options, limit: max_fragments_optional }) -
上传创建支持
upload.create(filename, base_64_content) -
执行链控制
chain.setCustomRaw(raw) - 设置链中 post 的正文。
所需函数
您的脚本必须实现:
invoke(params):调用工具时执行的主函数
它还可以选择实现:
details():(可选)提供有关工具执行的附加信息
示例脚本:
function invoke(params) {
let result = http.get("https://api.example.com/data?query=" + params.query);
return JSON.parse(result.body);
}
function details() {
return "Fetched data from Example API";
}
限制和安全
- 执行超时:工具的默认超时时间为 2 秒
- HTTP 请求:每个工具执行最多 20 个请求
- 沙盒环境:无法访问服务器文件系统或 Ruby 库
测试您的工具
您应该测试您构建的任何工具,以确保提供给 LLM 的结果符合您的预期。
将工具与 AI 角色集成
要将自定义工具添加到 AI 角色:
- 转到管理面板 > 插件 > Discourse AI > 角色
- 编辑现有角色或创建新角色
- 在“工具”部分,您将看到自定义工具与内置工具并列显示
- 选择您的自定义工具以将其添加到角色
自定义工具实战
一旦您将自定义工具提供给 LLM,它就可以使用它来增强对话。
故障排除
如果您的工具无法按预期工作:
- 使用测试界面确保它对您的输入表现符合预期。
- 确保您的组在
ai_bot_debugging_allowed_groups中。此组的成员可以完全访问机器人会话记录;您可以在此处查看 AI 日志。 - 如果发生任何意外情况,请访问
https://SITENAME/logs检查错误。





