
迅速建立和协调多代理团队的低代码工具

警告
该项目目前处于重大发展。请注意,可能会发生重大变化。
您是否听说过这句话:“两个思想比一个人好”?对于代理商也是如此。部落利用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许可条款获得许可的。