chatbot_support_vision
)*需要註冊外部(非附屬)API 服務。設定中的連結。
有兩種模式:
RAG 模式非常聰明,知道論壇上發布的事實。
基本機器人模式有時會出錯,但運行成本較低,因為它對大型語言模型的呼叫較少:
該機器人可以在您論壇的公共空間中使用。為了使機器人特別有用,有 RAG 模式(每個機器人信任等級一個設定)。預設未設定此值。
在 RAG 模式下,預設情況下,透過設定chatbot embeddings strategy
(預設benchmark_user
)對信任等級 1 使用者將看到的所有內容保密來控制機器人。因此,如果在面向公眾的主題中進行交互,如果您傾向於透過類別權限將內容控制在信任級別 0 或 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]
由於未知原因,目前將運行兩次(抱歉!請隨意 PR),但[1]
確保第二次它只會添加缺失的嵌入(即第一次運行後不會立即添加),因此有點沒有實際意義。
萬一您受到 OpenAI 的速率限制(不太可能!),您可以透過執行以下操作來完成嵌入:
rake chatbot:refresh_embeddings[1,1]
這將填補缺少的部分(因此錯誤不會造成任何損失),但會繼續更加謹慎地在每次調用 Open AI 之間設定 1 秒的延遲。
與機器人互動相比,嵌入的創建成本並不高,但無論如何請在 Open AI 儀表板上觀察您的使用情況。
注意:嵌入僅為帖子創建,並且僅為信任一級用戶有權訪問的帖子創建。這似乎是一個合理的妥協。它不會為來自信任等級 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:
大約 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
設定是關鍵,每個聊天機器人都有一個「信任等級」:
RAG 模式更優越,但會增加對 API 的調用,可能會增加成本。也就是說,它最終輸出「幻覺」的傾向的降低可能會幫助您從 GPT-4 下降到 GPT-3.5,並且儘管輸出的實用性和可靠性顯著增加,但您最終可能會減少支出。從回應時間來看,GPT 3.5 也更適合代理類型。潛在的雙贏!實驗!
要讓聊天機器人在聊天中工作,您必須啟用聊天。
這主要由一個設定控制: chatbot_reply_job_time_delay
,您可以自行決定。
進行此設定的目的是:
現在預設為「1」秒,現在可以減少到零?
將這個值設為零,即使在「代理」模式下,機器人也會變得更加「敏捷」。
顯然,這可能有點人為,沒有人會真正打字那麼快……但請根據您的品味和錢包大小進行設定。
注意:我無法直接控制 Open AI API 的回應速度 - 一般規則是您設定的模型越複雜,回應通常越慢。因此,GPT 3.5 比 GPT 4 快得多……儘管這可能會隨著較新的 GPT 4 Turbo 型號而改變。
要讓聊天機器人在聊天中工作,您必須啟用聊天。
您必須從 https://platform.openai.com/ 取得令牌才能使用目前的機器人。設定了預設語言模型(最複雜的語言模型之一),但您可以嘗試更便宜的替代方案,清單在這裡
設定有一個自動化部分:在新增到 Discourse 後,該插件目前會設定具有以下屬性的 AI 機器人用戶
您可以根據需要編輯姓名、頭像和簡介(請參閱管理 -> 自訂 -> 文字中的區域設定字串),但要使其易於提及。
最初,沒有人可以訪問該機器人,甚至員工也無法訪問。
初始免費分配到期後,呼叫 Open AI API 並非免費!因此,我實施了配額制度來控制這種情況,降低成本並防止濫用。這些小互動的成本並不瘋狂,但如果它變得流行起來,成本可能會增加。您可以在 OpenAI 的定價頁面上了解有關 OpenAI 定價的更多資訊。
為了與機器人交互,您必須屬於已新增至三個層級的可信任群組集(低、中和高信任群組集)之一的群組。您可以在對應的設定中修改每個受信任群組集每週允許的互動次數。
您還必須填充這些組。該配置完全取決於您。它們一開始是空白的,因此最初沒有人可以訪問該機器人。三個附加設定中都有相應的配額。
請注意,使用者根據其所屬的最高受信任群組取得配額。
有幾個區域設定文字「設定」會影響機器人接收的內容以及機器人的回應方式。
您應該考慮更改的最重要的一項是機器人的system
提示。每次您與機器人交談時都會發送此訊息。
對於基本機器人,您可以嘗試以下系統提示:
“你是一級方程式賽車的狂熱粉絲,你喜歡與賽車運動有關的一切及其高辛烷值的刺激”,而不是默認的。
(對於代理機器人,您必須保留“您是一個有用的助手”之後的所有內容,否則您可能會破壞代理行為。如果您遇到問題,請重置它。再次實驗!)
嘗試選擇最適合您論壇主題的一種。有創意!
更改這些區域設定字串可能會使機器人的行為截然不同,但無法即時修改。我建議僅更改系統提示符,因為其他提示符在代理行為或提供有關誰對機器人說了些什麼的信息中發揮著重要作用。
注意:在主題中,除了貼文視窗(由回溯設定確定)之外,還會發送第一個貼文和主題標題,以便為機器人提供更多上下文。
您可以在chatbot.prompt.
discourse-chatbot/config/locales/server.en.yml
262a0a4 中的第 45 行
該機器人支援聊天訊息和主題帖子,包括私人訊息(如果配置)。
您可以透過回覆或 @ 提及來提示機器人做出回應。您可以設定機器人向後看多遠以獲得回應的上下文。數值越大,每次呼叫的成本就越高。
有一個浮動的快速聊天按鈕,可以立即將您連接到機器人。可以在設定中停用此功能。您可以選擇是否將機器人載入到一對一聊天或個人訊息中。
現在您可以選擇您喜歡的圖標(預設?),或者如果設定留空,將拾取機器人用戶的頭像! ?
請記住,您還可以透過使用「管理」->「自訂」->「文字」 chatbot.
刪除它所需的唯一步驟是從app.yml
中刪除克隆語句。
我對機器人的回應不承擔任何責任。考慮到該插件處於測試階段,事情可能會出錯。它將隨著反饋而改進。但不一定是機器人的反應?請了解法學碩士的優點和缺點,以及它們能做什麼、不能做什麼以及它們的限制。他們非常擅長創造令人信服的文字,但往往可能是錯的。
一旦提示回覆(顯然這僅限於當前主題或聊天頻道),您在論壇上寫的任何內容都可能會被轉發到 Open AI,作為機器人掃描最後幾篇貼文的一部分。雖然它幾乎肯定不會被納入他們的預訓練模型中,但他們將在分析和日誌記錄中使用這些資料。請務必將此事實添加到論壇的服務條款和隱私權聲明中。相關連結: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