مكتبة OpenAI Agents SDK هي مكتبة بايثون تم تصميمها لتبسيط تطوير الوكلاء الذكيين المدعومين بنماذج اللغة من OpenAI. توفر للمطورين أدوات لإنشاء وكلاء متخصصين، ودمج الوظائف الخارجية، وإدارة تفويض المهام بين الوكلاء، وفرض التحقق من المدخلات والمخرجات، ومراقبة تدفقات التنفيذ. يقدم هذا الدليل جولة تفصيلية تقنية حول تثبيت وتكوين واستخدام SDK بفعالية، مع ضمان حد أدنى من 2000 كلمة مع التركيز على الدقة والتطبيق العملي.
مقدمة
توفر OpenAI Agents SDK إطار عمل منظم لبناء أنظمة متعددة الوكلاء حيث يتم تخصيص كل وكيل لأداء مهام محددة. يمكن أن تتفاعل هذه الوكلاء مع المستخدمين، وتنفيذ الإجراءات من خلال الأدوات المدمجة، والتعاون من خلال تمرير المهام إلى وكلاء آخرين. تشمل المكونات الأساسية لـ SDK:
- الوكلاء: حالات من نماذج اللغة المكونة بتعليمات وأدوار محددة.
- الأدوات: وظائف أو خدمات (مثل: البحث على الويب، كود بايثون مخصص) التي توسع قدرات الوكلاء.
- التفويض: آليات تمكّن الوكلاء من تفويض المهام إلى وكلاء آخرين بسلاسة.
- حواجز الأمان: طبقات تحقق لضمان أن المدخلات والمخرجات تلبي المعايير المحددة.
- التتبع: سجلات تنفيذ لتحليل الأداء وتصحيح الأخطاء.

تم تصميم هذا الدليل للمطورين الذين لديهم فهم أساسي للبايثون وتفاعلات واجهة برمجة التطبيقات، ويقدم تفسيرات مفصلة، وأمثلة على الشيفرة، وأفضل الممارسات لإنشاء مورد قوي وشامل.
التثبيت والتكوين
تعد الإعدادات الصحيحة أمرًا حيويًا لاستخدام OpenAI Agents SDK بفعالية. تغطي هذه القسم المتطلبات الأساسية، وإعداد البيئة، والتثبيت، والتحقق.
المتطلبات الأساسية
قبل المتابعة، تأكد مما يلي:
- بايثون 3.8+: تحقق من إصدار بايثون الخاص بك باستخدام
python --version. قم بالتثبيت من python.org إذا لزم الأمر.

- مفتاح واجهة برمجة تطبيقات OpenAI: احصل على مفتاحك من platform.openai.com تحت إعدادات حسابك. يقوم هذا المفتاح بالمصادقة على الطلبات إلى خوادم OpenAI.

