الانتقال إلى المحتوى الرئيسي

اختيار النموذج

يمكن أن يؤثر اختيار النموذج الصحيح بشكل كبير على التكلفة والجودة.

توصيات بناءً على المهمة

المهمةالنماذج الموصى بهاالسبب
أسئلة وأجوبة بسيطةgpt-4o-mini, gemini-2.5-flashسريع، رخيص، وجيد بما يكفي
الاستنتاج المعقدo3, claude-opus-4-5, deepseek-r1منطق وتخطيط أفضل
البرمجةclaude-sonnet-4-5, gpt-4o, deepseek-v3.2محسّن للكود
الكتابة الإبداعيةclaude-sonnet-4-5, gpt-4oجودة نصوص أفضل
الرؤية/الصورgpt-4o, claude-sonnet-4-5, gemini-2.5-flashدعم أصلي للرؤية
سياق طويلgemini-2.5-pro, claude-sonnet-4-5نوافذ token تزيد عن مليون
حساس للتكلفةgpt-4o-mini, gemini-2.5-flash, deepseek-v3.2أفضل قيمة

فئات التكلفة

$$$$ Premium: o3, claude-opus-4-5, gpt-4o
$$$  Standard: claude-sonnet-4-5, gpt-4o
$$   Budget:   gpt-4o-mini, gemini-2.5-flash
$    Economy:  deepseek-v3.2, deepseek-r1

تحسين التكلفة

1. استخدم النماذج الأصغر أولاً

def smart_query(question: str, complexity: str = "auto"):
    """Use cheaper models for simple tasks."""

    if complexity == "simple":
        model = "gpt-4o-mini"
    elif complexity == "complex":
        model = "gpt-4o"
    else:
        # Start cheap, escalate if needed
        model = "gpt-4o-mini"

    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": question}]
    )
    return response

2. تعيين max_tokens

قم دائماً بتعيين حد معقول لـ max_tokens:
# ❌ Bad: No limit, could generate thousands of tokens
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Summarize this article"}]
)

# ✅ Good: Limit response length
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Summarize this article"}],
    max_tokens=500  # Reasonable limit for a summary
)

3. تحسين الـ Prompts

# ❌ Verbose prompt (more input tokens)
prompt = """
I would like you to please help me by analyzing the following text
and providing a comprehensive summary of the main points. Please be
thorough but also concise in your response. The text is as follows:
{text}
"""

# ✅ Concise prompt (fewer tokens)
prompt = "Summarize the key points:\n{text}"

4. تفعيل التخزين المؤقت (Caching)

استفد من التخزين المؤقت الدلالي (semantic caching):
# For repeated similar queries, caching provides major savings
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "What is machine learning?"}],
    temperature=0  # Deterministic = better cache hits
)

5. تجميع الطلبات المتشابهة (Batching)

# ❌ Many small requests
for question in questions:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": question}]
    )

# ✅ Fewer larger requests
combined_prompt = "\n".join([f"{i+1}. {q}" for i, q in enumerate(questions)])
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": f"Answer each question:\n{combined_prompt}"}]
)

تحسين الأداء

1. استخدم البث (Streaming) لتحسين تجربة المستخدم

يعمل البث على تحسين الأداء الملحوظ:
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a long essay"}],
    stream=True
)

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

2. اختر نماذج سريعة للاستخدام التفاعلي

حالة الاستخدامالموصى بهزمن الاستجابة (Latency)
واجهة الدردشةgpt-4o-mini, gemini-2.5-flash~200ms لأول token
الإكمال التلقائيclaude-haiku-4-5~150ms لأول token
المعالجة في الخلفيةgpt-4o, claude-sonnet-4-5~500ms لأول token

3. تعيين المهلات (Timeouts)

client = OpenAI(
    api_key="sk-your-key",
    base_url="https://api.lemondata.cc/v1",
    timeout=60.0  # 60 second timeout
)

الموثوقية

1. تنفيذ محاولات الإعادة (Retries)

import time
from openai import RateLimitError, APIError

def chat_with_retry(messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-4o",
                messages=messages
            )
        except RateLimitError:
            wait = 2 ** attempt
            print(f"Rate limited, waiting {wait}s...")
            time.sleep(wait)
        except APIError as e:
            if attempt == max_retries - 1:
                raise
            time.sleep(1)
    raise Exception("Max retries exceeded")

2. التعامل مع الأخطاء بسلاسة

from openai import APIError, AuthenticationError, RateLimitError

try:
    response = client.chat.completions.create(...)
except AuthenticationError:
    # Check API key
    notify_admin("Invalid API key")
except RateLimitError:
    # Queue for later or use backup
    add_to_queue(request)
except APIError as e:
    if e.status_code == 402:
        notify_admin("Balance low")
    elif e.status_code >= 500:
        # Server error, retry later
        schedule_retry(request)

3. استخدام نماذج احتياطية (Fallback Models)

FALLBACK_CHAIN = ["gpt-4o", "claude-sonnet-4-5", "gemini-2.5-flash"]

def chat_with_fallback(messages):
    for model in FALLBACK_CHAIN:
        try:
            return client.chat.completions.create(
                model=model,
                messages=messages
            )
        except APIError:
            continue
    raise Exception("All models failed")

الأمان

1. حماية مفاتيح API

# ❌ Never hardcode keys
client = OpenAI(api_key="sk-abc123...")

# ✅ Use environment variables
import os
client = OpenAI(api_key=os.environ["LEMONDATA_API_KEY"])

2. التحقق من مدخلات المستخدم

def validate_message(content: str) -> bool:
    """Validate user input before sending to API."""
    if len(content) > 100000:
        raise ValueError("Message too long")
    # Add other validation as needed
    return True

3. تعيين حدود لمفاتيح API

قم بإنشاء مفاتيح API منفصلة مع حدود إنفاق لـ:
  • التطوير/الاختبار
  • الإنتاج (Production)
  • التطبيقات المختلفة

المراقبة

1. تتبع الاستخدام

تحقق من لوحة التحكم بانتظام من أجل:
  • استخدام الـ token حسب النموذج
  • تفاصيل التكلفة
  • معدلات نجاح التخزين المؤقت (Cache hit rates)
  • معدلات الخطأ

2. تسجيل المقاييس الهامة

import logging

response = client.chat.completions.create(...)

logging.info({
    "model": response.model,
    "prompt_tokens": response.usage.prompt_tokens,
    "completion_tokens": response.usage.completion_tokens,
    "total_tokens": response.usage.total_tokens,
})

3. إعداد التنبيهات

قم بتكوين تنبيهات انخفاض الرصيد في لوحة التحكم لتجنب انقطاع الخدمة.

قائمة التحقق

  • استخدام النموذج المناسب لكل مهمة
  • تعيين حدود max_tokens
  • الـ Prompts موجزة
  • تفعيل التخزين المؤقت حيثما كان ذلك مناسباً
  • تجميع الطلبات المتشابهة
  • استخدام البث لتجربة مستخدم تفاعلية
  • استخدام نماذج سريعة للاستخدام في الوقت الفعلي
  • تكوين المهلات (Timeouts)
  • تنفيذ منطق محاولات الإعادة
  • تفعيل معالجة الأخطاء
  • تكوين النماذج الاحتياطية
  • وضع مفاتيح API في متغيرات البيئة
  • التحقق من صحة المدخلات
  • مفاتيح منفصلة للتطوير والإنتاج
  • تعيين حدود الإنفاق