谢谢 Sam,
对一些人来说比对另一些人容易。我属于后者 ![]()
我正在研究这个问题,但还没有成功。我没有任何工具使用经验,所以实际上很期待能让它工作起来,然后考虑其他使用工具的方法。
我尝试使用你博客中的代码,但没有 API 密钥,也没有成功。AI 建议我使用硬编码的 URL,所以我尝试了,但也没有成功。
API 密钥没有被调用,也没有创建任何日志来显示错误。
这用于在创建时自动对主题进行分类
我将把主题“耶稣早年和奇迹的见解”归类到“新约”类别,因为它与耶稣的生平和教导有关。
正在移动主题…
这是我尝试过的。
/**
- 工具 API 快速参考
- 入口函数
- invoke(parameters): 主函数。接收参数 (Object)。必须返回一个 JSON 可序列化的值。
- 示例:
- function invoke(parameters) { return “result”; }
- details(): 可选。返回一个描述工具的字符串。
- 示例:
- function details() { return “工具描述。”; }
- 提供的对象
- 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 请求。
- llm
- llm.truncate(text, length): 将文本截断到指定的令牌长度。
- 参数:
text (string): 要截断的文本。length (number): 最大令牌数。- 返回:
截断后的字符串。
- index
- index.search(query, options?): 搜索索引文档。
- 参数:
query (string): 搜索查询。options (Object, optional):filenames (Array): 将搜索限制在特定文件。limit (number): 最大片段数 (最多 200)。- 返回:
{ fragment: string, metadata: string } 数组
- upload
- upload.create(filename, base_64_content): 上传文件。
- 参数:
filename (string): 文件名。base_64_content (string): Base64 编码的文件内容。- 返回:
{ id: number, short_url: string }
- 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 “通过将主题移动到指定类别来对其进行分类”;
}