مدير Swarm Assistant Assistant Assistant: مكتبة لتحويل مساعدي Openai إلى جيش .
| | Mintplex Labs Inc | NPM
API مساعد Openai يفتح مجداً لا تصدق للمطورين الذين يقومون ببناء مساعدين ذاتي الحكم الذاتي أو يسمى عادة "الوكلاء". تقوم مكتبة Node JS بإلغاء تأمين سجلك بالكامل للوكلاء المخصصين ووظائفها عبر مكالمة API واحدة. يمكن للوكيل "مدير" الآن تفويض العمل بسهولة إلى واحد أو العديد من المساعدين الآخرين بالتوازي بطريقة ذكية وسريعة حتى تتمكن من التعامل مع الإجراءات من المهام المفوضة بسهولة.
كل النفقات العامة العقلية لإدارة المساعد يفعل ما يتم التعامل معه الآن واختامه بالقوس.
يعمل Swarm Manager كامتداد لـ Openai Nodejs SDK - مما يتيح طريقة جديدة .swarm متوفرة على beta.assistants .
أولاً ، قم بتثبيت Openai SDK لـ Nodejs
yarn add openai
# or
npm install openai قم بتثبيت حزمة openai-assistant-swarm
yarn add @mintplex-labs/openai-assistant-swarm
# or
npm install @mintplex-labs/openai-assistant-swarmالآن استخدم SDK كما تفعل عادة وتشغيل وظيفة التمديد وتهيئة مدير Swarm Agent.
// Enable the client for OpenAi as you normally would
const OpenAIClient = (
new OpenAI ( {
apiKey : process . env . OPEN_AI_KEY
} ) ) ;
// The simply call this function on the client to extend the OpenAI SDK to now have
// OpenAIClient.beta.assistants.swarm functions available.
EnableSwarmAbilities ( OpenAIClient , {
// all options are OPTIONAL
debug : false , // to see console log outputs of the process and playground links for debugging.
managerAssistantOptions : {
name : "[AUTOMATED] ___Swarm Manager" , // Name of created/maintained agent by the library
model : "gpt-4" , // Use gpt-4 for better reasoning and calling.
instructions : 'Instructions you are going to give the agent manager to delegate tasks to' ; // Override the default instructions.
} ;
} ) ;
// Initialize the swarm manager to create the swarm manager and also register it with
// your account. Swarm manager can be configured via options on `EnableSwarmAbilities`
await OpenAIClient . beta . assistants . swarm . init ( ) ;
// Now all swarm management function are available to you! مثال كامل تفويض إدخال واحد بين 3 مساعدين متاح ...
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 ( ) ;
// Optional - set up listeners here to wait for specific events to return to the user since streaming is not available yet.
// Run the main process on a single text prompt to have work delegate between all of your assistants that are available.
const response = OpenAIClient . beta . assistants . swarm . delegateWithPrompt ( 'What is the weather in New York city right now? Also what is the top stock for today?' ) ;
// For example. Given a Pirate bot, Weather Bot, and Stock Bot in your assistant registry on OpenAI.
// Run the below threads in parallel and return to you!
// |--> Will delegate to an existing Weather Bot
// |--> Will delegate to an existing Stock watcher Bot
// -> Pirate bot will not be invoked.
// -----
// The parent will respond with something like "I've arranged for two of our assistants to handle your requests. For assistance with stocks I have delegated that task to the Stock Bot, and for the weather update in San Francisco, our Weatherbot will provide the current conditions. They will take care of your needs shortly."
//
// You will then get a response once each child responds with either a completion or a `required_action` run you can handle in your codebase easily.
console . log ( {
parentRun : response . parentRun , // All information about the parent thread
subRuns : response . subRuns , // array of runs created and their status for each spun-out child thread!
} ) التفويض عبر موجه
أولاً ، الشخص الرئيسي الذي ربما تكون مهتمًا به - تفويض للمساعدين الفرعيين. من السهل الإعداد وكذلك للاستماع إلى الأحداث والإضافة إلى سير العمل الحالي.
// Set up an event listener for when the parent response is completed so you don't have to wait
// for parent + children responses to all complete.
// Useful to return the parent response early while you work on the subtask tool_calls that
// may or not be required depending on what happened.
OpenAIClient . beta . assistants . swarm . emitter . on ( 'parent_assistant_complete' , ( args ) => {
console . group ( 'Parent assistant response completed' ) ;
console . log ( args . parentRun . playground ) // => https://platform.openai.com/playground.... to debug thread & run in browser.
console . log ( args . parentRun . textResponse ) // => Yarrh! Want to be speaking to the captain do ya? Ill go fetch them ya land lubber.
// args.parentRun => The full Run object from OpenAI so you can get the thread_id and other properties like status.
console . log ( 'nn' )
console . groupEnd ( ) ;
} ) ;
// Set up an event listener for when the delegated assistant responses are completed so you don't have to wait
// for parent + children responses to all complete.
// From here you can handle all sub-run tool_calls if they are required to be run.
OpenAIClient . beta . assistants . swarm . emitter . on ( 'child_assistants_complete' , ( args ) => {
console . group ( 'Child assistant response completed' ) ;
console . log ( args . subRuns . map ( ( run ) => run . textResponse ) ) // => Yarrh! I am the captain of this vessel. Ye be after my treasure, Yar?
console . log ( args . subRuns . map ( ( run ) => run . playground ) ) // => https://platform.openai.com/playground.... to debug thread & run in browser.
// args.subRuns[x].run => The full Run object from OpenAI so you can get the thread_id and other properties like status.
console . log ( 'nn' )
console . groupEnd ( ) ;
} ) ;
// Set up and event listener to see every step event as it is completed:
OpenAIClient . beta . assistants . swarm . emitter . on ( 'poll_event' , ( { data } ) => {
console . group ( 'Poll event!' ) ;
console . log ( {
status : data . status ,
text : data . prompt || data . textResponse ,
runId : data ?. run ?. id ,
link : data . playground ,
runStatus : data ?. run ?. status ,
} )
console . log ( 'nn' )
console . groupEnd ( ) ;
} ) ;
// Run the main process on a single text prompt to have work delegate between all of the possible assistants that are available.
const response = OpenAIClient . beta . assistants . swarm . delegateWithPrompt ( 'Let me speak to the head pirate of this vessel! What say ye??' ) ;
// You can also just wait for the entire flow to finish instead of setting up listeners to keep the code more synchronous
console . log ( {
parentRun : response . parentRun ,
subRuns : response . subRuns ,
} )
// You can also focus the given task or prompt on a subset of assistants that you know you want to handle delegated work.
// OpenAIClient.beta.assistants.swarm.delegateWithPrompt('Let me speak to the head pirate of this vessel! What say ye??', ['asst_lead_pirate']);احصل على جميع المساعدين المتاحين
في الوقت الحالي ، تحتاج إلى توحيد الأثنين لمعرفة من هو موجود للإجابة على سؤال أو التعامل مع المهمة. الآن ، يمكنك فقط إجراء مكالمة واحدة ونتعامل مع ترقيم الصفحات من أجلك
const allAssistants = await OpenAIClient . beta . assistants . swarm . allAssistants ( ) ;
console . log ( `Found ${ allAssistants . length } assistants for this OpenAI Account` ) ;
// will be an array of assistant objects you can filter or manage. The Swarm Manager will not appear here.احصل على العديد من المساعدين المعروفين في وقت واحد
أنت تقتصر على جلب مساعد واحد في وقت واحد عبر واجهة برمجة التطبيقات. الآن يمكنك الحصول على الكثير مرة واحدة
const assistantIds = [ 'asst_customer_success' , 'asst_lead_pirate_manager' , 'asst_that_was_deleted' ]
const specificAssistants = await OpenAIClient . beta . assistants . swarm . getAssistants ( assistantIds ) ;
console . log ( `Found ${ specificAssistants . length } assistants from ${ assistantIds . length } ids given.` ) ;
// Will be an array of assistant objects you can filter or manage. The Swarm Manager will not appear here.
// Invalid assistants will not appear in the end result.