サム、ありがとうございます。
一部の人にとっては、他の人よりも簡単です。私は後者のカテゴリーに属しています ![]()
これをいじっていますが、うまくいきません。ツール経験がないので、ツールを他の方法で使用することを考えるために、これを機能させることを楽しみにしています。
ブログのコードをAPIキーで使用してみましたが、うまくいきませんでした。AIはハードコードされたURLを使用するように提案したので、試しましたが成功しませんでした。
APIキーは呼び出されず、エラーが発生したログも作成されていません。
これは、トピック作成時に自動的にカテゴリ分けするために使用されます。
「イエスの初期の年と奇跡からの洞察」というトピックを、イエスの生涯と教えに関連しているため、新約聖書のカテゴリーに分類します。
トピックを移動しています…
これが私が試したことです。
/**
- Tool API クイックリファレンス
- エントリー関数
- invoke(parameters): メイン関数。パラメーター(Object)を受け取ります。JSONシリアライズ可能な値を返す必要があります。
- 例:
- function invoke(parameters) { return “result”; }
- details(): オプション。ツールを説明する文字列を返します。
- 例:
- function details() { return “Tool description.”; }
- 提供されるオブジェクト
- 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)
- 注意: 1回の実行につき最大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): POSTの本文を設定し、チェーンを終了します。
- パラメーター:
raw (string): POSTに追加する生のコンテンツ。- 制約
- 実行時間: ≤ 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 “指定されたカテゴリにトピックを移動して分類します”;
}