الخطوة 1: إعداد بيئة افتراضية
تعمل البيئة الافتراضية على عزل تبعيات المشروع، مما يمنع التعارضات مع مشاريع بايثون الأخرى. لإنشاء وتفعيل واحدة:
- لينكس/ماك:
python -m venv agents_env
source agents_env/bin/activate
- ويندوز:
python -m venv agents_env
agents_env\Scripts\activate
بمجرد تفعيلها، يجب أن تعكس مطالبات طرفية لديك البيئة (مثل (agents_env)). تعتبر هذه الخطوة من أفضل الممارسات في تطوير بايثون، لضمان مساحة عمل نظيفة.
الخطوة 2: تثبيت SDK
مع تفعيل البيئة الافتراضية، قم بتثبيت SDK باستخدام pip:
pip install openai-agents
تستخرج هذه الأوامر أحدث إصدار من SDK وتبعياته من PyPI. لتأكيد التثبيت، قم بتشغيل:
pip show openai-agents-python
يعرض هذا البيانات الوصفية، بما في ذلك رقم الإصدار، مؤكدًا أن الحزمة مثبتة.
الخطوة 3: تكوين مفتاح واجهة برمجة التطبيقات
تتطلب SDK مفتاح واجهة برمجة تطبيقات OpenAI لتعمل. قم بتعيينه كمتغير بيئي لتجنب تضمينه في الشيفرة الخاصة بك، مما يعزز الأمان:
- لينكس/ماك:
export OPENAI_API_KEY='your-api-key'
- ويندوز:
set OPENAI_API_KEY='your-api-key'
لجعل هذا دائمًا عبر الجلسات، أضف الأمر إلى ملف تكوين الصدفة الخاص بك (مثل .bashrc أو .zshrc على أنظمة يونكس). بدلاً من ذلك، يمكنك تعيينه برمجيًا في بايثون، على الرغم من أن ذلك أقل أمانًا:
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
الخطوة 4: تحقق من التثبيت
اختبر الإعداد باستخدام وكيل بسيط للتأكد من أن كل شيء يعمل:
from agents import Agent, Runner
agent = Agent(name="TestAgent", instructions="Return 'Setup successful'")
result = Runner.run_sync(agent, "Run test")
print(result.final_output) # النص المتوقع: "Setup successful"
إذا تمت طباعة "Setup successful"، فإن التثبيت يعمل. تشمل المشكلات الشائعة:
- مفتاح واجهة برمجة التطبيقات غير صالح: تحقق من المفتاح وتأكد من عدم وجود مسافات إضافية أو أخطاء إملائية.
- أخطاء الشبكة: تحقق من اتصال الإنترنت الخاص بك وحالة خادم OpenAI.
إنشاء وكلاء
الوكلاء هم اللبنات الأساسية لـ SDK، يتم تعريف كل منها من خلال دور وسلوك فريدين.
تهيئة الوكيل
يتم استخدام فئة Agent لإنشاء الوكلاء. تشمل المعلمات الرئيسية ما يلي:
name: معرف نصي (مثل "MathAgent").instructions: نص يحدد غرض الوكيل (مثل "حل مسائل الرياضيات").model: نموذج OpenAI لاستخدامه (افتراضي:gpt-4).temperature: قيمة عشرية بين 0 و 1 تتحكم في عشوائية النتائج (افتراضي: 0.7).
مثال: وكيل أساسي
إليك وكيل بسيط لحساب الرياضيات:
from agents import Agent, Runner
agent = Agent(
name="MathAgent",
instructions="Solve arithmetic expressions."
)
result = Runner.run_sync(agent, "Calculate 10 * 2")
print(result.final_output) # الناتج: "20"
تقوم طريقة Runner.run_sync بتنفيذ الوكيل بشكل متزامن، مما يعيد كائن النتيجة مع خاصية final_output.
تكوين متقدم
خصص الوكلاء لاحتياجات معينة عن طريق تعديل المعلمات:
agent = Agent(
name="CreativeWriter",
instructions="Write a short story based on the prompt.",
model="gpt-4",
temperature=0.9
)
result = Runner.run_sync(agent, "A robot in a distant galaxy")
print(result.final_output) # الناتج: قصة إبداعية
- النموذج:
gpt-4يوفر تفكيرًا متفوقًا، بينماgpt-3.5-turboأسرع وأرخص للمهام الأبسط. - درجة الحرارة: القيم الأقل (مثل 0.2) تعطي نتائج متوقعة؛ القيم الأعلى (مثل 0.9) تزيد من الإبداع.
مثال على عدة وكلاء
قم بإنشاء وكلاء متميزين لمهام مختلفة:
support_agent = Agent(
name="SupportBot",
instructions="Answer technical support questions."
)
code_agent = Agent(
name="CodeHelper",
instructions="Generate Python code snippets."
)
support_result = Runner.run_sync(support_agent, "How do I install Python?")
code_result = Runner.run_sync(code_agent, "Write a function to add two numbers")
print(support_result.final_output) # الناتج: تعليمات التثبيت
print(code_result.final_output) # الناتج: "def add(a, b): return a + b"
هذا يوضح مرونة SDK في التعامل مع أدوار متنوعة.
دمج الأدوات
تعزز الأدوات الوكلاء من خلال تمكينهم من تنفيذ إجراءات خارجية. يدعم SDK أدوات مستضافة، وأدوات وظيفية مخصصة، وأدوات قائمة على الوكلاء.
استخدام الأدوات المستضافة
الأدوات المستضافة، مثل web_search، هي أدوات مسبقة البناء وجاهزة للاستخدام:
from agents import Agent, Runner, web_search
agent = Agent(
name="ResearchAgent",
instructions="Answer questions using web search.",
tools=[web_search]
)
result = Runner.run_sync(agent, "What is the capital of France?")
print(result.final_output) # الناتج: "عاصمة فرنسا هي باريس."
يستدعي الوكيل تلقائيًا web_search لجلب البيانات في الوقت الحقيقي.
إنشاء أدوات الوظائف المخصصة
حدد أدواة مخصصة باستخدام الزخرفة @function_tool. يجب أن تقبل الأدوات وتعيد نصوص.
مثال: أداة جلب البيانات
from agents import Agent, Runner, function_tool
@function_tool
def fetch_data(id: str) -> str:
"""إرجاع البيانات للمعرف المحدد."""
# محاكاة البحث في قاعدة البيانات
return f"Data for ID {id}: active"
agent = Agent(
name="DataAgent",
instructions="Retrieve data using the tool.",
tools=[fetch_data]
)
result = Runner.run_sync(agent, "Fetch data for ID 123")
print(result.final_output) # الناتج: "Data for ID 123: active"
دمج واجهات برمجة التطبيقات الخارجية
يمكن أن تتصل الأدوات بالخدمات الخارجية. إليك مثال على أداة الطقس:
import requests
from agents import function_tool, Agent, Runner
@function_tool
def get_weather(city: str) -> str:
"""الحصول على الطقس الحالي لمدينة."""
api_key = "your-weather-api-key" # استبداله بمفتاح حقيقي
url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
return f"الطقس في {city} هو {data['current']['condition']['text']}."
return "بيانات الطقس غير متاحة."
agent = Agent(
name="WeatherAgent",
instructions="Provide weather updates using the tool.",
tools=[get_weather]
)
result = Runner.run_sync(agent, "What's the weather in Tokyo?")
print(result.final_output) # الناتج: "الطقس في طوكيو مشمس." (مثال)
قم بالتسجيل للحصول على مفتاح API مجاني في weatherapi.com لاختبار ذلك.

