
迅速建立和協調多代理團隊的低代碼工具

警告
該項目目前處於重大發展。請注意,可能會發生重大變化。
您是否聽說過這句話:“兩個思想比一個人好”?對於代理商也是如此。部落利用Langgraph框架可以讓您輕鬆自定義和協調代理團隊。通過在不同事物擅長的代理商中分配艱鉅的任務,每個人都可以專注於最擅長的事情。這使得解決問題更快,更好。
通過合作,代理可以承擔更複雜的任務。以下是他們可以一起做什麼的一些例子:
還有更多!
部署之前,請確保至少更改以下值:
SECRET_KEYFIRST_SUPERUSER_PASSWORDPOSTGRES_PASSWORD您可以(並且應該)將它們作為環境變量傳遞給秘密。
.env文件中的某些環境變量具有changethis的默認值。
您必須使用秘密鍵更改它們,以生成秘密鍵,您可以運行以下命令:
python -c " import secrets; print(secrets.token_urlsafe(32)) "複製內容並將其用作密碼 /秘密密鑰。並再次運行以生成另一個安全密鑰。
在您的本地機器上起床並在幾分鐘內開始。
在您的遠程服務器上部署部落。
在連續工作流程中,您的代理人以有序的順序排列並接一個地執行任務。每個任務都可以取決於上一個任務。如果您想以確定性的順序完成任務,這將很有用。
如果以下方式使用此此事:
在層次結構工作流程中,您的代理人被組織成一個像“團隊負責人”,“團隊成員”甚至其他“團隊領導者”組成的團隊式結構。團隊負責人將任務分解為較小的任務,並將其委派給其團隊成員。團隊成員完成這些任務後,他們的響應將傳遞給團隊負責人,然後選擇將響應歸還給用戶或委派更多任務。
如果以下方式使用此此事:
技能是您可以為代理商配備與世界互動的能力。例如,您可以為您的代理提供檢查當前天氣狀況的技能,或搜索網絡以獲取最新消息。默認情況下,部落提供三種技能:
您可能想創建自定義技能,可以通過兩種方式完成:通過將功能定義用於簡單的HTTP請求或在代碼庫中編寫自定義技能。
如果您的技能涉及執行HTTP請求以獲取或更新數據,則使用技能定義是最簡單的方法。在部落中,首先要導航到“技能”標籤,然後單擊“添加技能”按鈕。然後,您將提示您提供技能定義,該定義指示您的代理商如何執行特定技能。該定義應如下:
{
"url" : " https://example.com " ,
"method" : " GET " ,
"headers" : {},
"type" : " function " ,
"function" : {
"name" : " Your skill name " ,
"description" : " Your skill description " ,
"parameters" : {
"type" : " object " ,
"properties" : {
"param1" : {
"type" : " integer " ,
"description" : " Description of the first parameter "
},
"param2" : {
"type" : " string " ,
"enum" : [ " option1 " ],
"description" : " Description of the second parameter "
}
},
"required" : [ " param1 " , " param2 " ]
}
}
}| 鑰匙 | 描述 |
|---|---|
url | API調用的端點URL。 |
method | 用於請求的HTTP方法。它可以GET , POST , PUT , PATCH或DELETE 。 |
headers | 任何HTTP標頭要包含在請求中。 |
function | 包含有關該技能的詳細信息: |
function > name | 技能的名稱。遵循以下規則:僅允許字母(AZ,AZ),數字(0-9),下劃線(_)和連字符( - );必須長1到64個字符。 |
function > description | 描述了通知代理商使用的技能。 |
function > parameters | 有關API接受的參數的詳細信息。 |
properties > param | 查詢或身體參數的名稱。對於GET方法,這將是一個查詢參數。對於POST , PUT , PATCH和DELETE ,它將在請求主體中。 |
param > type | 指定參數的類型,可以是string , number , integer或boolean 。 |
param > description | 提供有關參數目的的上下文。 |
param > enum | 可選地,包括一個數組來限制代理以從預定義值中選擇。 |
parameters > required | 列出所需的參數,以確保它們始終包含在API請求中。 |
對於更複雜的任務,超出了簡單的HTTP請求,Langchain使您可以開發更高級的工具。您可以將這些工具添加到managed_skills字典中,將這些工具集成到部落中。有關實際示例,請參閱演示計算器工具。要了解如何創建Langchain工具,請諮詢他們的文檔。
創建新工具後,重新啟動應用程序,以確保將工具正確加載到數據庫中。同樣,如果您需要刪除工具,只需將其從managed_skills字典中刪除,然後重新啟動應用程序,以確保將其從數據庫中刪除。請注意,創建的工具可供您應用程序中的所有用戶使用。
抹布是一種通過其他數據來增強代理商知識的技術。代理商可以推斷出廣泛的主題,但是他們的知識僅限於公共數據,直到他們接受培訓的時間點。如果您希望代理商對私人數據進行推論,則Tribe允許您上傳數據並選擇要在代理商的知識庫中包含的數據。這使您的代理商能夠使用所選數據進行推理,並允許您創建具有專業知識的不同代理。
默認情況下,Tribe使用BAAI/bge-small-en-v1.5 ,這是一種輕巧且快速的英語嵌入模型,比OpenAI Ada-002更好。如果您的文檔是多語言或需要嵌入圖像,則可能需要使用另一個嵌入模型。您可以通過更改.env文件中的DENSE_EMBEDDING_MODEL來輕鬆執行此操作:
# See the list of supported models: https://qdrant.github.io/fastembed/examples/Supported_Models/
DENSE_EMBEDDING_MODEL=BAAI/bge-small-en-v1.5 # Change this 警告
如果您現有的新嵌入模型具有不同的矢量尺寸,則可能需要重新創建QDRANT集合。您可以通過http://qdrant.localhost/dashboard刪除QDRANT儀表板的集合。因此,最好提前計劃哪種嵌入模型最適合您的工作流程。
開源模型變得更便宜,更容易運行,有些甚至與封閉模型的性能相匹配。您可能更喜歡將它們用於其隱私和成本收益。如果您在本地運行部落並想使用開源模型,我建議Ollama易於使用。
ollama 。llama3.1:8b )粘貼到模型輸入字段中。http://host.docker.internal:11434上運行,該映射到https://localhost:11434 。這種設置使部落能夠與默認的Ollama主機進行通信。如果您的設置使用其他主機,請在“基本URL”輸入字段中指定新主機。 Ollama庫中有數百種開源模型,適用於不同的任務。這是為您的用例選擇合適的方法:
Llama3.1 , Mistral Nemo , Firefunction V2或Command-R +等模型以及支持工具調用的其他模型。gemma2或phi3之類的模型。 如果您不打算使用Ollama,則仍然可以運行與OpenAI聊天完成API兼容的開源模型。
步驟:
使用您在安裝步驟中設置的電子郵件和密碼登錄部落。

