chatbot_support_vision
ONにする)*外部 (提携していない) API サービスへのサインアップが必要です。設定内のリンク。
次の 2 つのモードがあります。
RAG モードは非常に賢く、フォーラムに投稿された事実を認識します。
基本ボット モードでは間違いが発生する可能性がありますが、大規模言語モデルへの呼び出しが少なくなるため、実行コストが安くなります。
このボットはフォーラムの公開スペースで使用できます。ボットを特に便利にするために、RAG モード (ボットの信頼レベルごとに 1 つの設定) があります。これはデフォルトでは設定されていません。
RAG モードでは、ボットは、デフォルトで、 chatbot embeddings strategy
(デフォルトのbenchmark_user
) を設定することによって管理され、信頼レベル 1 ユーザーに表示されるすべてのコンテンツが公開されます。したがって、公開トピックで対話する場合、カテゴリ権限を介して信頼レベル 0 または 1 レベルでコンテンツをゲートする傾向がある場合、ボットが情報を「漏洩」する可能性があります。このレベルが選択された理由は、経験上、ほとんどのサイトは通常、機密コンテンツを低い信頼レベルでゲート処理しないためですが、それは特定のニーズに依存します。
このモードでは、信頼レベル 1 を持つユーザーが少なくとも 1 人いて、自動化されたグループ以外の追加のグループ メンバーシップがないことを確認してください。 (ボットは TL1 レベルのユーザーが知っているすべてのことを知っており、それを共有できることに注意してください)。自動化グループ以外に追加のグループ メンバーシップを持たない信頼レベル 0 ユーザーがいる場合は、 chatbot embeddings benchmark user trust level
を下げることを選択できます。
あるいは:
chatbot embeddings strategy
category
に切り替え、 chatbot embeddings categories
カテゴリにボットに知らせたいカテゴリを入力します。 (プライベート カテゴリを追加する場合、ボットはそのカテゴリやボットがパブリックで発言する内容を認識する必要があることに注意してください。権限の低いユーザーに情報が漏洩する可能性があるため、追加する内容には少し注意してください)。basic
モードでのみ使用してください (ただし、ボットには投稿が表示されません)この設定は妥協であることがわかります。ボットを活用するには、サイト上のコンテンツについての知識が必要です。現時点では、ボットがメンバー限定のコンテンツを選択的に読み取って、それをメンバーのみと共有することはできず、一部の管理者が制限を感じている可能性がありますが、ボットが公の場で会話できる間にそれを簡単に解決する方法はありません。特別なニーズがあり、この分野での活動のスポンサーになりたい場合は、私に連絡してください。セマンティック検索によるボットの許可は簡単な問題ではありません。現在、システムは速度を考慮して最適化されています。注意: プライベート メッセージはボットによって読み取られることはありません。
サイト上のコンテンツについてチャットボットに知らせたい場合は、この設定をオンにします。
chatbot_embeddings_enabled
RAG タイプのボットを使用し、現在のトピックだけでなくフォーラムのコンテンツを確実に認識できるようにする場合にのみ必要です。
最初に、ボットがフォーラム情報を見つけられるように、スコープ内のすべての投稿の埋め込みを作成する必要があります。この設定が有効になると、これはバックグラウンドで行われるようになり、何もする必要はありません。
非常に大規模なサイトの場合、このシード処理には数日かかる場合があります。
これはいくつかの設定によって決まります。
chatbot_embeddings_strategy
「benchmark_user」または「category」のいずれかchatbot_embeddings_benchmark_user_trust_level
前者の関連する信頼レベルを設定します。chatbot_embeddings_categories
、 category
戦略が設定されている場合、指定されたカテゴリ内のすべての投稿を検討するためのアクセス権をボットに与えます。これらの設定を変更すると、時間の経過とともに、埋め込みの数が変化します。
コンテナを入力します。
./launcher enter app
そして、次の rake コマンドを実行します。
rake chatbot:refresh_embeddings[1]
これは現時点では不明な理由で 2 回実行されます (申し訳ありません。ご自由に PRしてください) が、 [1]
では 2 回目は欠落している埋め込みのみを追加する (つまり、最初の実行直後は何も追加しない) ことが保証されているため、やや意味がありません。
万が一、OpenAI によるレート制限が発生した場合 (ありそうもないことですが)、次の手順で埋め込みを完了できます。
rake chatbot:refresh_embeddings[1,1]
これにより、欠落しているものは埋められますが (エラーによって失われたものは何もありません)、Open AI への各呼び出しの間に 1 秒の遅延を設けてより慎重に続行されます。
ボット インタラクションと比較すると、埋め込みの作成には費用はかかりませんが、いずれの場合も Open AI ダッシュボードで使用状況を監視してください。
注意: 埋め込みは投稿に対してのみ作成され、信頼レベル 1 ユーザーがアクセスできる投稿に対してのみ作成されます。これは合理的な妥協点のように思えました。信頼レベル 2+ のみがアクセス可能なコンテンツからの投稿の埋め込みは作成されません。
@37Rb は次のように書いています。「これは、埋め込みを監視および検証するために Data Explorer プラグインで使用している SQL クエリです…他の人の役に立つ場合に備えて。」
SELECT e.id, e.post_id AS post, p.topic_id AS topic, p.post_number,
p.topic_id, e.created_at, e.updated_at, p.deleted_at AS post_deleted
FROM chatbot_post_embeddings e LEFT JOIN posts p ON e.post_id = p.id
次のようなエラーが表示される場合があります。
OpenAI HTTP Error (spotted in ruby-openai 6.3.1): {"error"=>{"message"=>"This model's maximum context length is 8192 tokens, however you requested 8528 tokens (8528 in your prompt; 0 for the completion). Please reduce your prompt; or completion length.", "type"=>"invalid_request_error", "param"=>nil, "code"=>nil}}
こうすれば解決します...
エラー メッセージによると、埋め込みモデルには次の制限があります。
8192 tokens
however you requested 8528
この設定の現在の値を削除する必要があります。
chatbot_open_ai_embeddings_char_limit:
diff の約 4 倍にして、それが機能するかどうかを確認します (トークンはおよそ4 文字です)。
したがって、この例では、4 x (8528 - 8192) = 1344
したがって、安全を確保するために、 chatbot_open_ai_embeddings_char_limit
現在の値を 1500 下げます。ただし、デフォルト値は英語の投稿に対する多くのテストに従って設定されていますが、他の言語の場合は下げる必要がある場合があります。
これにより、さらに多くのテキストとリクエスト トークンが切り取られ、埋め込みが完了することが期待されます。そうでない場合は、差を確認し、それに応じてさらに差を減らす必要があります。最終的には十分に低くなるので、再度確認する必要はありません。
設定を変更する以外に何もする必要はありません。徐々にではありますが、バックグラウンド ジョブが処理します。
本当にプロセスを高速化したい場合は、次のようにします。
chatbot_open_ai_embeddings_model
設定を新しい優先モデルに変更します。./launcher enter app
rails c
に入ります::DiscourseChatbot::PostEmbedding.delete_all
を実行しますexit
(コンテナ内のルートに戻ります)rake chatbot:refresh_embeddings[1]
chatbot_forum_search_function_similarity_threshold
を削除する必要があるかもしれません。そうしないと結果が得られないかもしれません :)。デフォルト値を0.8
から0.6
に下げましたが、実際の使用量は異なる場合があります。 少し時間を取って、プラグイン設定のセット全体を読んでください。 chatbot bot type
設定が重要であり、チャットボットごとに「信頼レベル」が 1 つあります。
RAG モードは優れていますが、API の呼び出しが増えるため、コストが増加する可能性があります。そうは言っても、最終的に「幻覚」を出力する傾向が減少することで、GPT-4 から GPT-3.5 にドロップダウンすることが容易になる可能性があり、出力の有用性と信頼性が大幅に向上したにもかかわらず、最終的に支出が少なくなる可能性があります。 GPT 3.5 は、応答時間に基づいてエージェント タイプにも適しています。 Win-Win の可能性があります!実験!
チャットボットがチャットで機能するには、チャットを有効にする必要があります。
これは主に設定「 chatbot_reply_job_time_delay
」によって制御されますが、この設定についてはユーザーが裁量権を持っています。
この設定の目的は次のとおりです。
現在はデフォルトの「1」秒であり、ゼロに減らすことができるようになりました ?️ が、上記のリスクに注意してください。
このゼロとボットを設定すると、「エージェント」モードであっても、より「機敏」になります。
明らかに、これは少し人工的である可能性があり、実際の人は実際にそれほど速く入力することはありません...ただし、好みと財布のサイズに合わせて設定してください。
注意: Open AI の API の応答速度を直接制御することはできません。一般的なルールとして、設定したモデルが洗練されているほど、この応答は通常遅くなります。したがって、GPT 3.5 は GPT 4 よりもはるかに高速です...ただし、これは新しい GPT 4 Turbo モデルでは変わる可能性があります。
チャットボットがチャットで機能するには、チャットを有効にする必要があります。
現在のボットを使用するには、https://platform.openai.com/ からトークンを取得する必要があります。デフォルトの言語モデル (最も洗練された言語モデルの 1 つ) が設定されていますが、より安価な代替言語モデルを試すこともできます。リストはここにあります。
セットアップには自動化された部分があります。Discourse に追加すると、プラグインは現在、次の属性を持つ AI ボット ユーザーをセットアップします。
名前、アバター、自己紹介 (管理 -> カスタマイズ -> テキストのロケール文字列を参照) は必要に応じて編集できますが、言及しやすくなります。
最初はスタッフも含めて誰もボットにアクセスできません。
初回の無料割り当ての有効期限が切れると、Open AI API の呼び出しは無料ではなくなります。そこで、これを管理し、コストを抑え、乱用を防ぐためにクォータ システムを導入しました。このような小さなインタラクションであればコストはそれほど高くありませんが、人気が高まるとコストがかさむ可能性があります。 OpenAI の価格について詳しくは、価格ページをご覧ください。
ボットと対話するには、低信頼グループ、中信頼グループ、高信頼グループ セットの 3 つのレベルの信頼されたグループ セットのいずれかに追加されたグループに属している必要があります。対応する設定で、信頼できるグループ セットごとに 1 週間あたり許可されるインタラクションのそれぞれの数を変更できます。
グループにもデータを入力する必要があります。その構成は完全にあなた次第です。最初は空白なので、最初は誰もボットにアクセスできません。 3 つの追加設定には、対応するクォータがあります。
ユーザーは、メンバーとなっている最も信頼できるグループに基づいてクォータを取得することに注意してください。
ボットが何を受信するか、またボットがどのように応答するかに影響を与えるロケール テキストの「設定」がいくつかあります。
変更を検討すべき最も重要なものは、ボットのsystem
プロンプトです。これは、ボットに話しかけるたびに送信されます。
基本的なボットの場合は、次のようなシステム プロンプトを試すことができます。
「あなたは極度の F1 ファンで、モータースポーツとその高揚感に関わるすべてのことが大好きです。」
(エージェント ボットの場合、「あなたは役に立つアシスタントです。」以降のすべてを保持する必要があります。そうしないと、エージェントの動作が壊れる可能性があります。問題が発生した場合はリセットしてください。もう一度実験してください。)
フォーラムの主題に最も適したものを試してください。クリエイティブになってください!
これらのロケール文字列を変更すると、ボットの動作が大きく変わる可能性がありますが、その場で変更することはできません。他のプロンプトはエージェントの動作や、誰が何を言ったかに関する情報をボットに提供する上で重要な役割を果たすため、システム プロンプトのみを変更することをお勧めします。
注意: トピックでは、ボットにさらなるコンテキストを与えるために、投稿のウィンドウ (ルックバック設定によって決定) に加えて、最初の投稿とトピック タイトルが送信されます。
これらの文字列は、 chatbot.prompt.
談話チャットボット/config/locales/server.en.yml
262a0a4 の 45 行目
ボットは、プライベート メッセージ (構成されている場合) を含む、チャット メッセージとトピック投稿をサポートします。
ボットに返信するか @ メンションすることで、ボットに応答を促すことができます。応答のコンテキストを取得するためにボットがどこまで後ろを向くかを設定できます。値が大きいほど、各呼び出しのコストが高くなります。
すぐにボットに接続できるフローティング クイック チャット ボタンがあります。これは設定で無効にすることができます。ボットを 1 対 1 のチャットに読み込むか、個人メッセージに読み込むかを選択できます。
好みのアイコン (デフォルト ? ) を選択できるようになりました。空白のままに設定すると、ボット ユーザーのアバターが選択されます。 ?
また、[管理] -> [カスタマイズ] -> [テキストchatbot.
これを削除するために必要な唯一の手順は、 app.yml
から clone ステートメントを削除することです。
ボットが何を応答するかについては責任を負いません。プラグインはベータ段階にあり、問題が発生する可能性があると考えてください。フィードバックにより改善されます。しかし、必ずしもボットが応答するとは限りません。 LLM の長所と短所、LLM ができることとできないこと、およびその制限について理解してください。彼らは説得力のある文章を作成するのが非常に上手ですが、事実が間違っていることもよくあります。
フォーラムに書き込んだ内容は、返信を求められると、最後のいくつかの投稿のボット スキャンの一部として Open AI に転送される可能性があります (明らかに、これは現在のトピックまたはチャット チャネルに限定されます)。ほぼ確実に事前トレーニングされたモデルにデータが組み込まれることはありませんが、分析とログ記録にデータが使用されます。この事実をフォーラムの TOS およびプライバシーに関する声明に必ず追加してください。関連リンク: https://openai.com/policies/terms-of-use、https://openai.com/policies/privacy-policy、https://platform.openai.com/docs/data-usage-policies
Open AI はここで著作権に関する声明を発表しました: https://help.openai.com/en/articles/5008634-will-openai-claim-copyright-over-what-outputs-i-generate-with-the-api