SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor

كيف تخفّض تكلفة وكيل ذكاء اصطناعي يعمل دائماً على VPS

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

كيف تمنع وكيلاً للذكاء الاصطناعي يعمل باستمرار من رفع الفاتورة

تعتمد السيطرة على تكلفة وكيل الذكاء الاصطناعي على VPS (خادم افتراضي خاص) على وضع حدود قبل بدء الوكيل، لأن لا أحد يراقب العداد أثناء تشغيله. حدّد سقفاً لكل استجابة باستخدام max_tokens، وقيّد عدد تكرارات الحلقة في التعليمات البرمجية التي تكتبها، وخزّن الجزء الذي لا يتغير من المطالبة مؤقتاً، وسجّل أرقام استخدام كل استجابة لمعرفة المهمة التي تستهلك الموارد. يكون استئجار الخادم بسعر شهري ثابت. أما واجهة برمجة النماذج فتُحاسب بحسب عدد الرموز، ويمكن لحلقة غير خاضعة للمراقبة أن تستهلك الرموز بصمت وبسرعة.

يفترض هذا وجود وكيل مُنشأ مسبقاً يستدعي Messages API من جهاز تملكه. يشرح إنشاء وكيل للذكاء الاصطناعي باستخدام Claude على VPS المكونات اللازمة لذلك.

لماذا يختلف نمط التكلفة في الوكيل غير المراقَب

تتضمن الجلسة التفاعلية شخصاً. عندما يسلك النموذج مساراً خاطئاً أو يقرأ سجلاً من 40,000 سطر، يوقفه الشخص الذي يراقبه. أما الوكيل غير المراقَب فلا يملك هذا المكبح؛ إذ يستمر في التشغيل حتى تنتهي الحلقة، ثم يشغّله المؤقت مرة أخرى.

التكرار هو العامل المضاعِف الذي يغفل عنه الناس. تعمل المهمة المجدولة كل خمس دقائق 288 مرة يومياً، وحوالي 8,640 مرة شهرياً. اضرب تكلفة التشغيل الواحد في هذا العدد. كثير من الوكلاء «الذين يعملون دائماً» لا يحتاجون إلى العمل باستمرار. بل يحتاجون إلى الاستجابة خلال عدد محدد من الدقائق، وهذا يتحقق من خلال جدولة.

يدفع الوكيل أيضاً مقابل أشياء لا تدفع مقابلها نافذة الدردشة.

  • تُرسل تعريفات الأدوات مع كل طلب. تكلف مطالبة النظام الخاصة باستخدام الأدوات 290 token في Claude Opus 4.8 مع tool_choice من auto أو none، و410 مع any أو tool. وتضيف أداة bash مقداراً إضافياً قدره 325 token. يضيف كل خادم MCP تربطه مخططاته إلى هذا الحجم، وMCP هو بروتوكول سياق النموذج.
  • نتائج الأدوات هي token للإدخال. يضع الأمر الذي يطبع 8,000 سطر هذه الأسطر الثمانية آلاف في الطلب التالي، وفي كل طلب لاحق ضمن تلك الدورة.
  • الصفحات التي يجلبها الوكيل هي token للإدخال. تحتوي صفحة ويب بمتوسط 10 kB تقريباً على 2,500 token، ويحتوي ملف PDF بحثي بحجم 500 kB تقريباً على 125,000 token. يقتصر max_content_tokens على اقتطاع النصوص، لأنّه «ينطبق على المحتوى النصي، وليس على المحتوى الثنائي مثل ملفات PDF». حدّد حجم ملف PDF باستخدام max_uses وallowed_domains بدلاً من ذلك.
  • تُحتسب عمليات البحث على الويب لكل عملية بحث، بسعر $10 لكل 1,000 عملية بحث، بغض النظر عن عدد النتائج التي تعود. لا تُحتسب تكلفة البحث الذي يفشل.

لا تكون أي من هذه العناصر مكلفة عند استخدامها مرة واحدة. لكنها تصبح مكلفة عند استخدامها 8,640 مرة.

السقوف الصارمة والسقوف المرنة تعالج مشكلتين مختلفتين

