AIボット - エージェント

:bookmark: このガイドでは、Discourse AI - AIボットのエージェントを設定および管理する方法について説明します。

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

Discourse AIボットには、エージェントを管理するための柔軟なシステムが付属しています。このガイドでは以下について説明します。

  • AIエージェントの対話方法
  • 設定オプション
  • 詳細設定
  • サポートされているツール
  • カスタマイズの可能性

:link: AIボットとその有効化の方法についてはこちらのガイドをご覧ください。

エージェントとは?

エージェントは、DiscourseフォーラムでのAIエンジンの動作をカスタマイズできる強力な機能です。これらはAIの応答と対話を導く「システムメッセージ」として機能し、よりパーソナライズされた魅力的なユーザーエクスペリエンスの作成に役立ちます。

エージェントを使用する理由

エージェントを使用すると、フォーラムの文脈やトーンに合わせてAIの動作を調整できます。AIにプロフェッショナルな場ではよりフォーマルに、コミュニティフォーラムではよりカジュアルに振る舞ってほしい場合、あるいはロールプレイングゲームのために特定のキャラクターを体現してほしい場合でも、エージェントはその柔軟性を提供します。

グループ固有のエージェントアクセス

さらに、特定のユーザーグループが特定のエージェントにアクセスできるように設定することもできます。これにより、フォーラムの異なるセクションで異なるAIの動作を設定でき、コミュニティの対話の多様性と豊かさをさらに高めることができます。

エージェントとの対話

エージェントとは複数の方法で対話できます。

  1. プライベートメッセージ (PM)
  2. チャットダイレクトメッセージ (DM)
  3. チャットチャンネルでのメンション
  4. 一般トピックでの@example_bot_usernameによるメンション

管理者は、4つの個別のトグルを介して、各エージェントで許可される対話方法を制御できます。

  • プライベートメッセージを許可: ユーザーがこのエージェントとPMを開始できるようにします(デフォルトで有効)。
  • トピックでのメンションを許可: トピック内での@mentionによる応答を許可します。
  • チャットDMを許可: このエージェントとのチャットDMを許可します(チャットプラグインが必要です)。
  • チャットチャンネルでのメンションを許可: チャットチャンネルでの@mentionを許可します(チャットプラグインが必要です)。

設定

エージェントを設定するには、discourse.example.com/admin/plugins/discourse-ai/ai-agentsに移動します。

主要な設定オプションは次のとおりです。

  • システムプロンプト: 会話を誘導します。
  • ビジョンサポート: ビジョン対応のLLM、つまりGPT-4 Turbo、Claude 3などで有効にします。
  • デフォルトモデル: メンション可能なエージェントや、強制デフォルトLLMが有効なエージェントに必要です。
  • 許可されたグループ: Discourseグループセキュリティを使用して権限を定義します。
  • アップロード: 追加の知識のためにテキストファイルをインデックス化します(RAG - 検索拡張生成を使用)。
  • 有効なツール: 特定のツールへのアクセスを制御します。
  • 実行モード: 「デフォルト」と「エージェント的 (agentic)」モードから選択します(エージェント的モードでは、設定可能なトークン制限と圧縮を伴うマルチターンでのツール使用が可能になります)。

AIエージェント設定画面の全体像を以下に示します。

詳細な設定オプション

