使用 AI 来标记和分类论坛帖子

谢谢 Sam,

对一些人来说比对另一些人容易。我属于后者 :joy:

我正在研究这个问题,但还没有成功。我没有任何工具使用经验,所以实际上很期待能让它工作起来,然后考虑其他使用工具的方法。

我尝试使用你博客中的代码,但没有 API 密钥,也没有成功。AI 建议我使用硬编码的 URL,所以我尝试了,但也没有成功。

API 密钥没有被调用,也没有创建任何日志来显示错误。

这用于在创建时自动对主题进行分类

我将把主题“耶稣早年和奇迹的见解”归类到“新约”类别,因为它与耶稣的生平和教导有关。
正在移动主题…

这是我尝试过的。

/**

  • 工具 API 快速参考
  • 入口函数
  • invoke(parameters): 主函数。接收参数 (Object)。必须返回一个 JSON 可序列化的值。
  • 示例:
  • function invoke(parameters) { return “result”; }
  • details(): 可选。返回一个描述工具的字符串。
  • 示例:
  • function details() { return “工具描述。”; }
  • 提供的对象
    1. http
  • http.get(url, options?): 执行 HTTP GET 请求。
  • 参数:
  •  url (string): 请求 URL。
    
  •  options (Object, optional):
    
  •    headers (Object): 请求头。
    
  • 返回:
  •  { status: number, body: string }
    
  • http.post(url, options?): 执行 HTTP POST 请求。
  • 参数:
  •  url (string): 请求 URL。
    
  •  options (Object, optional):
    
  •    headers (Object): 请求头。
    
  •    body (string): 请求体。
    
  • 返回:
  •  { status: number, body: string }
    
  • (还可用:http.put, http.patch, http.delete)
  • 注意:每次执行最多 20 个 HTTP 请求。
    1. llm
  • llm.truncate(text, length): 将文本截断到指定的令牌长度。
  • 参数:
  •  text (string): 要截断的文本。
    
  •  length (number): 最大令牌数。
    
  • 返回:
  •  截断后的字符串。
    
    1. index
  • index.search(query, options?): 搜索索引文档。
  • 参数:
  •  query (string): 搜索查询。
    
  •  options (Object, optional):
    
  •    filenames (Array): 将搜索限制在特定文件。
    
  •    limit (number): 最大片段数 (最多 200)。
    
  • 返回:
  •  { fragment: string, metadata: string } 数组
    
    1. upload
  • upload.create(filename, base_64_content): 上传文件。
  • 参数:
  •  filename (string): 文件名。
    
  •  base_64_content (string): Base64 编码的文件内容。
    
  • 返回:
  •  { id: number, short_url: string }
    
    1. chain
  • chain.setCustomRaw(raw): 设置帖子的正文并退出链。
  • 参数:
  •  raw (string): 要添加到帖子的原始内容。
    
  • 约束
  • 执行时间:≤ 2000ms
  • 内存:≤ 10MB
  • HTTP 请求:每次执行 ≤ 20 次
  • 超过限制将导致错误或终止。
  • 安全
  • 沙盒环境:无法访问系统或全局对象。
  • 无文件系统访问:无法读取或写入文件。
    */

/**

  • Discourse 主题分类器
  • 此工具允许您使用 Discourse API 更改 Discourse 主题的类别。
    */

/**

  • Discourse 主题分类器
  • 此工具允许您使用 Discourse API 更改 Discourse 主题的类别。
    */

/**

  • Discourse 主题分类器
  • 此工具允许您使用 Discourse API 更改 Discourse 主题的类别。
    */

function invoke(params) {
// 必需参数验证
if (!params.topic_id) {
return { error: “缺少必需参数: topic_id” };
}

if (!params.category_id) {
return { error: “缺少必需参数: category_id” };
}

// 您的 Discourse 实例的基础 URL
const baseUrl = “https://community.mysite.com”;

// 更新主题的完整 API 端点 URL
const apiUrl = ${baseUrl}/t/${params.topic_id}.json;

// 准备请求体
const requestBody = {
category_id: params.category_id
};

// 可选参数:如果提供了标题,则更新标题
if (params.title) {
requestBody.title = params.title;
}

// 使用您提供的 API 密钥
const apiKey = “Discourse-API-Key”;

try {
// 发送 PUT 请求以更新主题
const response = http.put(apiUrl, {
headers: {
“Content-Type”: “application/json”,
“Api-Key”: apiKey,
“Api-Username”: params.api_username || “system”
},
body: JSON.stringify(requestBody)
});

if (response.status >= 200 && response.status < 300) {
  return {
    success: true,
    topic_id: params.topic_id,
    category_id: params.category_id,
    response: JSON.parse(response.body)
  };
} else {
  return {
    error: `更新主题类别失败。状态码:${response.status}`,
    details: response.body
  };
}

} catch (error) {
return {
error: “更新主题类别时发生错误”,
details: error.toString()
};
}
}

function details() {
return “通过将主题移动到指定类别来对其进行分类”;
}

2 个赞