يُفرَض max_tokens. وهو حد صارم لإجمالي مخرجات الطلب الواحد، بما في ذلك التفكير ونص الاستجابة. لا ينشئ Claude مخرجات تتجاوز هذا الحد، ولا يستطيع النموذج رؤية قيمته. عند بلوغه، تظهر stop_reason: "max_tokens" وتُقتطع الاستجابة. وتكمن المشكلة بالنسبة إلى الوكلاء في أن كل طلب ضمن حلقة استخدام الأدوات يحمل قيمة max_tokens الخاصة به، لذلك يحدّ هذا السقف استجابة واحدة ولا يحدّ المهمة بأكملها. تؤدي عشر استدعاءات للأدوات بقيمة 4,000 إلى سقف قدره 40,000 رمز مميز للدور.

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

resp = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    betas=["task-budgets-2026-03-13"],
    output_config={"task_budget": {"type": "tokens", "total": 64000}},
    messages=messages,
)

"ميزانيات المهام تلميح مرن وليست حداً صارماً." قد يتجاوز Claude هذه الميزانية أثناء إجراء واحد، بينما يظل الحد المفروض على المخرجات هو max_tokens. الحد الأدنى المقبول لـtask_budget.total هو 20,000 رمز مميز، وإدخال قيمة أقل يعيد خطأ 400. تؤدي الميزانية الصغيرة جداً مقارنة بالعمل المطلوب إلى سلوك يشبه الرفض، لذلك يضيّق النموذج نطاق المهمة أو يتوقف مبكراً.

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

تتوفر ميزانيات المهام في الإصدار التجريبي على Claude Fable 5.1 وClaude Fable 5 وClaude Opus 5.5 وClaude Opus 5 وClaude Opus 4.8 وClaude Opus 4.7 وClaude Sonnet 5.5 وClaude Haiku 5.5. ويُدرج Claude Sonnet 5 وClaude Haiku 4.5 ضمن Not supported، ولا تنطبق ميزانيات المهام على Claude Code، لذلك تعتمد جلسة Claude Code المنفصلة في tmux على سلامة إدارة الجلسة بدلاً من ذلك.

يوجد السقف الثالث في Claude Console: امنح الوكيل مساحة عمل خاصة به، ثم عيّن لها حداً شهرياً للإنفاق وحدوداً لمعدل الطلبات في الدقيقة. لا يمكنك تعيين حد للإنفاق في Default Workspace، وتُطبَّق دائماً الحدود على مستوى المؤسسة. أضف إشعارات للإنفاق كي ينبهك بلوغ عتبة معينة قبل الوصول إلى السقف.

اختيار النموذج لكل مهمة، وما الذي يغيّره الجهد فعلياً

اختيار النموذج قرار خاص بكل مهمة. اعتباراً من October 2026، تبلغ التكلفة لكل مليون token، للإدخال ثم الإخراج: $10 و$50 لـClaude Fable 5.1 وFable 5، و$4 و$20 لـClaude Opus 5.5، و$5 و$25 لـClaude Opus 5 وOpus 4.8 وOpus 4.7، و$2 و$10 لـClaude Sonnet 5.5 وSonnet 5، و$0.10 و$0.50 لـClaude Haiku 5.5 للطلبات التي تصل إلى 100,000 token، و$0.50 و$2.50 لما يتجاوز ذلك، مع احتساب token المخزنة مؤقتاً ضمن العدد، و$1 و$5 لـClaude Haiku 4.5. طرحت Anthropic Sonnet 5 بهذا السعر أولاً كسعر تمهيدي، ثم جعلته السعر القياسي وألغت الزيادة المخطط لها إلى $3 و$15. لا تحتاج خطوة تقتصر على تصنيف أسطر السجل إلى Opus.

لا تعتمد أيضاً على الاستخدام المجاني لاستيعاب جدول عمل مزدحم. بالإضافة إلى الرصيد الصغير الذي تمنحه Claude API عند التسجيل، تتضمن خطط Claude Max وUltra وTeam رصيد API شهرياً: $100 في Max، و$200 في Ultra، وما يصل إلى $500 مجمّعة في Team، ويُجدَّد الرصيد في كل دورة فوترة. يمكنك المطالبة به بعد 7 أيام من الاشتراك في خطة مؤهلة، ولا تحتاج إلى وسيلة دفع. يغطي الرصيد Claude API وManaged Agents وAgent SDK وplayground، لكنه لا يغطي Claude Code، وينتهي في نهاية كل دورة من دون ترحيل إلى الدورة التالية. يُحتسب إنفاقه ضمن حد الإنفاق، وعند نفاده تتوقف الطلبات المدفوعة مسبقاً ما لم تكن المؤسسة تملك أيضاً أرصدة مشتراة. تُحاسِب المؤسسات التي تفوترها مبيعات Anthropic على الاستخدام الذي يتجاوز الأرصدة بالطريقة المعتادة.