エディタにはいくつかの高度なオプションがあります。

  • 温度 (Temperature) および top_p (核サンプリング): 創造性と予測可能性を制御します。
  • 最大コンテキスト投稿数 (Max context posts): 履歴のためにLLMに提供される投稿数を制限します。投稿数が少ないとコストは削減されますが、AIが古いコンテンツを「忘れる」原因となります(エージェント的モードでは利用できません)。
  • 実行モード: シングルパスの応答の場合は「デフォルト」、マルチステップのツール使用の場合は「エージェント的」を選択します。これには以下が含まれます。
    • 最大ターン数トークン (Max turn tokens): エージェント的実行のためのトークン予算。
    • 圧縮しきい値 (Compression threshold): コンテキスト圧縮のパーセンテージしきい値 (20-99%)。
  • 思考を表示 (Show thinking): ユーザーにAIの推論プロセスを表示します(デフォルトで有効)。
  • 承認を要求 (Require approval): 特定のアクションが実行される前に人間の承認を要求します。
  • デフォルトLLMを強制 (Force default LLM): ユーザーがこのエージェントのLLMを切り替えるのを防ぎます。
  • 応答形式 (Response format): 構造化された出力形式を設定します。
  • 例 (Examples): AIの動作をガイドするための少ないショットの例(ユーザー/アシスタントメッセージのペア)。
  • アップロードオプション:
    • チャンクトークン (Chunk tokens): ドキュメント分割を制御します。
    • チャンクオーバーラップトークン (Chunk overlap tokens): チャンク間の重複を設定します。
    • 会話チャンクの検索 (Search conversation chunks): ユーザーのクエリに追加されるドキュメントフラグメントの数。
    • 質問統合LLM (Question consolidator LLM): ユーザーの質問を特定するために使用するLLMを選択します。
    • RAG LLMモデル (RAG LLM model): RAG処理のために特定のLLMを選択します。

アップロードサポートの前提条件

アップロードサポートを使用するには:

  1. ai_embeddings_enabled設定を有効にします。
  2. ai_embeddings_selected_modelを介して埋め込みモデルを設定します。

Discourse AIはさまざまな埋め込みモデルをサポートしています。ホストされている顧客は、bge-large-enモデルに無料でアクセスできます。

:information_source: セルフホストしているユーザーや、より多くの選択肢を望むユーザーは、埋め込みモデルをセルフホストするか、Open AI、Google (Gemini)などのモデルを使用できます。

Discourse AIにおけるテキスト分割

Discourseは再帰的文字テキストスプリッターを使用して、テキストを分割する際に段落、行、単語をまとめたままにします。[[metadata YOUR METADATA HERE]]セパレータを使用してテキスト分割を制御できます。

[[metadata about cats]]
a long story about cats
[[metadata about dogs]]
a long story about dogs

この方法は、関連データのみが各チャンクに含まれることを保証することにより、「チャンクの汚染」を防ぎます。

AIエージェントのデバッグ

エージェントをデバッグするには:

  1. ai_bot_debugging_allowed_groups設定で指定されたグループにユーザーを追加します。
  2. このグループのユーザーは、AI投稿の下部にAIデバッグボタンが表示されます。
  3. ボタンをクリックして、デバッグUIモーダルにアクセスします。

:warning: 注意: LLMに曖昧または役に立たない情報を提供すると、それを有用な情報に変換するのに非常に苦労します。

サポートされているツール

Discourse AIはさまざまなツールをサポートしています。

常に利用可能

  • カテゴリ
  • 時間
  • 検索
  • 読み取り
  • データベーススキーマ
  • 検索設定
  • 設定コンテキスト
  • ランダムピッカー
  • Webブラウザ
  • Meta Discourseの検索
  • JavaScript評価ツール
  • リサーチャー
  • 投稿のフラグ付け
  • トピックのクローズ
  • トピックの非表示
  • 投稿のロック
  • トピックの削除
  • 投稿の編集
  • カテゴリの編集
  • トピックタイマーの設定
  • スローモードの設定
  • 投稿の移動
  • バッジの付与

GitHub統合

  • GitHubファイルコンテンツ
  • GitHubプルリクエスト差分
  • GitHubファイル検索

これら3つのツールは常に利用可能です。さらに:

  • GitHubコード検索には、ai_bot_github_access_token設定に入力が必要です。

条件付きツール

  • タグ および タグの編集: サイトでタグ付けが有効な場合に利用可能。
  • 画像生成 (画像、画像の作成、画像の編集): 管理UIを介してカスタム画像生成ツールを設定する必要があります。
  • Google検索: ai_google_custom_search_api_key および ai_google_custom_search_cx 設定に入力が必要です。
  • 成果物 (Artifacts) (成果物の作成、成果物の更新、成果物の読み取り): ai_artifact_security が lax、hybrid、または strict に設定されている場合に利用可能。
  • 割り当て (Assign): 割り当てプラグインがインストールされている場合に利用可能。
  • 解決済みとしてマーク (Mark as Solved): 解決済みプラグインがインストールされている場合に利用可能。

一部のツールでは、追加の設定またはAPIキーが必要です。

