تخطَّ إلى المحتوى

ورقة غش OpenAI Agents SDK

ورقة غش OpenAI Agents SDK

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

التثبيت

الخطوةالأمر
التثبيتpip install openai-agents
مع uvuv add openai-agents
اضبط المفتاحexport OPENAI_API_KEY="sk-..."
extras الصوتpip install "openai-agents[voice]"
التحققpython -c "import agents; print(agents.__version__)"

وكيل بسيط

from agents import Agent, Runner

agent = Agent(
    name="Assistant",
    instructions="You are a concise, helpful assistant.",
)

result = Runner.run_sync(agent, "Summarize the Unix philosophy in one line.")
print(result.final_output)
الاستدعاءالوصف
Runner.run_sync(agent, input)تشغيل متزامن
await Runner.run(agent, input)تشغيل غير متزامن
Runner.run_streamed(agent, input)بث الأحداث وهي تحدث
result.final_outputإجابة الوكيل النهائية
result.new_itemsعناصر التشغيل المنظمة (الرسائل واستدعاءات الأدوات والتسليمات)

الأدوات

from agents import Agent, function_tool

@function_tool
def get_weather(city: str) -> str:
    """Return the weather for a city."""
    return f"Sunny in {city}"

agent = Agent(name="Weather", tools=[get_weather])
المفهومالوصف
@function_toolتحويل وظيفة Python المكتوبة إلى أداة (يتم إنشاء Schema تلقائياً من التوقيع والتوثيق)
الأدوات المستضافةالمدمجات مثل البحث على الويب والبحث عن الملفات
tool_use_behaviorالتحكم في ما إذا كان مخرجات الأداة تنهي الدور
الوكلاء كأدواتيكشف agent.as_tool(...) عن وكيل واحد كأداة قابلة للاستدعاء لوكيل آخر

التسليمات

from agents import Agent, handoff

billing = Agent(name="Billing", instructions="Handle billing questions.")
triage = Agent(
    name="Triage",
    instructions="Route the user to the right specialist.",
    handoffs=[billing],          # or handoff(billing, ...)
)

تنقل التسليمات المحادثة الكاملة إلى الوكيل المستقبل داخل التشغيل الواحد؛ تنطبق حراس المدخلات على الوكيل الأول وحراس المخرجات على الوكيل الذي ينتج المخرجات النهائية.

الحراس

from agents import Agent, input_guardrail, GuardrailFunctionOutput

@input_guardrail
async def no_secrets(ctx, agent, user_input):
    tripped = "password" in user_input.lower()
    return GuardrailFunctionOutput(output_info={}, tripwire_triggered=tripped)

agent = Agent(name="Safe", input_guardrails=[no_secrets])
النوعالتشغيلاتالغرض
@input_guardrailقبل الوكيلالتحقق من صحة/فحص مدخلات المستخدم
@output_guardrailبعد المخرجات النهائيةالتحقق من صحة استجابة الوكيل
حراس الأدواتحول كل استدعاء أداةتحقق من مدخلات/مخرجات الأدوات الفردية
Tripwireعند التنشيطيرفع استثناء لإيقاف التشغيل

الجلسات (الذاكرة)

from agents import Agent, Runner, SQLiteSession

session = SQLiteSession("user-123", "conversations.db")
Runner.run_sync(agent, "My name is Nick.", session=session)
Runner.run_sync(agent, "What's my name?", session=session)  # remembers
الجلسةالاستخدام
SQLiteSessionذاكرة محادثة محلية وثابتة
الجلسة في الذاكرةالسياق الفناء داخل عملية
جلسة مخصصةتنفيذ بروتوكول الجلسة للمتجر الخاص بك

التتبع

الميزةالوصف
التتبعات التلقائيةكل Runner.run يسجل استدعاءات النموذج واستدعاءات الأدوات والتسليمات ونتائج الحراس والتوقيت
لوحة التحكمتظهر التتبعات تحت مشروعك على منصة OpenAI
trace(...)دمج عمليات متعددة في تتبع سير عمل واحد
المعالجات الخارجيةتصدير الحوافز إلى أدوات المراقبة الجهات الخارجية

سير العمل الشائع

# بث الرموز إلى واجهة مستخدم
import asyncio
from agents import Agent, Runner

async def main():
    agent = Agent(name="Writer", instructions="Write vividly.")
    streamed = Runner.run_streamed(agent, "Describe a thunderstorm.")
    async for event in streamed.stream_events():
        print(event)

asyncio.run(main())

الموارد