الجهد هو العامل الثاني. يقبل output_config.effort القيم low وmedium وhigh وxhigh وmax، مع أن كل نموذج لا يدعم جميع المستويات. القيمة الافتراضية هي high في معظم النماذج، وmedium في Claude Opus 5.5 وClaude Haiku 5.5، ويعادل ضبط القيمة الافتراضية للنموذج صراحةً حذفها. لا يقلل الجهد المنخفض طول الاستدلال فقط؛ إذ توضح الوثائق أنه يجعل Claude ينفّذ استدعاءات أدوات أقل ويجمع عمليات متعددة في عدد أقل من الاستدعاءات. يكون التوفير أكبر في الوكيل، لأن تجنّب استدعاء أداة يعني عدم تنفيذ طلب كامل.

المشكلة أن الجهد يتعارض مع التخزين المؤقت. يؤدي تغيير القيمة العليا بين الطلبات إلى إبطال التخزين المؤقت للمطالبة. في المثال الموثق على Claude Opus 5.5، أبلغ الطلب 2 عن cache_read_input_tokens: 3546. غيّر الطلب 3 الجهد من medium، وهو الإعداد الافتراضي لذلك النموذج، إلى low، وأبلغ عن cache_creation_input_tokens من أصل 3546 وcache_read_input_tokens من أصل 0. لذلك غيّر الجهد الأعلى بين أعباء العمل، ولا تغيّره داخل محادثة واحدة مخزنة مؤقتاً. توجد طريقتان لتغيير العمق من دون كسر التخزين المؤقت. في Claude Fable 5.1 وOpus 5.5 وOpus 5 وSonnet 5.5 وHaiku 5.5، يضبط تغيير الجهد لكل رسالة، وهو تغيير تجريبي عبر الرأس mid-conversation-output-config-2026-07-01، مستوى جديداً ويُبقي البادئة المخزنة مؤقتاً كما هي. في أي نموذج، يمكنك توجيه النموذج داخل المطالبة بدلاً من ذلك؛ فسطر مثل "أجب مباشرة من دون مداولة." في أحدث رسالة من المستخدم يُبقي نقاط الفصل السابقة كما هي. لكن في Claude Haiku 5.5، لا تؤدي هذه العبارة إلى تقليل التفكير بشكل موثوق.

تُحاسَب token الخاصة بالتفكير وفق أسعار الإخراج وتُحتسب ضمن max_tokens، ولذلك تعني الإجابة المبتورة غالباً أن التفكير استهلك الميزانية. اقرأ usage.output_tokens_details.thinking_tokens لمعرفة العدد. يوضّح ما الذي يملأ فعلياً فاتورة Claude من token كيفية احتساب العداد.

خزِّن البادئة الثابتة، وتوقّف عن إفسادها عن طريق الخطأ

تُكلّف كتابة ذاكرة التخزين المؤقت 1.25 ضعف سعر الإدخال الأساسي في ذاكرة التخزين المؤقت لخمس دقائق، وضعفين في ذاكرة التخزين المؤقت لساعة واحدة. في معظم النماذج، تكلّف قراءة ذاكرة التخزين المؤقت 0.1 ضعف السعر، لذلك «تبدأ ذاكرة التخزين المؤقت بتحقيق فائدة بعد قراءة واحدة في مدة 5 دقائق (كتابة بتكلفة 1.25x)، أو بعد قراءتين في مدة ساعة واحدة (كتابة بتكلفة 2x)». وتكون القراءات أرخص في النماذج الأحدث: 0.05 ضعف السعر في Claude Opus 5.5 وClaude Sonnet 5.5، و0.025 ضعف السعر في Claude Fable 5.1.

توضح جملة واحدة سبب ملاءمة ذلك لوكيل يعمل باستمرار: «تُحدَّث ذاكرة التخزين المؤقت دون تكلفة إضافية كلما استُخدم المحتوى المخزَّن». إذا شغّلت مهمة كل دقيقتين مقابل ذاكرة التخزين المؤقت لخمس دقائق، فستُبقي البادئة دافئة طوال اليوم بكتابة واحدة.

ثلاث طرق لفقدان ذاكرة التخزين المؤقت دون ملاحظة ذلك.