カスタムツールのサポート

カスタムツールのサポートを使用して独自のツールを作成できます。

システムエージェントのカスタマイズ

  1. 新しいエージェントを作成します。
  2. カスタマイズしたいエージェントのシステムプロンプトをコピー&ペーストします。
  3. 必要に応じて修正します。
  4. 重複を避けるため、必要に応じて元のシステムエージェントを無効にします。

検索のカスタマイズ

新しいエージェントの検索をカスタマイズするには:

  1. 新しいエージェントを作成します。
  2. 「検索 (search)」ツールを追加します。
  3. 以下の検索オプションを設定します。

これにより、検索権限を委任したり、結果の数を増やしたり、サイトの特定のセクションに検索を制限したりすることが可能になります。

「いいね!」 7

投稿が新しいトピックに分割されました: Discourse AI に画像生成機能を提供できますか

Readツールは具体的に何をするのですか?

また、メンション機能は、このバグレポートによると現在壊れています

要するに、LLMがフォーラムのトピックや投稿を読み取る能力を可能にします。

「いいね!」 1

基本的に、URL、名前、またはIDが指定されている場合にトピック/投稿を読み込み、それ以外の場合、または引き続き、埋め込みを使用し、何、いつ、なぜ、どのようにモデル自体、プロンプトなどによって異なりますか?

「いいね!」 2

ああ、すみません、別の投稿に返信していました :slight_smile:

トピックIDまたはトピックID+投稿番号を使用して、最大長に対するいくつかのガードとともに、トピック/投稿の生のマークダウンを見つけます。

埋め込みには依存しません。

「いいね!」 5

少しトピックから外れますが、質問することがなく、皆さんが時々これらのトピックを整理するので、気にしません。

AIとのPMにおける自動タイトルが、正しい言語になりました。大したことではありませんが、心理的な価値は大きいです。ありがとうございます!

「いいね!」 4

Bot ユーザーをグループに追加する方法はありますか?基本的に、それらのユーザーにアバターの装飾を追加したいのですが、グループに追加すると表示されません。

表示されませんが、まだ存在しています。AIユーザーをもう一度追加しようとすることで確認できます。または、これらの疑似ユーザーの設定で必要なグループを確認できます。

「いいね!」 1

AIボットのツールがどのように機能するかを正確に知りたい場合、Discourse AIリポジトリのどの部分を確認すればよいですか?

Tool、Playground、Botはいずれも開始に適した領域です。

例はこちらをご覧ください: Understanding Tools in Discourse AI System - AI Conversation - Discourse Meta

「いいね!」 3

まさに探していた答えです。ありがとうございます!関係者の方へ:プロンプトをペルソナのツールに合わせてより良く調整するために、このリポジトリのコードを読み通すことをお勧めします。

「いいね!」 1

投稿が新しいトピックに分割されました: チャット履歴に依存するペルソナのエンジニアリング

現在、「Read」ツールを使用してトピックのすべての投稿を取得しようとしていますが、LLMモデルには最大100件の投稿しか提供されません。「Max posts」をペルソナ設定で999に設定しましたが、問題は解決しません。

サーバー側のAPIリクエスト制限が原因である可能性がありますか?

@sam これについて何か原因の心当たりはありますか?

コードベースは確認していませんが、コード自体にハードリミットが設定されている可能性があります。これをどのように達成しようとしているのか教えていただけますか?それがここでの重要な要素です。

そして、フォーラムリサーチャーのペルソナを使用するのが最善かもしれません。

「ジャーナル/ログ」カテゴリがあり、多くの場合、トピックの所有者が4〜5か月にわたるプロジェクトの進捗状況を報告する数百件の投稿が含まれています。

私の目標は、そのトピック内のすべての投稿を取得し、著者=トピックの所有者でフィルタリングして、要約を作成することです。

「いいね!」 1

フォーラムリサーチャーを使うべきです。それがこのペルソナのまさにユースケースです。

「いいね!」 2

@sam ぜひそうしたいのですが、現在は画像に対応していません。これはロードマップに載っていますか、それとも現時点では優先事項ではありませんか?

「いいね!」 3

はい、追加できます。それほど大きな変更ではありません。

「いいね!」 3