<SOURCE_TEXT>
<p align="center">
<img src="https://yellow-cdn.veclightyear.com/2b54e442/20dc62f0-af42-482a-aa3d-4ddee0ea7aa9.png" alt="OpenAI Assistant Swarm Manager banner">
</p>
<p align="center">
<b>OpenAI 助理群管理器:一个将您的 OpenAI 助理变成军队的库</b>。
</p>
<p align="center">
<a href="https://discord.gg/6UyHPeGZAC" target="_blank">
<img src="https://yellow-cdn.veclightyear.com/2b54e442/157a376e-ee45-4694-ae58-6359da5739f5.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAH1UExURQAAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////r6+ubn5+7u7/3+/v39/enq6urq6/v7+97f39rb26eoqT1BQ0pOT4+Rkuzs7cnKykZKS0NHSHl8fdzd3ejo6UxPUUBDRdzc3RwgIh8jJSAkJm5xcvHx8aanqB4iJFBTVezt7V5hYlJVVuLj43p9fiImKCMnKZKUlaaoqSElJ21wcfT09O3u7uvr6zE0Nr6/wCUpK5qcnf7+/nh7fEdKTHx+f0tPUOTl5aipqiouMGtubz5CRDQ4OsTGxufn515hY7a3uH1/gXBydIOFhlVYWvX29qaoqCQoKs7Pz/Pz87/AwUtOUNfY2dHR0mhrbOvr7E5RUy8zNXR2d/f39+Xl5UZJSx0hIzQ3Odra2/z8/GlsbaGjpERHSezs7L/BwScrLTQ4Odna2zM3Obm7u3x/gKSmp9jZ2T1AQu/v71pdXkVISr2+vygsLiInKTg7PaOlpisvMcXGxzk8PldaXPLy8u7u7rm6u7S1tsDBwvj4+MPExbe4ueXm5s/Q0Kyf7ewAAAAodFJOUwAABClsrNjx/QM2l9/7lhmI6jTB/kA1GgKJN+nea6vy/MLZQYeVKK3rVA5tAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+cKBAAmMZBHjXIAAAISSURBVDjLY2CAAkYmZhZWNnYODnY2VhZmJkYGVMDIycXNw6sBBbw8fFycyEoYGfkFBDVQgKAAPyMjQl5IWEQDDYgIC8FUMDKKsmlgAWyiEBWMjGJY5YEqxMAqGMWFNXAAYXGgAkYJSQ2cQFKCkYFRShq3AmkpRgYJbghbU0tbB0Tr6ukbgGhDI10gySfBwCwDUWBsYmpmDqQtLK2sbTQ0bO3sHYA8GWYGWWj4WTs6Obu4ami4OTm7exhqeHp5+4DCVJZBDmqdr7ufn3+ArkZgkJ+fU3CIRmgYWFiOARYGvo5OQUHhEUAFTkF+kVHRsLBgkIeyYmLjwoOc4hMSk5JTnINS06DC8gwcEEZ6RqZGlpOfc3ZObl5+gZ+TR2ERWFyBQQFMF5eklmqUpQb5+ReU61ZUOvkFVVXXQBSAraitq29o1GiKcfLzc29u0mjxBzq0tQ0kww5xZHtHUGeXhkZhdxBYgZ4d0LI6c4gjwd7siQQraOp1AivQ6CuAKZCDBBRQQQNQgUb/BGf3cqCCiZOcnCe3QQIKHNRTpk6bDgpZjRkzg3pBQTBrdtCcuZCgluAD0vPmL1gIdvSixUuWgqNs2YJ+DUhkEYxuggkGmOQUcckrioPTJCOXEnZ5JS5YslbGnuyVERlDDFvGEUPOWvwqaH6RVkHKeuDMK6SKnHlVhTgx8jeTmqy6Eij7K6nLqiGyPwChsa1MUrnq1wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0xMC0wNFQwMDozODo0OSswMDowMB9V0a8AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMTAtMDRUMDA6Mzg6NDkrMDA6MDBuCGkTAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIzLTEwLTA0VDAwOjM4OjQ5KzAwOjAwOR1IzAAAAABJRU5ErkJggg==" alt="Discord">
</a> |
<a href="https://github.com/Mintplex-Labs/openai-assistant-swarm/blob/master/LICENSE" target="_blank">
<img src="https://img.shields.io/static/v1?label=license&message=MIT&color=white" alt="License">
</a> |
<a href="https://mintplexlabs.com" target="_blank">
Mintplex Labs Inc
</a>|
<a href="https://www.npmjs.com/package/@mintplex-labs/openai-assistant-swarm" target="_blank">
NPM
</a>
</p>
## 什么是群管理器
OpenAI 的助理 API 为构建自主 AI 助理(常称为“代理”)的开发人员解锁了令人难以置信的便利性。这个 Node JS 库通过单个 API 调用解锁了您整个定制代理和其功能的注册表。一个代理“管理器”现在可以轻松地以智能和快速的方式将工作委派给一个或多个其它助理,从而让您可以轻松处理委派任务的操作。
管理哪个助理做什么的所有心力负担现在都得到了妥善处理和包装。
## 它是如何工作的?
群管理器作为 OpenAI NodeJS SDK 的扩展 — 在 `beta.assistants` 上提供了一个新的 `.swarm` 方法。
首先,安装 OpenAI 的 NodeJS SDK
```shell
yarn add openai
# 或者
npm install openai
接下来安装 openai-assistant-swarm
包
yarn add @mintplex-labs/openai-assistant-swarm
# 或者
npm install @mintplex-labs/openai-assistant-swarm
现在像往常一样使用 SDK,运行扩展函数并初始化代理群管理器。
// 像往常一样启用 OpenAI 客户端
const OpenAIClient = (
new OpenAI({
apiKey: process.env.OPEN_AI_KEY
}));
</SOURCE_TEXT>
// 简单地在客户端上调用此函数,以扩展 OpenAI SDK 使其现在具有
// OpenAIClient.beta.assistants.swarm 功能可用。
EnableSwarmAbilities(OpenAIClient, {
// 所有选项都是可选的
debug: false, // 查看过程和调试用的控制台日志输出和操场链接。
managerAssistantOptions: {
name: "[AUTOMATED] ___Swarm Manager", // 由库创建/维护的代理名称
model: "gpt-4", // 使用 gpt-4 进行更好的推理和调用。
instructions: '指示您将给予代理管理器以委派任务'; // 覆盖默认指令。
};
});
// 初始化 Swarm Manager 以创建 Swarm Manager 并将其注册到
// 您的帐户中。可以通过 `EnableSwarmAbilities` 上的选项配置 Swarm Manager
await OpenAIClient.beta.assistants.swarm.init();
// 现在所有 swarm 管理功能都对您可用!
## 简单示例
在 3 个可用助理之间委派单个输入的完整示例...
```javascript
import OpenAI from 'openai';
import { EnableSwarmAbilities } from '@mintplex-labs/openai-assistant-swarm';
const OpenAIClient = new OpenAI({apiKey: process.env.OPEN_AI_KEY});
EnableSwarmAbilities(OpenAIClient);
await OpenAIClient.beta.assistants.swarm.init();
// 可选 - 在此设置监听器以等待特定事件返回到用户,因为流尚不可用。
// 在单个文本提示上运行主进程,以将工作委派给所有可用的助理。
const response = OpenAIClient.beta.assistants.swarm.delegateWithPrompt('现在纽约的天气如何?今天的顶级股票是什么?');
// 例如。在您的 OpenAI 助理注册表中有一个 Pirate 机器人、Weather 机器人和 Stock 机器人。
// 并行运行以下线程并返回给您!
// |--> 将委托给现有的 Weather 机器人
// |--> 将委托给现有的 Stock watcher 机器人
// -> Pirate 机器人不会被调用。
// -----
// 父母(Parent)将回应类似的内容:“我已经安排了我们的两个助理来处理您的请求。对于股票助手任务,我已将任务委派给 Stocks 机器人,对于旧金山的天气更新,我们的 Weather 机器人将提供当前的条件。他们将很快满足您的需求。”
//
// 一旦每个子助理以完成或需要您的代码库中可轻松处理的 `required_action` 回复,您将收到回复。
console.log({
parentRun: response.parentRun, // 所有关于父线程的信息
subRuns: response.subRuns, // 创建的运行数组及其状态,每个拆分出的子线程!
})
可用工具
通过提示委派
首先,您可能感兴趣的主要工具 - 委派给子助理。它易于设置 也可以监听事件并添加到当前工作流中。
// 设置事件监听器,以便父响应完成时不必等待父+子响应全部完成。
// 可用于在处理子任务工具调用时提前返回父响应,
// 根据所发生的情况,这些工具调用有可能需要运行,也有可能不需要。
OpenAIClient.beta.assistants.swarm.emitter.on('parent_assistant_complete', (args) => {
console.group('父助理响应完成');
console.log(args.parentRun.playground) // => https://platform.openai.com/playground.... 在浏览器中调试线程和运行。
console.log(args.parentRun.textResponse) // => 啊哈!你想和船长说话吗?我去叫他,你这个陆地上的人。
// args.parentRun => 来自 OpenAI 的完整运行对象,因此您可以获取线程 ID 和其他属性,如状态。
console.log('\n\n')
console.groupEnd();
});
// 设置事件监听器,以便委派的助理响应完成时不必等待父+子响应全部完成。
// 从这里您可以处理所有子运行工具调用,如果它们需要运行。
OpenAIClient.beta.assistants.swarm.emitter.on('child_assistants_complete', (args) => {
console.group('子助理响应完成');
console.log(args.subRuns.map((run) => run.textResponse)) // => 啊哈!我是这艘船的船长。你在找我的宝藏吗,啊?
console.log(args.subRuns.map((run) => run.playground)) // => https://platform.openai.com/playground.... 在浏览器中调试线程和运行。
// args.subRuns[x].run => 来自 OpenAI 的完整运行对象,因此您可以获取线程 ID 和其他属性,如状态。
console.log('\n\n')
console.groupEnd();
});
// 设置事件监听器以查看每个步骤事件的完成情况:
OpenAIClient.beta.assistants.swarm.emitter.on('poll_event', ({ data }) => {
console.group('轮询事件!');
console.log({
status: data.status,
text: data.prompt || data.textResponse,
runId: data?.run?.id,
link: data.playground,
runStatus: data?.run?.status,
})
console.log('\n\n')
console.groupEnd();
});
// 在单个文本提示上运行主进程,以将工作委派给所有可用的助理。
const response = OpenAIClient.beta.assistants.swarm.delegateWithPrompt('让我和这艘船的头号海盗说话!你说什么?');
// 您也可以只是等待整个流程完成,而不是设置监听器,这样可以使代码更加同步
console.log({
parentRun: response.parentRun,
subRuns: response.subRuns,
})
// 您也可以将给定任务或提示集中在您知道要处理委派工作的特定助理子集中。
// OpenAIClient.beta.assistants.swarm.delegateWithPrompt('让我和这艘船的头号海盗说话!你说什么?', ['asst_lead_pirate']);
获取所有可用助理
现在,您需要分页助理以查看谁可以回答问题或处理任务。现在,您只需进行一次调用,我们就为您处理分页
const allAssistants = await OpenAIClient.beta.assistants.swarm.allAssistants();
console.log(`在此 OpenAI 帐户中发现了 ${allAssistants.length} 助理`);
// 将是一个可以过滤或管理的助理对象数组。 Swarm Manager 不会出现在这里。
一次获取多个已知助理
您一次只能通过 API 获取一个助理。现在,您可以一次同时获取多个
const assistantIds = ['asst_customer_success', 'asst_lead_pirate_manager', 'asst_that_was_deleted' ]
const specificAssistants = await OpenAIClient.beta.assistants.swarm.getAssistants(assistantIds);
console.log(`在给定的 ${assistantIds.length} 个 ID 中发现了 ${specificAssistants.length} 助理。`);
// 将是一个可以过滤或管理的助理对象数组。 Swarm Manager 不会出现在这里。
// 无效助理将不会出现在最终结果中。