بادئة تتغير. «تُنشأ البادئات المخزَّنة مؤقتاً بالترتيب التالي: tools، ثم system، ثم messages.» يؤدي أي تغيير في بايت سابق ضمن هذا الترتيب إلى إبطال كل ما يليه، كما يؤدي تعديل تعريفات الأدوات إلى إبطال ذاكرة التخزين المؤقت بالكامل. الخطأ الشائع الذي يسببه المستخدم لنفسه هو وضع طابع زمني أو معرّف تشغيل في مطالبة النظام: عندها تحمل كل طلب بادئة مختلفة، وتكتب إدخالاً جديداً بتكلفة 1.25x، ولا تستعيد أي شيء من الذاكرة. الدليل هو ظهور usage.cache_read_input_tokens بقيمة 0 في استدعاءات تبدو متطابقة. انقل النص المتغير إلى أحدث رسالة للمستخدم.

بادئة قصيرة جداً. لكل نموذج حد أدنى لطول المحتوى القابل للتخزين مؤقتاً. إذا كان الطلب أقصر من هذا الحد، فستتم معالجته دون تخزين مؤقت، و«لن يُعاد أي خطأ». تشمل القيم 512 رمزاً في Claude Fable 5.1 وFable 5 وOpus 5.5 وOpus 5 وSonnet 5.5 وHaiku 5.5، و1,024 في Claude Opus 4.8 وClaude Sonnet 5، و4,096 في Claude Haiku 4.5. لذلك قد يؤدي نقل مهمة من Sonnet 5 إلى Haiku 4.5 إلى إيقاف التخزين المؤقت بصمت.

محادثة تتجاوز نافذة البحث السابق. «يبلغ نطاق البحث السابق 20 كتلة». يفحص النظام 20 موضعاً كحد أقصى عند كل نقطة توقف، ثم يتوقف. في المثال الموثق، إذا كانت هناك جولة تحتوي على 35 كتلة مع نقطة توقف عند الكتلة 35، فسيفحص النظام الكتل من 35 إلى 16. أما إدخال الجولة السابقة عند الكتلة 15 فيقع خارج النافذة، ولذلك لا تحدث مطابقة. يتجاوز وكيل يضيف عدة كتل لاستخدام الأدوات ونتائجها في كل جولة هذا الحد البالغ 20 كتلة خلال جولتين أو ثلاث. لديك أربع نقاط توقف لكل طلب، لذلك خصص إحداها للرسائل الحديثة.

أرسل كل ما يمكنه الانتظار إلى Batches API

تُحتسب كل الاستخدامات بنسبة 50% من أسعار API القياسية، سواء للإدخال أو للإخراج. وتتم معالجة الدفعات بشكل غير متزامن، إذ تنتهي معظم الدفعات خلال أقل من 1 ساعة، وتتوفر النتائج عند اكتمال كل الطلبات أو بعد 24 ساعة، أيهما يأتي أولاً. هذا هو الوضع المعتاد، لكنه غير مضمون.

استطلع processing_status بشكل متكرر حتى تصبح قيمته ended. لا تُحتسب رسوم على الطلبات التي تُرجع errored أو canceled أو expired. توجد ملاحظة مهمة إذا كنت تعتمد على حد أقصى للإنفاق: قد تتجاوز الدفعات قليلاً حد الإنفاق الذي تم تكوينه لمساحة العمل لديك.

يمكن جمع الخصومات. وبما أن الدفعة قد تستغرق أكثر من 5 دقائق، توصي الوثائق باستخدام ذاكرة التخزين المؤقت لمدة ساعة للدفعات التي تشترك في السياق. لذلك قسّم العمل: أي شيء ينتظره شخص أو webhook يجب أن يبقى في المسار المباشر، بينما يُرسل الملخص الليلي أو تصنيف سجلات الأمس إلى دفعة بنصف السعر.

سجّل حقول الاستخدام في كل استجابة في مخزن خاص بك

لا يمكنك إسناد تكلفة لم تسجّلها. كل استجابة توضّح التكلفة التي تكبّدتها.

u = resp.usage
row = {
    "job": job_name,
    "model": resp.model,
    "uncached_input": u.input_tokens,
    "cache_write": u.cache_creation_input_tokens,
    "cache_read": u.cache_read_input_tokens,
    "output": u.output_tokens,
    "stop_reason": resp.stop_reason,
}

أضف صفاً واحداً لكل استدعاء إلى ملف JSON-lines، واربطه باسم المهمة. بعد أسبوع، ستعرف أي المهام تنفق وأيها تبدو مشغولة فقط. راقب cache_read: فوجود عمود من الأصفار هو أكثر أخطاء التكلفة شيوعاً في الوكيل المستضاف ذاتياً.

