حساب تكاليف API والتنبؤ بها
اكتبوا أداة مساعدة في Python تقدّر التكلفة قبل إرسال الطلب من خلال عدّ tokens وتطبيق تسعير كل نموذج، كي لا تتلقّوا فاتورة غير متوقعة.
حساب تكاليف API والتنبؤ بها درس مجاني في AI Engineering Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Engineering Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Engineering Academy 4 دروس في المجموع.
لماذا يُعد التنبؤ بالتكلفة مهمًا
قد تكون تكاليف واجهة API لتطبيقات النماذج اللغوية الكبيرة مرتفعة على نحو مفاجئ عند التوسع. فالاستعلام الواحد الذي يبدو رخيصًا، بتكلفة 0.002 دولار، يصبح 200 دولار عند تشغيله 100,000 مرة. ومن دون التنبؤ بالتكلفة ومراقبتها، قد تولّد ميزات الذكاء الاصطناعي فواتير سحابية غير متوقعة تتجاوز إجمالي إنفاقك على البنية التحتية بكثير.
والخبر الجيد هو أن تكاليف النماذج اللغوية الكبيرة يمكن التنبؤ بها بالكامل قبل إرسال الطلب: فأنت تعرف النموذج، ويمكنك عدّ رموز الإدخال باستخدام tiktoken، كما يمكنك تقدير رموز الإخراج استنادًا إلى إعداد max_tokens أو إلى متوسطات الاستخدام السابقة. ويمنع إدراج التنبؤ بالتكلفة في تطبيقك منذ اليوم الأول مفاجآت الفوترة.
هيكل أسعار OpenAI
تفرض OpenAI رسومًا منفصلة على رموز الإدخال ورموز الإخراج، وتكون تكلفة الإخراج عادةً أعلى بمقدار 3 إلى 4 أضعاف. وتختلف الأسعار باختلاف النموذج. وفيما يلي دليل تقريبي لعام 2025، مع ضرورة مراجعة صفحة الأسعار الحالية دائمًا لأنها تتغير:
- gpt-4o-mini: نحو 0.15 دولار لكل مليون رمز إدخال، ونحو 0.60 دولار لكل مليون رمز إخراج
- gpt-4o: نحو 2.50 دولار لكل مليون رمز إدخال، ونحو 10.00 دولارات لكل مليون رمز إخراج
- text-embedding-3-small: نحو 0.02 دولار لكل مليون رمز
الفرق في التكلفة بين النماذج هائل: إذ إن gpt-4o أغلى بنحو 17 مرة من gpt-4o-mini لكل رمز إدخال. اختيار النموذج هو أداتك الأقوى للتحكم في التكلفة؛ فابدأ دائمًا بأرخص نموذج يفي بمتطلبات الجودة لديك.
دالة مساعدة لتقدير التكلفة
أنشئ أداة لتقدير التكلفة تستدعيها قبل إرسال أي طلب. فهي تعدّ رموز الإدخال باستخدام tiktoken، وتقدّر رموز الإخراج من معلمة max_tokens، وتبحث عن سعر كل نموذج، ثم تُرجع التكلفة المقدّرة بالدولار. استدعِ هذه الأداة أثناء التطوير وسجّل النتائج لتكوّن حدسًا حول تكلفة أنواع الاستعلامات المختلفة.
import tiktoken
# Prices per million tokens as of early 2025
PRICING = {
'gpt-4o': {'input': 2.50, 'output': 10.00},
'gpt-4o-mini': {'input': 0.15, 'output': 0.60},
'gpt-4-turbo': {'input': 10.00, 'output': 30.00},
'text-embedding-3-small': {'input': 0.02, 'output': 0.0},
}
def estimate_cost(messages, model='gpt-4o-mini', expected_output_tokens=500):
enc = tiktoken.encoding_for_model(model)
input_tokens = sum(
len(enc.encode(m.get('content', ''))) + 4
for m in messages
) + 3
if model not in PRICING:
raise ValueError(f'Unknown model: {model}')
rates = PRICING[model]
input_cost = (input_tokens / 1_000_000) * rates['input']
output_cost = (expected_output_tokens / 1_000_000) * rates['output']
total = input_cost + output_cost
print(f'Model: {model}')
print(f'Input tokens: {input_tokens} (${input_cost:.6f})')
print(f'Est. output tokens: {expected_output_tokens} (${output_cost:.6f})')
print(f'Estimated total: ${total:.6f}')
return totalتتبّع التكاليف الفعلية من استجابات واجهة API
بعد كل استدعاء لواجهة API، يحتوي كائن الاستجابة على أعداد الرموز الفعلية المستخدمة. استخرج هذه الأعداد لتسجيل التكاليف الحقيقية ومقارنتها بتقديراتك. ومع مرور الوقت، يوضح الفرق بين رموز الإخراج المقدّرة والفعلية مدى دقة توقعك للاستخدام، كما تمنحك السجلات تفصيلًا للتكلفة حسب الميزة أو شريحة المستخدمين.
import openai
client = openai.OpenAI()
PRICING = {
'gpt-4o-mini': {'input': 0.15, 'output': 0.60},
}
def chat_with_cost_tracking(model, messages):
response = client.chat.completions.create(
model=model, messages=messages
)
usage = response.usage
rates = PRICING.get(model, {'input': 0, 'output': 0})
actual_cost = (
(usage.prompt_tokens / 1_000_000) * rates['input'] +
(usage.completion_tokens / 1_000_000) * rates['output']
)
print(f'Input: {usage.prompt_tokens} tokens')
print(f'Output: {usage.completion_tokens} tokens')
print(f'Total: {usage.total_tokens} tokens')
print(f'Actual cost: ${actual_cost:.6f}')
return response, actual_costتوقّع التكاليف الشهرية
بمجرد معرفة متوسط تكلفة الطلب وحجم الطلبات المتوقع، يصبح توقّع التكاليف الشهرية أمرًا مباشرًا. أنشئ جدول بيانات لنموذج التكلفة أو برنامجًا نصيًا بسيطًا بلغة Python يتيح لك اختبار افتراضات مختلفة: ماذا لو تضاعف عدد المستخدمين النشطين يوميًا؟ ماذا لو أضفنا ميزة تُجري 3 استدعاءات لواجهة API لكل إجراء من المستخدم بدلًا من استدعاء واحد؟
def project_monthly_cost(
avg_cost_per_request,
requests_per_day,
days=30
):
daily_cost = avg_cost_per_request * requests_per_day
monthly_cost = daily_cost * days
print(f'Avg cost/request: ${avg_cost_per_request:.6f}')
print(f'Requests/day: {requests_per_day:,}')
print(f'Daily cost: ${daily_cost:.2f}')
print(f'Monthly cost: ${monthly_cost:.2f}')
# Growth scenarios
for multiplier in [2, 5, 10]:
scaled = monthly_cost * multiplier
print(f' At {multiplier}x traffic: ${scaled:.2f}/month')
# Example: customer support bot
project_monthly_cost(
avg_cost_per_request=0.002, # 2 cents per support query
requests_per_day=5000
)أثر اختيار النموذج في التكلفة
الأداة الأكبر لخفض التكلفة هي استخدام أرخص نموذج يفي بمتطلبات الجودة لديك. ففي العديد من المهام، يقدّم gpt-4o-mini أداءً مماثلًا لـgpt-4o، لكن بتكلفة أقل بنحو 17 مرة. وقبل اعتماد النموذج الأقوى افتراضيًا، اختبر النموذج الأرخص على مهمتك المحددة، وانتقل إلى النموذج الأغلى فقط إذا انخفضت الجودة عن الحد الذي حددته.
وتكون استراتيجية التوجيه متعددة المستويات أكثر فاعلية: صنّف الطلبات الواردة حسب التعقيد، ووجّه الاستعلامات البسيطة إلى نماذج رخيصة والمعقدة إلى نماذج غالية. وحتى توجيه 70% من حركة المرور إلى النموذج الرخيص و30% إلى النموذج الغالي يوفّر نحو 70% من تكاليف الذكاء الاصطناعي.
طول المطالبة والتكلفة
كل رمز مميّز في طلبكم يكلّف مالًا. فطلب النظام المطوّل الذي يمكن اختصاره من دون فقدان المعنى يزيد مباشرةً فاتورة واجهة API لديكم مع كل طلب. قيسوا عدد الرموز المميّزة في طلباتكم، وابحثوا عن فرص لتقليص الصياغة. وبالمثل، يمكن غالبًا استبدال أمثلة few-shot الطويلة بنظيرات أقصر من دون التضحية بالدقة.
في أنظمة RAG، يكون السياق المسترجَع غالبًا أكبر جزء من الطلب. إن إعادة 10 مقاطع كبيرة عندما تكفي 3 مقاطع أصغر مختارة بعناية تهدر الرموز المميّزة مع كل استعلام. اضبطوا عملية الاسترجاع لتقليل السياق الزائد مع زيادة الصلة إلى أقصى حد.
التجميع لتحقيق الكفاءة من حيث التكلفة
توفّر OpenAI واجهة Batch API التي تعالج الطلبات بشكل غير متزامن بخصم قدره 50% من السعر القياسي. إذا لم تكن حالة الاستخدام لديكم حساسة لزمن الاستجابة — مثل معالجة المستندات، أو مهام التحليل الليلية، أو إنشاء المحتوى بالجملة — فيمكن لواجهة Batch API خفض تكاليفكم إلى النصف مع تغييرات بسيطة في الشيفرة.
تُرسَل الطلبات المجمّعة في ملفات JSONL، وتُعالَج خلال 24 ساعة، ثم تُسترجَع النتائج من واجهة API. وهذا مثالي لخطوط المعالجة المسبقة التي تعمل وفق جدول زمني ولا تحتاج إلى استجابات في الوقت الفعلي.
import openai
import json
client = openai.OpenAI()
# Create batch request file
requests = [
{'custom_id': f'doc-{i}',
'method': 'POST',
'url': '/v1/chat/completions',
'body': {
'model': 'gpt-4o-mini',
'messages': [{'role': 'user', 'content': f'Summarize document {i}'}],
'max_tokens': 200
}}
for i in range(100)
]
# Write to JSONL
with open('/tmp/batch_input.jsonl', 'w') as f:
for req in requests:
f.write(json.dumps(req) + '\n')
# Upload and submit (50% off list price)
print('Would submit batch for 100 documents at 50% discount')
# batch_file = client.files.create(file=open('/tmp/batch_input.jsonl','rb'), purpose='batch')
# batch = client.batches.create(input_file_id=batch_file.id, endpoint='/v1/chat/completions', completion_window='24h')تعيين حدود الإنفاق
اضبطوا دائمًا حدودًا للإنفاق لمنع التكاليف الخارجة عن السيطرة. في لوحة تحكم OpenAI، يمكنكم تعيين حدود إنفاق شهرية توقف الوصول إلى واجهة API عند بلوغ الحد. عيّنوا حدًا صارمًا عند أقصى مبلغ إنفاق مقبول لديكم، وحدًا مرنًا عند 80% من تلك القيمة لتلقي تحذير عبر البريد الإلكتروني قبل بلوغ الحد الصارم.
وفي شيفرة التطبيق، طبّقوا ميزانية لكل مستخدم أو لكل ميزة، مع تتبعها في قاعدة البيانات. تحقّقوا من الميزانية قبل كل استدعاء لواجهة API، وأعيدوا خطأً إذا استُنفدت. يمنع ذلك مستخدمًا واحدًا خارجًا عن السيطرة أو خللًا في مهمة مجمّعة من استهلاك حصتكم الشهرية بالكامل خلال ساعات.
التخزين المؤقت لتجنب استدعاءات API المكررة
أرخص استدعاء لواجهة API هو الاستدعاء الذي لا تُجرونه أصلًا. طبّقوا التخزين المؤقت على مستوى التطبيق لتقديم الطلبات المتطابقة من ذاكرة التخزين المؤقت بدلًا من استدعاء واجهة API مرة أخرى. حتى ذاكرة Redis المؤقتة البسيطة، التي تستخدم تجزئة SHA256 للموجّه كمفتاح، يمكنها إلغاء جزء كبير من الاستدعاءات المكررة في تطبيق قيد التشغيل.
يكون التخزين المؤقت مؤثرًا بشكل خاص في حالة التضمينات: إذ ينبغي تضمين النص نفسه مرة واحدة فقط. خزّنوا التضمينات في قاعدة بيانات المتجهات مع النص الأصلي كمفتاح، وتحقّقوا من وجود تضمين سابق قبل استدعاء واجهة embeddings API. وفي خط أنابيب RAG، تُحسَب تضمينات المستندات مرة واحدة عند الفهرسة، ثم يُعاد استخدامها لكل استعلام يسترجعها.
import hashlib
import json
# Simple in-memory cache (use Redis in production)
_cache = {}
def cached_completion(client, model, messages, **kwargs):
cache_key = hashlib.sha256(
json.dumps({'model': model, 'messages': messages}).encode()
).hexdigest()
if cache_key in _cache:
print('Cache HIT - no API call made')
return _cache[cache_key]
response = client.chat.completions.create(
model=model, messages=messages, **kwargs
)
_cache[cache_key] = response
print('Cache MISS - API call made')
return responseإنشاء لوحة لمراقبة التكاليف
في بيئة الإنتاج، تحتاجون إلى رؤية تكاليف الذكاء الاصطناعي مقسّمة حسب الميزة والمستخدم والنموذج. أنشئوا لوحة للتكاليف عبر تسجيل عدد الرموز المميّزة لكل استدعاء لواجهة API والبيانات الوصفية المرتبطة به (معرّف المستخدم، واسم الميزة، والنموذج) في قاعدة بيانات للسلاسل الزمنية. ثم اجمعوا البيانات للإجابة عن أسئلة مثل: ما الميزة التي تقود معظم الإنفاق؟ هل يتسبب المستخدمون الأكثر نشاطًا في تكاليف غير متناسبة؟ هل تتجه تكلفة كل استعلام إلى الارتفاع بعد تغيير الموجّه؟
تُعد هذه الرؤية ضرورية لاتخاذ قرارات التحسين القائمة على البيانات بدلًا من التخمين بشأن مواضع خفض التكاليف. تكتشف معظم الشركات أن 20% من ميزاتها مسؤولة عن 80% من إنفاقها على الذكاء الاصطناعي، وأن تحسين هذه الميزات يحقق أثرًا كبيرًا يفوق حجمها.
تحقق سريع
اختبروا مدى فهمكم لمفاهيم هندسة الذكاء الاصطناعي التي تناولها هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن: تكاليف واجهة API يمكن التنبؤ بها قبل الإرسال عبر عدّ رموز الإدخال باستخدام tiktoken وتقدير رموز الإخراج، وأن اختيار النموذج هو العامل الأكبر في التكلفة — إذ يمكن أن يكون gpt-4o-mini أرخص بـ 17 مرة من gpt-4o للمهام المناسبة، وأن التخزين المؤقت والتجميع وحدود الإنفاق تمنع التكاليف الخارجة عن السيطرة في بيئة الإنتاج. سنستكشف بعد ذلك استراتيجيات إدارة المحادثات الطويلة التي تتجاوز نافذة السياق.
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «حساب تكاليف API والتنبؤ بها» مجاني؟
نعم — نص درس «حساب تكاليف API والتنبؤ بها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Engineering Academy، انتقل إلى CoddyKit PRO. تتضمن دورة AI Engineering Academy 4 دروس في المجموع.
ماذا ستتعلم في «حساب تكاليف API والتنبؤ بها»؟
اكتبوا أداة مساعدة في Python تقدّر التكلفة قبل إرسال الطلب من خلال عدّ tokens وتطبيق تسعير كل نموذج، كي لا تتلقّوا فاتورة غير متوقعة. تتمرن على AI Engineering Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Engineering Academy؟
لا تُشترط خبرة سابقة. AI Engineering Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «حساب تكاليف API والتنبؤ بها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Engineering Academy هذا؟
نعم. كل درس في AI Engineering Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هو Token؟
- نوافذ السياق: الحجم والتداعيات
- حساب تكاليف API والتنبؤ بها
- استراتيجيات البقاء ضمن حدود السياق