導航到“團隊”頁面,然後單擊“添加團隊”。輸入團隊的名稱,然後單擊“保存”。

通過拖動團隊負責人節點的句柄來創建另外兩個團隊成員。

如圖所示,更新第一隊成員。

如圖所示,更新第二個團隊成員。

轉到“聊天”選項卡,然後向您的團隊發送一個問題,以了解他們的反應。

恭喜!您已經成功地與部落上的第一個多代理團隊進行了建立和溝通。
您的團隊成員可以通過為其提供一組技能來做更多的事情。為您的美食家增添技能。

現在,當您向美食家問一個問題時,它將搜索網絡以獲取更多最新信息!

創建一個新團隊,然後選擇“順序”工作流程。

拖放以在“ worker0”下方創建另一個團隊成員。

如圖所示,更新第一隊成員。向該團隊成員提供“ Wikipedia”技能。

如圖所示,更新第二個團隊成員。

轉到“聊天”選項卡,然後向您的團隊發送一個問題,以了解他們的反應。請注意,研究人員將使用Wikipedia進行研究。非常酷!

您可以要求團隊成員在執行技能之前等待您的批准。在研究人員中添加“ DuckDuckgo-Search”技能並選擇“需要批准”。

現在,在研究人員執行技能之前,它將要求您批准。如果研究人員的搜索不是您想要的,請拒絕操作,並包含一個可選的消息以提供方向。

研究人員調整搜索以滿足您的要求後,您可以批准該措施。 
然後,研究人員將按照指示執行其技能。 
部落是開源的,並受到社區的歡迎!查看我們的貢獻指南以開始。
一些貢獻方法:
檢查文件Release-notes.md。
部落是根據MIT許可條款獲得許可的。