這是一個正在大力開發的個人專案。它可能而且很可能包含錯誤、不完整的程式碼或其他意外問題。因此,該軟體按原樣提供,不提供任何形式的保證。
WilmerAI 反映了單一開發人員的工作及其個人時間和資源的努力;其中的任何觀點、方法等均為他自己的觀點,不應反映其雇主。
WilmerAI 是一個複雜的中間件系統,旨在接收傳入的提示並在將它們傳送到 LLM API 之前對其執行各種任務。這項工作包括利用大型語言模型 (LLM) 對提示進行分類並將其路由到適當的工作流程或處理大型上下文(200,000+ 標記)以產生適合大多數本地模型的更小、更易於管理的提示。
WilmerAI 代表“如果語言模型專業地路由所有推理會怎麼樣?”
由多個法學碩士串聯提供支援的助理:傳入的提示可以路由到“類別”,每個類別都由工作流程提供支援。每個工作流程可以有任意數量的節點,每個節點由不同的 LLM 提供支援。例如,如果你問你的助手“你能用 python 給我寫一個貪吃蛇遊戲嗎?”,這可能會被歸類為“編碼”並進入你的編碼工作流程。這個工作流程的第一個節點可能會要求 Codestral-22b(或 ChatGPT 4o,如果您願意)回答問題。第二個節點可能會要求 Deepseek V2 或 Claude Sonnet 對其進行程式碼審查。下一個節點可能會要求 Codestral 進行最後一次檢查,然後回覆您。無論您的工作流程只是單一模型回應(因為它是您最好的編碼器),還是不同法學碩士的許多節點一起工作以產生回應,選擇權都在您手中。
支援離線維基百科 API :WilmerAI 有一個可以呼叫 OfflineWikipediaTextApi 的節點。這表示您可以有一個類別(例如「FACTUAL」),它會查看傳入的訊息,從中產生查詢,查詢 wikipedia API 中的相關文章,並使用該文章作為 RAG 上下文注入來回應。
連續產生聊天摘要以模擬「記憶」 :「聊天摘要」節點將透過對訊息進行分塊然後匯總並將其保存到檔案中來產生「記憶」。然後,它將獲取這些匯總區塊並產生整個對話的持續、不斷更新的摘要,可以在 LLM 的提示中提取和使用。結果可讓您進行 200k+ 上下文對話,並保持相對追蹤所說內容,即使將 LLM 的提示限制為 5k 上下文或更少。
使用多台計算機並行處理記憶和回應:如果您有 2 台可以運行 LLM 的計算機,您可以指定其中一台作為“響應者”,另一台負責生成記憶/摘要。這個工作流程可以讓您在更新記憶/摘要的同時繼續與您的法學碩士交談,同時仍然使用現有的記憶。這意味著不需要等待摘要更新,即使您分配一個大型且強大的模型來處理該任務,以便您擁有更高品質的記憶。 (請參閱範例使用者convo-role-dual-model
)
DocsSillyTavern
中的多個 LLM 群組聊天:如果您願意,可以使用 Wilmer 在 ST 中進行群組聊天,其中每個角色都是不同的 LLM(作者親自這樣做)。分成兩組。這些範例字元/組是作者使用的較大組的子集。
中介軟體功能: WilmerAI 位於用於與 LLM 通訊的介面(例如 SillyTavern、OpenWebUI,甚至 Python 程式的終端)和為 LLM 提供服務的後端 API 之間。它可以同時處理多個後端 LLM。
一次使用多個 LLM:範例設定:SillyTavern -> WilmerAI -> KoboldCpp 的多個實例。例如,Wilmer 可以連接到 Command-R 35b、Codestral 22b、Gemma-2-27b,並在傳回給使用者的回應中使用所有這些。只要您選擇的 LLM 透過 v1/Completion 或 chat/Completion 端點或 KoboldCpp 的生成端點公開,您就可以使用它。
可自訂的預設:預設儲存在您可以輕鬆自訂的 json 檔案中。幾乎所有 about 預設都可以透過 json 進行管理,包括參數名稱。這意味著您不必等待 Wilmer 更新即可使用新功能。例如,DRY 最近在 KoboldCpp 上發布。如果 Wilmer 的預設 json 中沒有該內容,您應該能夠簡單地添加它並開始使用它。
API 端點:它提供 OpenAI API 相容的chat/Completions
和v1/Completions
端點以透過前端連接,並且可以連接到後端的任一類型。這允許進行複雜的配置,例如作為 v1/Completion API 連接到 Wilmer,然後讓 Wilmer 連接到聊天/Completion、v1/Completion KoboldCpp 同時產生端點。
提示範本:支援v1/Completions
API 端點的提示範本。 WilmerAI 還擁有自己的提示模板,用於透過v1/Completions
從前端連接。該模板可以在“Docs”資料夾中找到,並且可以上傳到 SillyTavern。
請記住,工作流程就其本質而言,可能會根據您的設定方式對 API 端點進行多次呼叫。 WilmerAI 不追蹤代幣使用情況,不透過其 API 報告準確的代幣使用情況,也不提供任何可行的方法來監控代幣使用情況。因此,如果出於成本原因,令牌使用追蹤對您很重要,請務必透過 LLM API 向您提供的任何儀表板追蹤您正在使用的令牌數量,尤其是在您習慣該軟體的早期。
你的LLM直接影響WilmerAI的品質。這是一個法學碩士驅動的項目,其中的流量和輸出幾乎完全取決於所連接的法學碩士及其回應。如果您將 Wilmer 連接到產生較低品質輸出的模型,或者您的預設或提示模板有缺陷,那麼 Wilmer 的整體品質也會低得多。在這方面,它與代理工作流程沒有太大不同。
雖然作者正在盡最大努力做出有用且高品質的東西,但這是一個雄心勃勃的個人項目,必然會遇到問題(特別是因為作者本身並不是Python 開發人員,並且嚴重依賴人工智慧來幫助他實現這一目標)遠的)。不過,他正在慢慢弄清楚。
Wilmer 公開了 OpenAI v1/Completions 和聊天/Completions 端點,使其與大多數前端相容。雖然我主要將其與 SillyTavern 一起使用,但它也可能與 Open-WebUI 一起使用。
要在 SillyTavern 中作為文字完成進行連接,請按照以下步驟操作(以下螢幕截圖來自 SillyTavern):
使用文字補全時,您需要使用 WilmerAI 特定的提示範本格式。可以在Docs/SillyTavern/InstructTemplate
中找到可匯入的 ST 檔案。如果您也想使用上下文模板,那麼它也包含在內。
指令模板如下所示:
[Beg_Sys]You are an intelligent AI Assistant.[Beg_User]SomeOddCodeGuy: Hey there![Beg_Assistant]Wilmer: Hello![Beg_User]SomeOddCodeGuy: This is a test[Beg_Assistant]Wilmer: Nice.
來自愚蠢的酒館:
"input_sequence": "[Beg_User]",
"output_sequence": "[Beg_Assistant]",
"first_output_sequence": "[Beg_Assistant]",
"last_output_sequence": "",
"system_sequence_prefix": "[Beg_Sys]",
"system_sequence_suffix": "",
標籤之間沒有預期的換行符或字元。
請確保上下文範本處於“啟用”狀態(下拉清單上方的複選框)
要在 SillyTavern 中作為聊天完成進行連接,請按照以下步驟操作(以下螢幕截圖來自 SillyTavern):
chatCompleteAddUserAssistant
設為 true。 (我不建議同時將兩者設為 true。要么使用 SillyTavern 的角色名稱,要么使用 Wilmer 的用戶/助理。否則 AI 可能會感到困惑。)對於任一連接類型,我建議前往SillyTavern 中的“A”圖標,並在指示模式下選擇“包含名稱”和“強制群組和角色”,然後轉到最左側的圖標(採樣器所在的位置)並選取“左上角的“stream”,然後右上角檢查上下文下的“解鎖”並將其拖曳到 200,000+。讓威爾默擔心上下文吧。
Wilmer 目前沒有使用者介面;一切都透過位於「Public」資料夾中的 JSON 設定檔進行控制。該資料夾包含所有必要的配置。更新或下載 WilmerAI 的新副本時,您只需將「公共」資料夾複製到新安裝即可保留您的設定。
本節將引導您完成 Wilmer 的設定。我已將這些部分分成步驟;我可能建議將每個步驟一一複製到法學碩士中,並要求它幫助您設定該部分。這可能會讓事情變得容易得多。
重要注意事項
關於 Wilmer 設置,需要注意三件事,這一點很重要。
A) 預設檔是 100% 可自訂的。該文件中的內容將傳送至 llm API。這是因為雲端 API 不處理本地 LLM API 處理的各種預設中的某些內容。因此,如果您使用 OpenAI API 或其他雲端服務,並且使用常規本機 AI 預設之一,則呼叫可能會失敗。請參閱預設的“OpenAI-API”,以了解 openAI 接受的範例。
B) 我最近替換了 Wilmer 中的所有提示,從使用第二人稱變為第三人稱。這對我來說已經取得了相當不錯的結果,我希望對你來說也是如此。
C) 預設情況下,所有使用者檔案都設定為開啟串流響應。您要么需要在調用 Wilmer 的前端中啟用此功能,以便兩者匹配,要么需要進入 Users/username.json 並將 Stream 設定為「false」。如果出現不匹配,即前端期望/不期望流式傳輸,而您的 wilmer 期望相反,則前端可能不會顯示任何內容。
安裝 Wilmer 非常簡單。確保你已經安裝了Python;作者一直在Python 3.10和3.12上使用該程序,並且都運作良好。
選項 1:使用提供的腳本
為方便起見,Wilmer 包含一個適用於 Windows 的 BAT 檔案和適用於 macOS 的 .sh 檔案。這些腳本將創建一個虛擬環境,從requirements.txt
安裝所需的軟體包,然後執行 Wilmer。您每次都可以使用這些腳本來啟動 Wilmer。
.bat
檔。.sh
檔案。重要資訊:切勿在未先檢查的情況下執行 BAT 或 SH 文件,因為這可能有風險。如果您不確定此類文件的安全性,請在記事本/文字編輯中開啟它,複製內容,然後要求您的法學碩士檢查是否存在任何潛在問題。
選項 2:手動安裝
或者,您可以手動安裝依賴項並按照以下步驟執行 Wilmer:
安裝所需的軟體包:
pip install -r requirements.txt
啟動程序:
python server.py
提供的腳本旨在透過設定虛擬環境來簡化流程。但是,如果您喜歡手動安裝,則可以安全地忽略它們。
注意:當執行 bat 檔案、sh 檔案或 python 檔案時,所有三個檔案現在都接受以下可選參數:
因此,例如,考慮以下可能的運行:
bash run_macos.sh
(將使用 _current-user.json 中指定的用戶,「Public」中的配置,「logs」中的日誌)bash run_macos.sh --User "single-model-assistant"
(設定預設為 public,日誌預設為「log」)bash run_macos.sh --ConfigDirectory "/users/socg/Public/configs" --User "single-model-assistant"
(僅使用「logs」的預設值bash run_macos.sh --ConfigDirectory "/users/socg/Public/configs" --User "single-model-assistant" --LoggingDirectory "/users/socg/wilmerlogs"
這些可選參數允許使用者啟動 WilmerAI 的多個實例,每個實例使用不同的使用者配置文件,登入不同的位置,並在需要時在不同的位置指定配置。
在 Public/Configs 中,您將找到一系列包含 json 檔案的資料夾。您最感興趣的兩個是Endpoints
資料夾和Users
資料夾。
注意: assistant-single-model
、 assistant-multi-model
和group-chat-example
用戶的 Factual 工作流程節點將嘗試利用 OfflineWikipediaTextApi 專案將完整的維基百科文章拉至 RAG。如果您沒有此 API,工作流程應該不會有任何問題,但我個人使用此 API 來幫助改善我得到的事實回應。您可以在您選擇的使用者 json 中指定 API 的 IP 位址。
首先,選擇您要使用的範本使用者:
Assistant-single-model :此範本適用於在所有節點上使用的單一小模型。它還具有許多不同類別類型的路由,並為每個節點使用適當的預設。如果您想知道為什麼只有 1 個模型時會有不同類別的路線:這樣您就可以為每個類別提供自己的預設,並且還可以為它們制定自訂工作流程。也許您希望編碼器進行多次迭代來檢查自身,或者透過多個步驟進行推理來思考問題。
Assistant-multi-model :此範本用於串聯使用多個模型。查看該使用者的端點,您可以看到每個類別都有自己的端點。絕對沒有什麼可以阻止您為多個類別重複使用相同的 API。例如,您可以使用 Llama 3.1 70b 進行編碼、數學和推理,使用 Command-R 35b 08-2024 進行分類、對話和事實分析。不要覺得您需要 10 個不同的模型。這只是為了讓您可以根據需要攜帶那麼多。此使用者對工作流程中的每個節點使用適當的預設。
convo-roleplay-single-model :此使用者使用具有自訂工作流程的單一模型,該模型適合對話,並且應該適合角色扮演(等待回饋以根據需要進行調整)。這會繞過所有路由。
convo-roleplay-dual-model :此使用者使用兩個具有自訂工作流程的模型,該工作流程適合對話,並且應該適合角色扮演(等待回饋以根據需要進行調整)。這會繞過所有路由。注意:如果您有 2 台可以運行 LLM 的計算機,則此工作流程效果最佳。根據該使用者的目前設置,當您向 Wilmer 發送訊息時,回應者模型(計算機 1)將回覆您。然後工作流程將在此時套用「工作流程鎖」。然後,記憶/聊天摘要模型(計算機 2)將開始更新迄今為止對話的記憶和摘要,並將其傳遞給回應者以幫助其記住內容。如果您在寫入記憶體時發送另一個提示,回應者(電腦 1)將取得存在的任何摘要並繼續回應您。工作流程鎖定將阻止您重新進入新的記憶部分。這意味著您可以在寫入新記憶的同時繼續與回應者模型對話。這是一個巨大的性能提升。我已經嘗試過,對我來說,回應時間非常驚人。如果沒有這個,我會在 30 秒內得到 3-5 次回复,然後突然需要等待 2 分鐘才能產生記憶。這樣,在我的 Mac Studio 上的 Llama 3.1 70b 上,每個訊息每次都是 30 秒。
group-chat-example :該用戶是我自己的個人群組聊天的範例。所包含的角色和組是我使用的實際角色和實際組。您可以在Docs/SillyTavern
資料夾中找到範例字元。這些是 SillyTavern 相容字符,您可以將它們直接匯入到該程式或任何支援 .png 字元匯入類型的程式中。開發團隊角色每個工作流程只有 1 個節點:他們只是對您做出回應。諮詢組角色每個工作流程有 2 個節點:第一個節點產生回應,第二個節點強制角色的「角色」(負責此的端點是businessgroup-speaker
端點)。即使您只使用一種模型,群組聊天角色也能大大改變您得到的回應。然而,我的目標是為每個角色使用不同的模型(但在組之間重複使用模型;因此,例如,我在每個組中都有一個 Llama 3.1 70b 模型角色)。
選擇要使用的使用者後,需要執行幾個步驟:
在 Public/Configs/Endpoints 下更新使用者的端點。範例字元被分類到每個資料夾。使用者的端點資料夾在其 user.json 檔案的底部指定。您需要為您正在使用的法學碩士正確填寫每個端點。您可以在_example-endpoints
資料夾下找到一些範例端點。
您需要設定當前使用者。您可以在執行 bat/sh/py 檔案時使用 --User 參數執行此操作,也可以在 Public/Configs/Users/_current-user.json 中執行此操作。只需將用戶名設定為當前用戶並儲存即可。
您需要打開用戶 json 檔案並查看選項。您可以在此處設定是否想要串流傳輸,可以將IP 位址設定為您的離線wiki API(如果您正在使用它),指定您希望在DiscussionId 串流期間將您的回憶/摘要檔案移至何處,也可以指定您的位置。
就是這樣!運行 Wilmer,連接到它,你就可以開始了。
首先,我們將設定端點和模型。在 Public/Configs 資料夾中,您應該會看到以下子資料夾。讓我們來看看您需要什麼。
這些設定檔代表您連接到的 LLM API 端點。例如,以下 JSON 檔案SmallModelEndpoint.json
定義了一個端點:
{
"modelNameForDisplayOnly" : " Small model for all tasks " ,
"endpoint" : " http://127.0.0.1:5000 " ,
"apiTypeConfigFileName" : " KoboldCpp " ,
"maxContextTokenSize" : 8192 ,
"modelNameToSendToAPI" : " " ,
"promptTemplate" : " chatml " ,
"addGenerationPrompt" : true
}
這些設定檔代表您在使用 Wilmer 時可能遇到的不同 API 類型。
{
"nameForDisplayOnly" : " KoboldCpp Example " ,
"type" : " koboldCppGenerate " ,
"presetType" : " KoboldCpp " ,
"truncateLengthPropertyName" : " max_context_length " ,
"maxNewTokensPropertyName" : " max_length " ,
"streamPropertyName" : " stream "
}
這些文件指定模型的提示範本。考慮以下範例llama3.json
:
{
"promptTemplateAssistantPrefix" : " <|start_header_id|>assistant<|end_header_id|> nn " ,
"promptTemplateAssistantSuffix" : " <|eot_id|> " ,
"promptTemplateEndToken" : " " ,
"promptTemplateSystemPrefix" : " <|start_header_id|>system<|end_header_id|> nn " ,
"promptTemplateSystemSuffix" : " <|eot_id|> " ,
"promptTemplateUserPrefix" : " <|start_header_id|>user<|end_header_id|> nn " ,
"promptTemplateUserSuffix" : " <|eot_id|> "
}
這些範本適用於所有 v1/Completion 端點呼叫。如果您不想使用模板,可以使用名為_chatonly.json
的文件,它只使用換行符號來分解訊息。
創建和激活用戶涉及四個主要步驟。請按照以下說明設定新用戶。
首先,在Users
資料夾中,為新使用者建立一個 JSON 檔案。最簡單的方法是複製現有的使用者 JSON 文件,將其貼上為副本,然後重新命名。以下是使用者 JSON 檔案的範例:
{
"port" : 5006 ,
"stream" : true ,
"customWorkflowOverride" : false ,
"customWorkflow" : " CodingWorkflow-LargeModel-Centric " ,
"routingConfig" : " assistantSingleModelCategoriesConfig " ,
"categorizationWorkflow" : " CustomCategorizationWorkflow " ,
"defaultParallelProcessWorkflow" : " SlowButQualityRagParallelProcessor " ,
"fileMemoryToolWorkflow" : " MemoryFileToolWorkflow " ,
"chatSummaryToolWorkflow" : " GetChatSummaryToolWorkflow " ,
"conversationMemoryToolWorkflow" : " CustomConversationMemoryToolWorkflow " ,
"recentMemoryToolWorkflow" : " RecentMemoryToolWorkflow " ,
"discussionIdMemoryFileWorkflowSettings" : " _DiscussionId-MemoryFile-Workflow-Settings " ,
"discussionDirectory" : " D: \ Temp " ,
"sqlLiteDirectory" : " D: \ Temp " ,
"chatPromptTemplateName" : " _chatonly " ,
"verboseLogging" : true ,
"chatCompleteAddUserAssistant" : true ,
"chatCompletionAddMissingAssistantGenerator" : true ,
"useOfflineWikiApi" : true ,
"offlineWikiApiHost" : " 127.0.0.1 " ,
"offlineWikiApiPort" : 5728 ,
"endpointConfigsSubDirectory" : " assistant-single-model " ,
"useFileLogging" : false
}
0.0.0.0
上,如果在另一台電腦上運行,則它在您的網路上可見。支援在不同連接埠上執行 Wilmer 的多個實例。true
時,路由器被停用,所有提示僅轉到指定的工作流程,使其成為 Wilmer 的單一工作流程實例。customWorkflowOverride
為true
時要使用的自訂工作流程。Routing
資料夾中的路由設定檔的名稱,不含.json
副檔名。DiscussionId
時崩潰。chatCompleteAddUserAssistant
為true
時才使用此選項。DataFinder
字元。接下來,更新_current-user.json
檔案以指定要使用的使用者。符合新使用者 JSON 檔案的名稱,不帶.json
副檔名。
注意:如果您想在執行 Wilmer 時使用 --User 參數,則可以忽略此選項。
在Routing
資料夾中建立路由 JSON 檔案。該檔案可以任意命名。使用此名稱更新使用者 JSON 檔案中的routingConfig
屬性,減去.json
副檔名。這是路由設定檔的範例:
{
"CODING" : {
"description" : " Any request which requires a code snippet as a response " ,
"workflow" : " CodingWorkflow "
},
"FACTUAL" : {
"description" : " Requests that require factual information or data " ,
"workflow" : " ConversationalWorkflow "
},
"CONVERSATIONAL" : {
"description" : " Casual conversation or non-specific inquiries " ,
"workflow" : " FactualWorkflow "
}
}
.json
副檔名,如果選擇類別,則會觸發。 在Workflow
資料夾中,建立一個與Users
資料夾中的使用者名稱相符的新資料夾。最快的方法是複製現有使用者的資料夾,複製並重新命名。
如果您選擇不進行其他更改,則需要完成工作流程並更新端點以指向所需的端點。如果您使用的是 Wilmer 新增的範例工作流程,那麼您在這裡應該已經沒問題了。
在“公共”資料夾中,您應該有:
此專案中的工作流程在使用者的特定工作流程資料夾內的Public/Workflows
夾中進行修改和控制。例如,如果您的使用者名稱為socg
,並且您的Users
資料夾中有一個socg.json
文件,那麼在工作流程中您應該有一個Workflows/socg
資料夾。
以下是工作流程 JSON 的範例:
[
{
"title" : " Coding Agent " ,
"agentName" : " Coder Agent One " ,
"systemPrompt" : " You are an exceptionally powerful and intelligent technical AI that is currently in a role play with a user in an online chat. n The instructions for the roleplay can be found below: n [ n {chat_system_prompt} n ] n Please continue the conversation below. Please be a good team player. This means working together towards a common goal, and does not always include being overly polite or agreeable. Disagreement when the other user is wrong can help foster growth in everyone, so please always speak your mind and critically review your peers. Failure to correct someone who is wrong could result in the team's work being a failure. " ,
"prompt" : " " ,
"lastMessagesToSendInsteadOfPrompt" : 6 ,
"endpointName" : " SocgMacStudioPort5002 " ,
"preset" : " Coding " ,
"maxResponseSizeInTokens" : 500 ,
"addUserTurnTemplate" : false
},
{
"title" : " Reviewing Agent " ,
"agentName" : " Code Review Agent Two " ,
"systemPrompt" : " You are an exceptionally powerful and intelligent technical AI that is currently in a role play with a user in an online chat. " ,
"prompt" : " You are in an online conversation with a user. The last five messages can be found here: n [ n {chat_user_prompt_last_five} n ] n You have already considered this request quietly to yourself within your own inner thoughts, and come up with a possible answer. The answer can be found here: n [ n {agent1Output} n ] n Please critically review the response, reconsidering your initial choices, and ensure that it is accurate, complete, and fulfills all requirements of the user's request. nn Once you have finished reconsidering your answer, please respond to the user with the correct and complete answer. nn IMPORTANT: Do not mention your inner thoughts or make any mention of reviewing a solution. The user cannot see the answer above, and any mention of it would confuse the user. Respond to the user with a complete answer as if it were the first time you were answering it. " ,
"endpointName" : " SocgMacStudioPort5002 " ,
"preset" : " Coding " ,
"maxResponseSizeInTokens" : 1000 ,
"addUserTurnTemplate" : true
}
]
上述工作流程由對話節點組成。兩個節點都做一件簡單的事:向端點指定的 LLM 傳送訊息。
title
類似。將這些以“One”、“Two”等結尾的名稱命名有助於追蹤代理輸出。第一個節點的輸出儲存到{agent1Output}
,第二個節點的輸出儲存到{agent2Output}
,依此類推。Endpoints
資料夾中的 JSON 檔案名稱匹配,不帶.json
副檔名。Presets
資料夾中的 JSON 檔案名稱匹配,不帶.json
副檔名。false
(請參閱上面的第一個範例節點)。如果您傳送提示,請將其設為true
(請參閱上面的第二個範例節點)。 NOTE: The addDiscussionIdTimestampsForLLM feature was an experiment, and truthfully I am not happy with how the experiment went. Even the largest LLMs misread the timestamps, got confused by them, etc. I have other plans for this feature which should be far more useful, but I left it in and won't be removing it, even though I don't necessarily recommend using it. -Socg
您可以在這些提示中使用幾個變數。這些將在運行時得到適當替換:
{chat_user_prompt_last_one}
:對話中的最後一則訊息,沒有提示範本標籤包裝訊息。{templated_user_prompt_last_one}
:對話中的最後一則訊息,包裹在適當的使用者/助手提示範本標籤中。{chat_system_prompt}
:從前端發送的系統提示。通常包含字元卡和其他重要資訊。{templated_system_prompt}
:從前端的系統提示,包裹在適當的系統提示範本標籤中。{agent#Output}
: #
被您想要的數字取代。每個節點都會產生代理輸出。第一個節點總是為1,每個後續節點的增量為{agent2Output}
{agent1Output}
{category_colon_descriptions}
:從Routing
JSON檔案中取下類別和描述。{categoriesSeparatedByOr}
:拉動類別名稱,由「或」隔開。[TextChunk]
:平行處理器獨有的特殊變量,可能不常使用。注意:要更深入了解記憶的工作方式,請參閱《理解回憶》部分
該節點將刪除n個記憶次數(或如果不存在討論,則最新消息),並在它們之間添加自訂定界符。因此,如果您有一個帶有3個記憶體的記憶體文件,然後選擇「 n ------------ n」的定界符,則可能會得到以下內容:
This is the first memory
---------
This is the second memory
---------
This is the third memory
將此節點與聊天摘要結合在一起,可以使LLM不僅可以收到整個對話的摘要分解,還可以收到摘要所建立的所有記憶的列表,其中可能包含有關它的更多詳細資訊。將這兩種內容與最後15-20條訊息一起發送在一起,可以使整個聊天的連續和持久記憶的印像到最新消息。特殊護理為產生記憶的良好提示可以幫助確保捕捉您所關心的細節,而忽略相關細節的細節。
該節點不會產生新的記憶。因此,如果您在多電腦設定上使用了工作流程鎖,則可以尊重工作流程鎖。目前,產生記憶的最佳方法是FullChatsummary節點。