AIボット - カスタムツール

:bookmark: このガイドでは、Discourse AI プラグイン内でカスタム AI ツールを作成、設定、統合する方法を説明します。これにより、管理者はユーザー定義の JavaScript 関数を使用してボットの機能を拡張できます。

:person_raising_hand: 必要なユーザーレベル: 管理者

ツールは、AI ボットが特定のタスクを実行したり、テキストベースの応答を超えた情報を取得したりするために使用できるプログラム可能な機能です。これらのツールは、ボットが外部 API と対話したり、データを操作したり、追加の関数を実行したりして、その機能を拡張できるようにするスクリプトまたは統合です。

まとめ

このドキュメントでは、次の項目について説明します。

  • 新しいカスタム AI ツールの作成
  • ツールパラメータとスクリプトの設定
  • ツールスクリプトで利用可能な API
  • カスタムツールと AI ペルソナの統合
  • カスタムツールのテストとトラブルシューティング

新しいカスタム AI ツールの作成

AI ツールを作成するには、次の手順を実行します。

  1. 管理パネル > プラグイン > Discourse AI > ツールに移動します。
  2. 「新しいツール」をクリックします (既存のプリセットを使用してオプションについて学習できます)。
  3. 次のフィールドに入力します。
    • 名前: LLM に提示されるツールの名前
    • 説明: LLM に提示されるツールの説明
    • 要約: ツールがユーザーを支援するために何を行うかの要約 (詳細に表示されます)
    • パラメータ: LLM に提示されるツールが必要とする入力を定義します
    • スクリプト: ツールを機能させる JavaScript コード
  4. 「保存」をクリックします。

ツールスクリプトの設定

利用可能な API

ツールスクリプトは、次の API にアクセスできます。

  1. 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: ...})
    
  2. LLM (言語モデル) 統合:

    llm.truncate(text, length)
    

    これにより、AI モデルのトークン制限内でテキストを操作できます。

  3. カスタムアップロード統合 (RAG)

    index.search(query, { filenames: options, limit: max_fragments_optional })
    
  4. アップロード作成サポート

    upload.create(filename, base_64_content)
    
  5. 実行チェーン制御

    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 ペルソナに追加するには、次の手順を実行します。

  1. 管理パネル > プラグイン > Discourse AI > ペルソナに移動します。
  2. 既存のペルソナを編集するか、新しいペルソナを作成します。
  3. 「ツール」セクションで、カスタムツールが組み込みツールと一緒にリストされているのがわかります。
  4. カスタムツールを選択してペルソナに追加します。

カスタムツールの活用

カスタムツールを LLM に提供すると、会話を強化するために使用できます。

トラブルシューティング

ツールが期待どおりに動作しない場合は、次の手順を実行します。

  1. テストインターフェイスを使用して、入力に対して期待どおりに動作することを確認します。
  2. グループが ai_bot_debugging_allowed_groups に含まれていることを確認します。このグループのメンバーはボットトランスクリプトに完全にアクセスできます。AI ログはそこで表示できます。
  3. 予期しないことが発生した場合は、https://SITENAME/logs にアクセスしてエラーを確認してください。

追加リソース

「いいね!」 14

Discourse の AI ペルソナ向けのツール構築を始めたばかりです。これは、非常に多くの有用で公開されている API があるため、非常に役立つように思えます!

例えば、以下のような結果が得られています。

ポーカー戦略を通じた意思決定の理解 AI

maiki:

ゼルダの伝説 ブレス オブ ザ ワイルドのインフォカードを作成してください。

gpt-4o:

「ゼルダの伝説 ブレス オブ ザ ワイルド」の情報カードを以下に示します。


タイトル: ゼルダの伝説 ブレス オブ ザ ワイルド
開発: 任天堂
発売: 任天堂
発売日: 2017年3月3日
プラットフォーム: Nintendo Switch、Wii U
ジャンル: アクションアドベンチャー
モード: シングルプレイヤー

あらすじ:
広大なオープンワールドを舞台に、プレイヤーは深い眠りから目覚めたリンクを操作し、厄災ガノンを倒してハイラル王国を救います。没入感のある環境、プレイヤーが世界やそのシステムを自由に探索・操作できる点が賞賛されています。

受賞歴:
革新的なデザイン、広大な世界、魅力的なゲームプレイにより、数々の年間ゲーム大賞を含む多くの賞を受賞しています。

詳細情報: Wikidata エントリ


「ブレス オブ ザ ワイルド」は、オープンワールドゲームの再定義と、探索と発見を促す魅力的な体験を提供することで知られています。

maiki:

あつまれ どうぶつの森についても同様にお願いします。

gpt-4o:

「あつまれ どうぶつの森」の情報カードを以下に示します。


タイトル: あつまれ どうぶつの森
開発: 任天堂
発売: 任天堂
発売日: 2020年3月20日
プラットフォーム: Nintendo Switch
ジャンル: ソーシャルシミュレーション
モード: シングルプレイヤー、マルチプレイヤー

あらすじ:
この魅力的なソーシャルシミュレーションゲームでは、プレイヤーはたぬきちからパッケージを購入した後、無人島に移住するカスタマイズ可能なキャラクターを演じます。リアルタイムの探索、資源収集、クラフト、カスタマイズが可能で、コミュニティ的でリラックスできるゲーム体験を促進します。

受賞歴:
創造的な自由度と発売時期が評価され、年間ゲーム大賞や、世界的なパンデミック中のソーシャルゲームへの貢献で賞を受賞しました。

詳細情報: Wikidata エントリ


「あつまれ どうぶつの森」は、困難な時期における魅力的なソーシャル機能とストレス解消ゲームプレイで称賛され、文化的な現象となりました。

maiki:

シカゴから遠く離れて

gpt-4o:

「シカゴから遠く離れて」という本の情報カードを以下に示します。


タイトル: シカゴから遠く離れて
著者: リチャード・ペック
出版年: 1998年
ジャンル: 歴史フィクション、ヤングアダルト
ISBN: 978-0141303529

あらすじ:
ニューベリー名誉賞を受賞したこの小説は、1920年代後半から1930年代にかけて、シカゴからイリノイ州の田舎町へ、ジョーイと妹のメアリー・アリスが風変わりな祖母ドデルのもとへ毎年夏に旅行する様子を描いた短編小説集です。各章には、大恐慌を背景に人生の教訓を伝える、面白くて感動的なエピソードが含まれています。

受賞歴:
1999年にニューベリー名誉賞を受賞し、ユーモア、深み、20世紀初頭のアメリカ田舎の描写で称賛されています。

詳細情報: Wikidata エントリ


この本は、家族の絆とシンプルな時代の本質を捉えた、ノスタルジックで心温まる物語として高く評価されています。

maiki:

ベットで考える

gpt-4o:

以前、「ベットで考える」の Wikidata エントリを見つけましたが、現時点では Wikidata から直接詳細情報を取得できません。しかし、利用可能な情報に基づいた簡単なカードを以下に示します。


タイトル: ベットで考える:すべての情報がない場合に賢い意思決定を下す方法
著者: アニー・デューク
出版年: 2018年
ジャンル: ノンフィクション、意思決定、心理学
ISBN: 978-0735216358

あらすじ:
この本は、ポーカーからの洞察を活用して、不確実性下での意思決定を理解するのに役立ちます。プロのポーカープレイヤーおよび認知心理学者としての経験を融合させたアニー・デュークは、より賢明な意思決定を行い、結果を評価し、確率的思考を採用するためのフレームワークを提供します。

詳細情報: Wikidata エントリ


詳細については、書籍の出版に関する追加のリソースやデータベースを確認することをお勧めします。


それは問題ありませんが、この説明に気づきました…

…そして疑問に思いました。効率的な使用のために、これらのツールに直接言及してプロンプトを作成すべきでしょうか?

私のプロンプト作成の一般的なアプローチは、時間をかけて洗練し、AIツーリングに採用させたい行動パターンに焦点を当てることです。しかし、例えば、いつ Wikidata エンティティを検索するか、いつ特定のエンティティのすべてのクレームをリストするか(2つの異なる API)など、具体的な指示を追加できるのであれば、ワークフロー全体を意図したとおりに流れるように洗練できると感じています… :star_struck:

「いいね!」 3

Indeed clearly explaining the tool and providing examples in the system prompt is beneficial.

「いいね!」 2

カスタムツールでAPIキーとOpenAIプロジェクトを管理設定から挿入することは可能ですか?

「いいね!」 1

カスタムツールからREST呼び出しを行い、すべてのヘッダーを指定できます。

「いいね!」 2

今気づいたよ、笑… ぼんやりしててごめん

「いいね!」 1

ドキュメントをペルソナにアップロードし、埋め込みを生成して、それらに対してセマンティック検索を実行できるようになりました。しかし、場合によってはセマンティック検索が理想的ではないため、ハイブリッド検索で強化したいと考えています。つまり、既存のものを維持し、キーワード検索を追加したいのです。現時点では、それを実行するにはカスタムツールを作成する必要がありますよね?

ドキュメントをトピックとして公開すれば、ネイティブのDiscourse検索でそのまま機能することはわかっていますが、現在はそれが選択肢ではありません。