دمج عدة أدوات
يمكن للوكلاء استخدام عدة أدوات في نفس الوقت:
@function_tool
def log_entry(text: str) -> str:
"""تسجيل الرسالة."""
return f"Logged: {text}"
agent = Agent(
name="MultiToolAgent",
instructions="Use tools to search and log.",
tools=[web_search, log_entry]
)
result = Runner.run_sync(agent, "Search for AI trends and log the query")
print(result.final_output) # الناتج يتضمن نتائج البحث وتأكيد السجل
تفويض الوكلاء
تسمح التفويضات للوكلاء بتفويض المهام، مما يتيح سير العمل المعقد.
إعداد التفويضات
حدد وكيلًا رئيسيًا يمكنه الوصول إلى وكلاء ثانويين عبر معلمة handoffs:
from agents import Agent, Runner
english_agent = Agent(
name="EnglishHelper",
instructions="Respond in English only."
)
spanish_agent = Agent(
name="SpanishHelper",
instructions="Respond in Spanish only."
)
triage_agent = Agent(
name="LanguageRouter",
instructions="Detect the language and hand off to the appropriate agent.",
handoffs=[english_agent, spanish_agent]
)
result = Runner.run_sync(triage_agent, "Hola, ¿qué tal?")
print(result.final_output) # الناتج: "¡Bien, gracias!" (أو مشابه)
يحلل triage_agent المدخلات ويفوض إلى الوكيل المناسب بناءً على اللغة.
منطق التفويض
يعتمد قرار التفويض على تعليمات الوكيل الرئيسي. على سبيل المثال:
- "إذا كانت المدخلات تحتوي على كلمات إسبانية، يتم تفويضها إلى SpanishHelper."
- "للمدخلات الإنجليزية، استخدم EnglishHelper."
اختبر مع إدخال باللغة الإنجليزية:
result = Runner.run_sync(triage_agent, "How are you?")
print(result.final_output) # الناتج: "I'm good, thanks!"
تفويضات متداخلة
للحصول على سير عمل أعمق، يمكن للوكلاء تفويض مهام إلى وكلاء آخرين باستخدام التفويضات:
analysis_agent = Agent(
name="AnalysisBot",
instructions="Analyze data and hand off for reporting."
)
report_agent = Agent(
name="ReportBot",
instructions="Generate a report from analysis."
)
main_agent = Agent(
name="WorkflowManager",
instructions="Start with analysis.",
handoffs=[analysis_agent, report_agent]
)
result = Runner.run_sync(main_agent, "Analyze sales data")
print(result.final_output) # الناتج: تقرير تم إنشاؤه
تطبيق حواجز الأمان
تفرض حواجز الأمان قيودًا على المدخلات والمخرجات باستخدام نماذج Pydantic.
تحديد حاجز أمان
قم بإنشاء نموذج للتحقق من بنية المخرجات:
from pydantic import BaseModel
from agents import Agent, Runner
class QuestionCheck(BaseModel):
is_question: bool
reason: str
guard_agent = Agent(
name="QuestionGuard",
instructions="Determine if the input is a question.",
output_type=QuestionCheck
)
result = Runner.run_sync(guard_agent, "What is the capital of France?")
print(result.final_output) # الناتج: {"is_question": true, "reason": "Ends with a question mark"}
دمج سير العمل
استخدم حواجز الأمان لتصفية المدخلات:
task_agent = Agent(
name="TaskProcessor",
instructions="Process questions only.",
handoffs=[guard_agent]
)
result = Runner.run_sync(task_agent, "Tell me a story")
print(result.final_output) # الناتج يشير إلى أنه ليس سؤالًا
التتبع وتصحيح الأخطاء
تقوم عملية التتبع بتسجيل تفاصيل تنفيذ الوكلاء، ويمكن الوصول إليها عبر لوحة تحكم OpenAI.
تمكين التتبع
التتبع تلقائي. كل تشغيل يولد تتبعًا يتضمن:
- بيانات المدخلات/المخرجات
- استدعاءات الأدوات
- أحداث التفويض
- الأخطاء
مثال على تصحيح الأخطاء
إذا فشل وكيل، راجع التتبع لتحديد:
- معلمات الأداة غير الصحيحة
- خروج التفويض عن المسار
- أخطاء واجهة برمجة التطبيقات
أفضل الممارسات
تحسين الأداء
- اختيار النموذج: استخدم
gpt-3.5-turboللسرعة، وgpt-4للتفكير المعقد. - درجة الحرارة: 0.2 للدقة، 0.9 للإبداع.
- التنفيذ غير المتزامن: استخدم
Runner.run_asyncللمهام المتوازية.
معالجة الأخطاء
- الأدوات: إرجاع رسائل خطأ واضحة (مثل: "معرف غير صالح").
- التفويضات: تضمين وكيل احتياطي للأخطاء.
تصميم سير العمل
- القصور الذاتي: تقسيم المهام عبر الوكلاء.
- الوضوح: كتابة تعليمات غير غامضة.
- التحقق: تطبيق حواجز الأمان في المراحل الرئيسية.
الخاتمة
يمكن لمكتبة OpenAI Agents SDK تمكين المطورين من بناء أنظمة ذكاء اصطناعي معقدة مع وكلاء متخصصين، وأدوات متكاملة، وسير عمل تعاوني. يقدم هذا الدليل أساسًا تقنيًا للاستفادة من إمكاناته الكاملة، مزودًا بأمثلة وأفضل الممارسات.
إذًا، ماذا بعد؟ ابدأ في التجريب! جرب تعليمات وأدوات وسير عمل مختلفة. وإذا واجهت صعوبات، يمكن أن تساعدك أدوات مثل Apidog في اختبار API، احصل عليها مجانًا.