من السهل إساءة قراءة أحد الحقول. يحسب input_tokens الرموز التي تأتي بعد آخر نقطة تخزين مؤقت فقط، لذلك يكون الحجم الفعلي للمطالبة هو total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens. إذا أبلغ وكيل عن input_tokens: 400 مع مطالبة كبيرة، فهذا لا يعني أن التكلفة منخفضة؛ فالجزء المتبقي أتى من ذاكرة التخزين المؤقت.

أحصِ الرموز قبل الإرسال. عدّ الرموز مجاني، لذلك استخدم count_tokens لرفض مرفق يتجاوز الحجم المسموح بدلاً من دفع التكلفة لاكتشاف ذلك. النتيجة تقديرية، لذا أعد القياس لكل نموذج، ولا تعِد استخدام عدد محسوب باستخدام أداة ترميز من مورّد آخر. تستخدم نماذج Claude 4.7 والإصدارات الأحدث، ومنها Claude Fable 5 وClaude Sonnet 5، أداة ترميز أحدث «تُنتج رموزاً أكثر بنسبة 30% تقريباً للنص نفسه». أما Claude Sonnet 4.6 والإصدارات الأقدم، ومنها Claude Haiku 4.5، فتستخدم أداة الترميز السابقة.

للحصول على العرض المعتمد، تعرض Usage and Cost API القديمة الاستخدام على https://api.anthropic.com/v1/organizations/usage_report/messages والتكلفة على https://api.anthropic.com/v1/organizations/cost_report. ويتطلب كلاهما مفتاح إدارة (sk-ant-admin01-...) بوصفه x-api-key: $ANTHROPIC_ADMIN_KEY مع anthropic-version: 2023-06-01. يقبل تقرير الاستخدام bucket_width=1d وgroup_by[]=model وapi_key_ids[]=. أما تقرير التكلفة فمتاح على أساس يومي فقط، ويجمع البيانات وفق workspace_id أو description. وهناك قيد واحد: «واجهة Admin API غير متاحة للحسابات الفردية».

يمثل معامل api_key_ids[] هذا حيلة منخفضة التكلفة لإسناد الاستخدام: امنح كل مهمة مفتاح API خاصاً بها، وصفِّ تقرير الاستخدام باستخدام api_key_ids[]، ثم قسّمه حسب كل مفتاح باستخدام group_by[]=api_key_id. عامل التصفية جمع، أما بُعد التجميع فمفرد. احتفظ بالمفاتيح في البيئة بدلاً من تضمينها في التعليمات البرمجية، كما يفعل تطبيق Claude API أول على VPS في التعامل معها.

ضع حداً للتكرار، فلا شيء آخر سيفعل ذلك

عدد التكرارات المحدود ليس اختيارياً هنا. الحلقة من إنشائك، ولذلك فالعداد من مسؤوليتك:

for step in range(MAX_STEPS):          # MAX_STEPS = 12, never "while True"
    resp = client.messages.create(...)
    if resp.stop_reason != "tool_use":
        break
else:
    log.warning("job %s hit MAX_STEPS=%d, giving up", job_name, MAX_STEPS)

لا يطبّق أيٌّ من الحدّين أعلاه هذا الأمر نيابةً عنك: إذ يحدّ max_tokens استجابةً واحدة، ولا يُبلَّغ النموذج إلا بميزانية المهمة. لمعرفة حدود الجلسة المستضافة، راجع حد Claude لاستدعاءات الأدوات ضمن دورة واحدة. الحلقة التي كتبتها بنفسك لا تتضمن آلية إيقاف احتياطية مماثلة حتى تضيفها.

أضف آلية إيقاف ثانية خارج العملية. شغّل المهمة من مؤقّت systemd بدلاً من تشغيل عملية دائمة، وحدد لوحدة الخدمة مهلة زمنية فعلية. تكون مهمة المؤقّت عادةً Type=oneshot، وRuntimeMaxSec= «لا يكون له أي تأثير على خدمات Type=oneshot»، لذا اضبط TimeoutStartSec=600 هناك. استخدم RuntimeMaxSec=600 فقط مع وحدة Type=simple. في كلتا الحالتين، تُنهى العملية المتوقفة بعد عشر دقائق بدلاً من استمرارها حتى تلاحظ المشكلة. يشرح تشغيل برنامج كخدمة ومؤقّت systemd ملفات الوحدات نفسها. اقرأ ما نفّذته إحدى التشغيلات باستخدام journalctl -u triage-agent.service --since "1 hour ago".

