0Pricing
Learn AI with Python · درس

واجهة OpenAI البرمجية: ‏chat.completions والبث

عميل OpenAI، وقائمة messages، وأدوار system/user/assistant، والبث باستخدام stream=True

واجهة OpenAI البرمجية: ‏chat.completions والبث درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

تعرّفوا إلى OpenAI Python SDK

تُعد حزمة Python المسماة openai الطريقة الرسمية للتحدث مع نماذج OpenAI مثل GPT-4o. ثبّتوها باستخدام pip install openai، وستحصلون على فئة عميل واحدة هي OpenAI تتولى المصادقة وإعادة المحاولات وبناء الطلبات نيابةً عنكم.

تمرّ كل مكالمة تجرونها عبر هذا العميل، ولذلك يُعد إنشاؤه مرة واحدة ثم إعادة استخدامه النمط القياسي.

pip install openai

from openai import OpenAI

إنشاء العميل

أنشئوا العميل باستخدام OpenAI(). ويقرأ العميل مفتاحكم افتراضيًا من متغير البيئة OPENAI_API_KEY، مما يبقي الأسرار خارج الشيفرة المصدرية.

يمكنكم أيضًا تمرير المفتاح صراحةً، لكن متغيرات البيئة هي النهج الموصى به لتطبيقات الإنتاج.

from openai import OpenAI

# Reads OPENAI_API_KEY from the environment
client = OpenAI()

# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")

قائمة الرسائل

تعتمد نماذج المحادثة على قائمة من الرسائل. وكل رسالة عبارة عن dict يحتوي على role وcontent. والأدوار الأساسية الثلاثة هي system (التعليمات)، وuser (الإنسان)، وassistant (النموذج).

تمثل هذه القائمة سياق المحادثة الكامل الذي يراه النموذج في كل استدعاء.

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the capital of France?"}
]

أول عملية إكمال

استدعوا client.chat.completions.create() باستخدام model وmessages الخاصة بكم. يوجد نص الرد في response.choices[0].message.content.

تعيد واجهة API قائمة من الخيارات، لكنكم تقرؤون الخيار الأول في الاستخدام العادي.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages
)

print(response.choices[0].message.content)

التحكم في المخرجات باستخدام المعلمات

تؤثر معلمتان في الاستجابة: temperature (0 = حتمي، والقيم الأعلى = أكثر إبداعًا) وmax_tokens (يحدد الحد الأقصى لطول الرد). تناسب درجات الحرارة المنخفضة المهام الواقعية، بينما تناسب الدرجات الأعلى العصف الذهني.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    temperature=0.2,
    max_tokens=300
)

لماذا نبث الاستجابات؟

من دون البث التدريجي، تنتظرون الرد الكامل قبل أن تروا أي شيء. أما مع البث التدريجي، فتصل الرموز أثناء إنشائها، ولذلك يمكن لواجهة المستخدم عرض النص في الوقت الفعلي، كما يفعل ChatGPT.

يمكنكم تفعيله باستخدام stream=True، ما يغيّر قيمة الإرجاع من كائن واحد إلى مكرّر.

تفعيل البث التدريجي

مرّروا stream=True إلى create(). بدلًا من استجابة مكتملة، تحصلون الآن على مولّد يُنتج أجزاء أثناء إنشاء النموذج لها.

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    stream=True
)

التكرار على الأجزاء

استخدموا حلقة للتكرار على البث. يحمل كل جزء جزءًا من النص في chunk.choices[0].delta.content. قد تحتوي الأجزاء المبكرة والنهائية على None في هذا الموضع، لذا تحقّقوا من ذلك قبل الطباعة.

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta is not None:
        print(delta, end="", flush=True)

فهم delta مقارنةً بـ message

في الاستجابة العادية، تقرؤون message.content (الرد الكامل). أما في البث، فتقرؤون delta.content (الجزء الجديد فقط). تعني كلمة delta «التغيير» منذ الجزء السابق.

تؤدي عملية ضم جميع قيم delta إلى إعادة بناء الرسالة كاملة.

full_text = ""
for chunk in stream:
    piece = chunk.choices[0].delta.content or ""
    full_text += piece
print("\nFinal:", full_text)

المحادثات متعددة الأدوار

للاستمرار في محادثة، أضيفوا رد المساعد مرة أخرى إلى messages، ثم أضيفوا رسالة المستخدم التالية. النموذج عديم الحالة، لذا عليكم أنتم الحفاظ على السجل.

messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})

follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)

فحص استخدام الرموز

تتضمن الاستجابات غير المبثوثة كائن usage الذي يحتوي على prompt_tokens وcompletion_tokens وtotal_tokens. بهذه الطريقة تتتبّعون تكلفة API وتضعون ميزانيتها، لأن الفوترة تتم لكل رمز.

print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)

تحقّق سريع

اختبروا فهمكم للبث التدريجي.

مراجعة: إكمالات المحادثة والبث التدريجي

تعلّمتم إنشاء عميل OpenAI، وبناء قائمة messages باستخدام أدوار النظام والمستخدم والمساعد، واستدعاء chat.completions.create(). وتعلّمتم قراءة الردود العادية من choices[0].message.content.

باستخدام stream=True، تكرّرون على الأجزاء وتقرؤون delta.content للحصول على المخرجات في الوقت الفعلي، وتحافظون على السجل بإضافة الردود، وتتتبّعون التكلفة عبر كائن usage.

الأسئلة الشائعة

هل درس «واجهة OpenAI البرمجية: ‏chat.completions والبث» مجاني؟

نعم — نص درس «واجهة OpenAI البرمجية: ‏chat.completions والبث» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «واجهة OpenAI البرمجية: ‏chat.completions والبث»؟

عميل OpenAI، وقائمة messages، وأدوار system/user/assistant، والبث باستخدام stream=True تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «واجهة OpenAI البرمجية: ‏chat.completions والبث»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. واجهة OpenAI البرمجية: ‏chat.completions والبث
  2. واجهة Anthropic Claude البرمجية في Python
  3. استدعاء الدوال واستخدام الأدوات مع نماذج اللغة الكبيرة
  4. هندسة المطالبات لتطبيقات نماذج اللغة الكبيرة الإنتاجية
← العودة إلى Learn AI with Python