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

1. الإعداد

bash
pip install openai
export OPENAI_API_KEY="sk-..."
export OPENAI_MODEL="<model-id-from-docs>"

2. أول طلب عبر Responses API

Responses API هي الواجهة الأحدث والموصى بها للمشاريع الجديدة، وتدمج النص والأدوات في واجهة واحدة.

python
import os
from openai import OpenAI

client = OpenAI()  # يقرأ OPENAI_API_KEY

response = client.responses.create(
    model=os.environ["OPENAI_MODEL"],
    instructions="أنت مساعد دعم لشركة Mit AI. أجب بالعربية وباختصار.",
    input="ما هي خدماتكم؟",
)
print(response.output_text)

3. Chat Completions: الواجهة الكلاسيكية

ما زالت واسعة الاستخدام، وهي الصيغة التي تتبناها معظم الخوادم المتوافقة مع OpenAI (Ollama و vLLM وغيرها)، لذلك تبقى مفيدة إذا أردت التبديل بين المزوّدين بتغيير base_url فقط.

python
completion = client.chat.completions.create(
    model=os.environ["OPENAI_MODEL"],
    messages=[
        {"role": "system", "content": "أنت مساعد Mit."},
        {"role": "user", "content": "مرحباً"},
    ],
)
print(completion.choices[0].message.content)

4. البث المباشر

python
stream = client.chat.completions.create(
    model=os.environ["OPENAI_MODEL"],
    messages=[{"role": "user", "content": "اشرح RAG ببساطة"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

5. مخرجات منظمة (JSON) بدون تخمين

عندما تحتاج بيانات يقرأها كودك (استخراج اسم ورقم وتاريخ من رسالة)، لا تعتمد على "اطلب من النموذج إرجاع JSON". استخدم المخرجات المنظمة المرتبطة بمخطط، وتحقق من النتيجة بمكتبة مثل Pydantic.

python
from pydantic import BaseModel

class Lead(BaseModel):
    name: str
    email: str | None
    interest: str

completion = client.chat.completions.parse(
    model=os.environ["OPENAI_MODEL"],
    messages=[
        {"role": "system", "content": "استخرج بيانات العميل المحتمل."},
        {"role": "user", "content": "أنا سارة، مهتمة بروبوت دردشة لمتجري. sara@example.com"},
    ],
    response_format=Lead,
)
lead = completion.choices[0].message.parsed

6. استدعاء الدوال (Function Calling)

كما في Claude، تصف دوالك بمخطط JSON، فيقرر النموذج متى يطلب استدعاءها، وتنفذها أنت وتعيد النتيجة. المبدأ واحد عبر المزوّدين، وهو ما يسهّل بناء طبقة موحدة.

python
tools = [{
    "type": "function",
    "function": {
        "name": "get_order_status",
        "description": "حالة الطلب برقمه",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]
completion = client.chat.completions.create(
    model=os.environ["OPENAI_MODEL"], messages=messages, tools=tools
)
calls = completion.choices[0].message.tool_calls or []

7. التضمينات للبحث الدلالي و RAG

python
emb = client.embeddings.create(
    model="text-embedding-3-small",
    input=["كيف أحجز استشارة؟", "سياسة الاسترجاع"],
)
vectors = [item.embedding for item in emb.data]
# خزّنها في pgvector أو Qdrant أو Pinecone ثم ابحث بأقرب تشابه

التفاصيل المعمارية لهذا النمط في كيف تحسّن بحث موقعك بالذكاء الاصطناعي وفي صفحة Enterprise RAG.

8. التكلفة والموثوقية

  • التسعير بالرموز (tokens): سجّل usage لكل طلب وضع سقفاً شهرياً في لوحة التحكم.
  • حدود المعدل (429): أعد المحاولة بتأخير تصاعدي مع عشوائية (exponential backoff + jitter). الـ SDK الرسمي يعيد المحاولة تلقائياً لأخطاء معينة.
  • المهلات: حدد timeout معقولاً، وفكّر بالبث للردود الطويلة.
  • الخصوصية: لا ترسل بيانات شخصية غير ضرورية، وراجع سياسات الاحتفاظ بالبيانات في حسابك.
  • الإشراف: إن كان تطبيقك مفتوحاً للعامة فاستخدم أدوات الإشراف على المحتوى ورقابة المدخلات.

أسئلة شائعة

ما الفرق بين Responses API و Chat Completions؟

Responses API هي الواجهة الأحدث التي توحّد النص والأدوات والحالة، وChat Completions هي الواجهة الكلاسيكية المدعومة على نطاق واسع في الخوادم المتوافقة مع OpenAI.

كيف أحمي مفتاح OpenAI API؟

خزّنه في متغيرات البيئة على الخادم فقط، ولا تضعه في كود الواجهة الأمامية، وحدّد سقف إنفاق، ودوّره دورياً.

تريد تطبيق ذلك في مشروعك؟

فريقنا يساعدك من التخطيط حتى التشغيل. احجز استشارة مجانية.