حدّد عدد المحاولات أيضاً. لا تُحتسب طلبات API الفاشلة، لكن الطلب الذي كان يسير نحو النجاح يُحتسب إذا قطع عميلك الاتصال أو انتهت المهلة. تستحق الاستجابة 429 أو 500 بضع محاولات مع التراجع التدريجي. أما الاستجابة 400 فلا تستحق أي محاولة، لأن الطلب نفسه سيفشل بالطريقة نفسها.

يبدأ ضبط تكلفة وكيل الذكاء الاصطناعي بقراءة أرقامك

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

يفترض ذلك استخدام مفتاح API، لأن الوكيل برنامجك أنت ويستدعي Messages API. أما في عملك التفاعلي الخاص، فتوضّح خطة Claude المناسبة لطريقة عملك جانب الاشتراك. تحقّقت من كل سعر وحد هنا مقابل وثائق Anthropic في أكتوبر 2026، لذلك أعد قراءة صفحة الأسعار قبل إعداد الميزانية.

FAQ

ما تكلفة تشغيل وكيل ذكاء اصطناعي يعمل باستمرار على VPS؟

هناك فاتورتان، ويمكن التنبؤ بواحدة منهما فقط. سعر الخادم ثابت شهرياً. أما واجهة برمجة تطبيقات النموذج فتحاسبك حسب عدد الرموز، لذلك تساوي التكلفة ما يستهلكه تشغيل واحد مضروباً في عدد مرات التشغيل. سجّل usage من تشغيل فعلي واحد، ثم اضربه في جدول التشغيل.

ما الفرق بين max_tokens وميزانية المهمة؟

يُفرَض max_tokens ولا يراه النموذج. فهو يحدّد مخرجات طلب واحد، بما في ذلك التفكير، وعند بلوغه تحصل على stop_reason: "max_tokens". أما ميزانية المهمة فمختلفة: يُبلَّغ النموذج بعددها، ويضبط حلقة تشغيل الوكيل وفقاً لها، لكن «ميزانيات المهام تلميح مرن وليست حداً صارماً»، ويظل الحد المفروض هو max_tokens.

لماذا تكون cache_read_input_tokens صفراً دائماً لدى وكيلي؟

لأن البادئة تتغير بين الطلبات، أو لأنها قصيرة جداً بحيث لا يمكن تخزينها مؤقتاً. السبب المعتاد هو إدراج طابع زمني أو معرّف تشغيل داخل مطالبة النظام: إذ تُحدَّد ذاكرة التخزين المؤقت وفق البادئة، لذلك يؤدي أي تغيّر في بايت واحد إلى إبطال كل ما بعدها. ويؤدي تغيير تعريفات الأدوات أو قيمة effort ذات المستوى الأعلى إلى النتيجة نفسها. وإذا لم يكن ذلك هو السبب، فالمشكلة في الحجم، لأن المطالبات الأقصر لا تُخزَّن مؤقتاً ولا يُعاد أي خطأ.

كيف أوقف وكيلاً للذكاء الاصطناعي عن الدخول في حلقة لا نهائية؟

احسب عدد التكرارات في كود الحلقة، وأوقفها عند حد أقصى ثابت، لأن max_tokens يحد استجابة واحدة، بينما ينفّذ الوكيل استجابات كثيرة. أضف حداً زمنياً فعلياً خارج العملية: شغّل المهمة من مؤقت systemd واضبط TimeoutStartSec= في وحدة oneshot، أو RuntimeMaxSec= في وحدة simple، حتى تُنهى العملية المتوقفة وفق الجدول. حدّد عدد محاولات إعادة التنفيذ أيضاً، لأن الطلب الذي ينجح بعد انتهاء مهلة عميلك يظل محسوب التكلفة.

هل يمكنني تعيين حد للإنفاق على مفتاح Claude API واحد؟

حد الإنفاق الموثّق يُطبَّق على مستوى مساحة العمل، لا على مستوى المفتاح، لذلك امنح الوكيل مساحة عمل خاصة به، وحدّد فيها إنفاقه الشهري. لا يمكنك تعيين حد إنفاق لمساحة العمل الافتراضية. أضف إشعارات الإنفاق كي يصلك تنبيه عند بلوغ حد معيّن أولاً. ولتحديد مصدر الاستخدام، خصّص لكل مهمة مفتاحاً خاصاً بها، ثم اجمع تقرير الاستخدام باستخدام group_by[]=api_key_id.

هل كان هذا المقال مفيدًا؟