سرب أوبن إيه آي هو إطار عمل تعليمي لاستكشاف تنسيق الوكلاء المتعددين الخفيف الوزن والمريح. يتم إدارة هذا المشروع من قبل فريق حلول أوبن إيه آي، ويهدف إلى تزويد المطورين بأداة بسيطة ومرنة وقابلة للتحكم لبناء أنظمة وكلاء متعددة.
تحديث مهم: تم استبدال سرب الآن بحزمة تطوير البرامج (SDK) للوكلاء من أوبن إيه آي، وهي نسخة جاهزة للإنتاج من سرب. يوصي فريق أوبن إيه آي بنقل جميع حالات الاستخدام الإنتاجي إلى حزمة تطوير البرامج (SDK) للوكلاء.
يحقق سرب تنسيق الوكلاء من خلال مفهومين مجردين أساسيين:
pip install git+ssh://git@github.com/openai/swarm.git
# أو
pip install git+https://github.com/openai/swarm.git
from swarm import Swarm, Agent
client = Swarm()
def transfer_to_agent_b():
return agent_b
agent_a = Agent(
name="Agent A",
instructions="You are a helpful agent.",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agent B",
instructions="Only speak in Haikus.",
)
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "I want to talk to agent B."}],
)
print(response.messages[-1]["content"])
مثال على الإخراج:
Hope glimmers brightly,
New paths converge gracefully,
What can I assist?
تنفيذ الدالة client.run()
في سرب الحلقة التالية:
المعلمة | النوع | الوصف | القيمة الافتراضية |
---|---|---|---|
agent | Agent | الوكيل (الأولي) المراد استدعاؤه | (إلزامي) |
messages | List | قائمة كائنات الرسائل | (إلزامي) |
context_variables | dict | متغيرات السياق | {} |
max_turns | int | الحد الأقصى لعدد الدورات | float("inf") |
model_override | str | تجاوز النموذج | None |
execute_tools | bool | ما إذا كان سيتم تنفيذ الأدوات | True |
stream | bool | ما إذا كان سيتم تمكين الاستجابة المتدفقة | False |
debug | bool | ما إذا كان سيتم تمكين سجلات التصحيح | False |
الحقل | النوع | الوصف | القيمة الافتراضية |
---|---|---|---|
name | str | اسم الوكيل | "Agent" |
model | str | النموذج المستخدم | "gpt-4o" |
instructions | str أو دالة | تعليمات الوكيل | "You are a helpful agent." |
functions | List | قائمة الدوال القابلة للاستدعاء | [] |
tool_choice | str | استراتيجية اختيار الأدوات | None |
def instructions(context_variables):
user_name = context_variables["user_name"]
return f"Help the user, {user_name}, do whatever they want."
agent = Agent(instructions=instructions)
response = client.run(
agent=agent,
messages=[{"role":"user", "content": "Hi!"}],
context_variables={"user_name":"John"}
)
def greet(context_variables, language):
user_name = context_variables["user_name"]
greeting = "Hola" if language.lower() == "spanish" else "Hello"
print(f"{greeting}, {user_name}!")
return "Done"
agent = Agent(functions=[greet])
sales_agent = Agent(name="Sales Agent")
def transfer_to_sales():
return sales_agent
agent = Agent(functions=[transfer_to_sales])
def talk_to_sales():
print("Hello, World!")
return Result(
value="Done",
agent=sales_agent,
context_variables={"department": "sales"}
)
يوفر سرب العديد من المشاريع النموذجية التي تعرض سيناريوهات تطبيق مختلفة:
يوضح الاستخدام الأساسي للإعداد واستدعاء الدالة والتسليم ومتغيرات السياق
إعداد فرز بسيط، يقوم بإعادة توجيه الطلبات إلى الوكيل المناسب
يعرض مثالًا بسيطًا لاستدعاء الدالة
إعداد وكلاء متعددين، يتعامل مع أنواع مختلفة من طلبات خدمة العملاء لشركة الطيران
يتضمن وكيل واجهة مستخدم ووكيل مركز مساعدة مع أدوات متعددة
مساعد تسوق شخصي يساعد في معالجة طلبات البيع والاسترجاع
يدعم سرب الاستجابات المتدفقة، باستخدام نفس الأحداث الموجودة في واجهة برمجة تطبيقات إكمال الدردشة:
stream = client.run(agent, messages, stream=True)
for chunk in stream:
print(chunk)
أنواع الأحداث الجديدة:
{"delim":"start"}
و {"delim":"end"}
- وضع علامة على بداية ونهاية معالجة الوكيل لرسالة واحدة{"response": Response}
- إرجاع كائن الاستجابة الكامل في نهاية التدفقاستخدم run_demo_loop
للاختبار من سطر الأوامر:
from swarm.repl import run_demo_loop
run_demo_loop(agent, stream=True)
سرب مناسب بشكل خاص للحالات التالية:
ملاحظة: على الرغم من أن سرب قد تم استبداله بحزمة تطوير البرامج (SDK) للوكلاء من أوبن إيه آي، إلا أنه لا يزال موردًا تعليميًا ممتازًا لمساعدة المطورين على فهم المفاهيم الأساسية وتنفيذ أنظمة الوكلاء المتعددين. بالنسبة لبيئات الإنتاج، يوصى بالانتقال إلى حزمة تطوير البرامج (SDK) الرسمية للوكلاء.
يوفر سرب أوبن إيه آي إطار عمل بسيطًا وقويًا لتعلم وتطوير أنظمة الوكلاء المتعددين. من خلال المفهومين الأساسيين للوكيل والتسليم، يمكن للمطورين بناء سير عمل معقد للذكاء الاصطناعي مع الحفاظ على قابلية قراءة التعليمات البرمجية وسهولة صيانتها. على الرغم من استبداله بحزمة تطوير البرامج (SDK) الجديدة، إلا أن فلسفة تصميمه وقيمته التعليمية لا تزال مهمة.