OpenRouter Blog

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

أداة تنفيذ التعليمات البرمجية من جانب الخادم تُشغّل أوامر النموذج في بيئة الاختبار المعزولة (sandbox) الخاصة بالمزوّد أثناء طلب الـ API الخاص بك، بحيث لا تضطر إلى توفير حاوية أو تأمينها. تشغّل OpenAI وAnthropic وGoogle…

Diagram comparing where a command runs in two setups. In the hosted tool call row, your app sends a request with tools to the model, the model emits a shell call, OpenRouter runs it in a sandbox, the sandbox returns stdout and the exit code to the model, and the model returns the answer to your app. In the self-managed sandbox row, the same request goes to the model, the model returns the tool call to your orchestration code, your code runs it in a sandbox built from your image, the sandbox retu
مصدر الصورة · OpenRouter Blog

لنفترض أنك تبني وكيلًا (agent) يجيب على أسئلة حول ملف CSV رفعه أحد العملاء. يحتاج النموذج إلى تشغيل Python للحصول على الإجابة. أين تُنفَّذ تلك التعليمة البرمجية؟

أحد الخيارات هو تشغيلها بنفسك. هذا يعني منصة sandbox مثل E2B أو Modal، أو حاوية خاصة بك على Docker، إضافة إلى عمل إبقائها بعيدة عن قاعدة بياناتك وعن الإنترنت، وتحديد زمن تشغيلها، وتحديث الصورة (image).

أداة تنفيذ التعليمات البرمجية من جانب الخادم هي الخيار الآخر. تضيف الأداة إلى طلب الـ API الخاص بك، ويقرر النموذج متى يحتاج إلى تشغيل شيء ما، ثم يُشغّل المزوّد الأوامر في بيئة الاختبار المعزولة الخاصة به ويعيد المخرجات إلى النموذج داخل الطلب نفسه. بيئة الاختبار المعزولة هنا تعني حاوية Linux معزولة ذات نظام ملفات خاص بها، وحد زمني، وبدون وصول إلى الشبكة افتراضيًا.

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

الخلاصة

  • أداة تنفيذ التعليمات البرمجية من جانب الخادم تُشغّل أوامر النموذج في بيئة الاختبار المعزولة الخاصة بالمزوّد أثناء طلب الـ API الخاص بك. لا توفّر حاوية ولا تُحدّثها ولا تؤمّنها.
  • تشغّل OpenAI وAnthropic وGoogle كل منها التعليمات البرمجية لنماذجها الخاصة. وتُشغّل أداتنا openrouter:shell الأوامر لأي نموذج على واجهتي Responses وMessages APIs، كما تفعل أداتنا openrouter:bash الشيء نفسه على واجهة Messages API فقط. كلتا الأداتين في مرحلة البيتا.
  • بيئة الاختبار المعزولة لدينا هي حاوية معزولة مرتبطة بحسابك ومساحة عملك، مع إيقاف الوصول الصادر إلى الشبكة افتراضيًا وحدود لكل أمر على زمن التشغيل وحجم المخرجات. يُحتسب زمن بيئة الاختبار المعزولة بسعر $0.0001 في الثانية بحد أدنى 30 ثانية لحاوية جديدة أو نائمة.
  • تبقى بيئة اختبار معزولة تُديرها بنفسك الخيار الصحيح لصورة أساس مخصصة، أو أعمال GPU، أو جلسة تمتد لساعات.

ماذا يعني تنفيذ التعليمات البرمجية من جانب الخادم

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

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

كيف يصبح استدعاء الأداة أمرًا يُنفَّذ

تنطبق هذه الخطوات على أي أداة تنفيذ تعليمات برمجية من جانب الخادم. وعندما يظهر اسم حقل، فهو الاسم الذي تستخدمه أداة shell لدينا.

  1. تُضمّن الأداة في tools array الخاص بالطلب.
  2. يقرر النموذج أنه يحتاج إلى تشغيل شيء ما ويُصدر استدعاءً يحمل أمر shell واحدًا أو أكثر.
  3. يقوم المزوّد بتنفيذ تلك الأوامر بالترتيب داخل حاوية معزولة (sandboxed).
  4. يُعاد إلى النموذج المخرجات القياسية والأخطاء القياسية ونتيجة كل أمر. والنتيجة إما رمز خروج أو مهلة زمنية.
  5. يقرأ النموذج النتائج ثم إما يجيبك أو ينفّذ المزيد من الأوامر ضمن الطلب نفسه.

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

نضع حدها الأقصى لتلك الحلقة. الحقل max_tool_calls يحدد عدد خطوات الأدوات الخادمية (server-tool) المسموح بها لكل طلب. في مرجعنا للأدوات الخادمية كونا كل من القيمة الافتراضية والقيمة القصوى عند 30.

كيف تختلف البيئة المعزولة المستضافة عن تلك التي تشغّلها بنفسك

تشغيل بيئتك المعزولة بنفسك يعني تبنّي الأجزاء التي كان المزوّد سيتولّاها لولا ذلك. فأنت تختار الصورة الأساسية (base image)، وتوفّر موارد الحوسبة، وتربط حزمة تطوير برمجيات (SDK) لبدء عمليات التشغيل وقراءة المخرجات، وتدير دورة حياة كل عملية تشغيل. كما تتولى أنت حدّ الأمان.

أما الأداة المستضافة فتقايض ذلك التحكم بمُدخل واحد في مصفوفة JSON. لن تحتاج إلى تحديد حجم الحاوية أو تحديثها أو تشغيلها. لقد بنينا openrouter:shell للحالة التي يكون فيها العمل عبارة عن حفنة قصيرة من الأوامر لكل طلب.

Diagram comparing where a command runs in two setups. In the hosted tool call row, your app sends a request with tools to the model, the model emits a shell call, OpenRouter runs it in a sandbox, the sandbox returns stdout and the exit code to the model, and the model returns the answer to your app. In the self-managed sandbox row, the same request goes to the model, the model returns the tool call to your orchestration code, your code runs it in a sandbox built from your image, the sandbox retu

من يقدّم تنفيذ الأكواد المستضاف اليوم

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

تشغّل OpenAI صدفة (shell) مستضافة لنماذج OpenAI

مختبر OpenAI للأبحاث أداة shell يشغّل الأوامر في حاوية تديرها OpenAI، عبر واجهة Responses API. توثّق OpenAI بيئة التشغيل المستضافة كـ Debian 12 مع دليل عمل افتراضي هو /mnt/data. تُنفَّذ الأوامر بدون sudoولجلسات TTY التفاعلية غير مدعومة. تشمل اللغات المثبتة مسبقًا المدرجة في الوثائق Python 3.11 وNode.js 22.16 وJava 17 وPHP 8.2 وRuby 3.1 وGo 1.23.

الحاويات المستضافة لا تملك وصولاً صادراً للشبكة افتراضياً. لتمكين ذلك، يقوم مسؤول المؤسسة بإعداد قائمة سماح في لوحة تحكم OpenAI وتقوم أنت بتعيين network_policy على بيئة الحاوية في الطلب. يمكن إعادة استخدام الحاوية عبر الطلبات عن طريق تمرير مُعرِّفها في container_reference البيئة، ويتم تحديد تاريخ انتهاء صلاحيتها عند إنشاء الحاوية. تمتلك OpenAI أيضًا ملفًا منفصلًا أداة مترجم الشيفرة البرمجية لغة Python.

أنثروبيك تشغّل Python وBash لنماذج Claude

الخاصة بـ Anthropic أداة تنفيذ الشيفرة يشغّل Python وBash في بيئة معزولة (sandbox) تديرها Anthropic، عبر واجهة Messages API. البيئة الموثّقة هي حاوية Linux x86_64 مزوّدة بـ Python 3.11، وذاكرة عشوائية بسعة 5 GiB، ومساحة عمل تخزينية بسعة 5 GiB، ومعالج واحد. الوصول إلى الإنترنت معطّل ولا يُسمح بأي اتصالات صادرة، لذا يعمل Claude بالمكتبات المثبتة مسبقًا ولا يمكنه تثبيت أي حزمة أثناء التشغيل.

ثلاثة إصدارات الأداة موجودة، وكل نموذج مدعوم يقبل الثلاثة جميعها. code_execution_20250825 يدعم أوامر Bash وعمليات الملفات. code_execution_20260120 يضيف حالة مفسّر بايثون (Python) التي تستمر بين الطلبات، وهو ما يعتمد على استدعاء الأدوات البرمجية من Anthropic وليس متاحًا على Claude Haiku 4.5. تنتهي صلاحية الحاويات بعد 30 يومًا من إنشائها. بعد حوالي 5 دقائق من عدم النشاط، تُؤخذ نقطة تحقق (checkpoint) للحاوية، ويعيد الطلب الذي يحتوي على معرّفها ضمن نافذة الـ 30 يومًا استعادتها.

جوجل تشغّل بايثون لنماذج Gemini

شركة جوجل أداة تنفيذ التعليمات البرمجية يشغّل Python في بيئة معزولة (sandbox) تديرها Google، ويُمكَّن عبر code_execution إدخال في أدوات الطلب. تنص الوثائق على أن النموذج يمكنه فقط توليد وتنفيذ Python، وأن بيئة الكود لها مدة تشغيل قصوى تبلغ 30 ثانية، وأنه لا يمكنك تثبيت مكتباتك الخاصة. تنشر Google قائمة المكتبات التي تتضمنها البيئة.

نُشغّل صَدَفة (shell) مُستضافة لأي نموذج

الأدوات الثلاث أعلاه تعمل كل منها مع نماذج شركة واحدة. أما أداتنا فتعمل مع أي نموذج على واجهتي Responses وMessages APIs، لأننا نشغّل بيئة الاختبار المعزولة (sandbox) على مستوى التوجيه وليس داخل مزوّد نموذج واحد.

نحن نوفر أداتين لتنفيذ الشيفرة البرمجية. openrouter:shell تحاكي شكل أداة الصدفة المستضافة من OpenAI وتعمل على كلا واجهة برمجة التطبيقات للاستجابات (Responses API) وعبر Messages API. openrouter:bash يحاكي شكل أداة bash من Anthropic ويعمل على Messages API فقط.

كلتا الأداتين في مرحلة بيتا، لذا قد تتغير واجهة API. التنفيذ في بيئة معزولة يعمل على نقطة النهاية العالمية openrouter.ai فقط. أما نقاط النهاية داخل المنطقة فلا توفر أداة الصدفة، ويرفض Chat Completions كلتيهما بخطأ 400 يذكر واجهات API التي تدعمها.

اضبط engine إلى openrouter على أي من الأداتين وستُنفَّذ الأوامر في بيئتنا المعزولة. القيمة الافتراضية لـ engine هي auto. بالنسبة إلى openrouter:shell، auto يحافظ على الصدفة المستضافة الأصلية لدى المزود حيث توجد ويوجه إلى بيئتنا المعزولة خلاف ذلك. بالنسبة إلى openrouter:bash، auto يُعيد استدعاء الأداة إلى تطبيقك لتنفيذه من جهة العميل، ولا يُنفَّذ أي شيء على خوادمنا.

تشغيل أمر في بيئتنا المعزولة

إليك طلب كامل يشغّل أمرين ويقرأ النتائج.

import os
import requests

response = requests.post(
    "https://openrouter.ai/api/v1/responses",
    headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
    json={
        "model": "anthropic/claude-sonnet-4.5",
        "input": "Run `cat /etc/os-release` and `python3 --version`, then tell me the OS and Python version in one sentence.",
        "tools": [
            {"type": "openrouter:shell", "parameters": {"engine": "openrouter"}}
        ],
    },
)

for item in response.json()["output"]:
    if item["type"] == "openrouter:shell":
        print(item["container_id"], item["action"]["commands"])
        for result in item["output"]:
            print(result["stdout"], result["outcome"])

نفّذنا هذا الطلب في 22 سبتمبر 2026. أرسل النموذج كلا الأمرين في استدعاء صدفة واحد، وعاد كل أمر بنتيجته الخاصة. يظهر المخرجات الكاملة لـ os-release على عدة أسطر وقد اقتُصرت هنا على أول سطرين.

{
  "type": "openrouter:shell",
  "container_id": "sess_art10-418b8597e044",
  "action": { "commands": ["cat /etc/os-release", "python3 --version"] },
  "output": [
    {
      "stdout": "PRETTY_NAME=\"Ubuntu 22.04.5 LTS\"\nNAME=\"Ubuntu\"\n",
      "stderr": "",
      "outcome": { "type": "exit", "exit_code": 0 }
    },
    {
      "stdout": "Python 3.11.14",
      "stderr": "",
      "outcome": { "type": "exit", "exit_code": 0 }
    }
  ]
}

أفادت البيئة المعزولة بأنها تعمل بنظام Ubuntu 22.04.5 LTS مع Python 3.11.14 في ذلك التاريخ. قد تتغير صورة بيئة التشغيل، لذا اقرأ الإصدار من الحاوية بدلاً من تثبيته في الكود. يغطي مرجع أدوات الخادم المعاملات المتبقية.

أدوات SDK للوكلاء التي تغلّف بيئة معزولة عنك

إذا كنت تبني على SDK لوكيل بدلاً من استدعاء API مباشرةً، فبعض حزم SDK تغلّف إحدى هاتين الأداتين.

يصدر OpenAI Agents SDK ميزة CodeInterpreterToolالذي يشغّل التعليمات البرمجية في بيئة OpenAI المعزولة (sandbox)، و ShellToolالذي يعمل إما في بيئة التشغيل المحلية لديك أو في حاوية تستضيفها OpenAI حسب الطريقة التي تضبط بها بيئته. تحقق من الوضع الذي ضبطته قبل أن تفترض أن أمرًا ما نُفّذ عن بُعد. من جهتنا، openrouter:shell هو عنصر في مصفوفة tools مثل أي عنصر آخر، لذا يدخل في حلقة OpenRouter Agent SDK بنفس الطريقة التي يدخل بها في طلب مباشر.

ما الذي ما زال بحاجة إلى بيئة معزولة خاصة بك

الأداة المستضافة تناسب الأعمال القصيرة والمحدودة مثل تشغيل سكربت، أو تحويل ملف، أو التحقق من نتيجة. أما أي شيء يتطلب صورة أساسية محددة أو وحدة معالجة رسومات (GPU) فيقع خارج الأدوات المستضافة الأربع جميعها ويحتاج إلى منصة بيئة معزولة تديرها بنفسك.

المقارنة

كل خانة من خلايا الأدوات المستضافة مأخوذة من وثائق المورّد نفسه المرتبطة أعلاه، باستثناء خانة بيئة التشغيل الخاصة بـ OpenRouter، وهي ما أبلغت عنه البيئة المعزولة عندما شغّلنا الطلب أعلاه. ويصف عمود الإدارة الذاتية بيئة معزولة تشغّلها بنفسك وليس منصة بعينها.

OpenRouterOpenAIAnthropicGoogleمُدارة ذاتيًا
من يشغّلهانحنOpenAIAnthropicGoogleأنت
النماذجأي نموذج على واجهتي Responses و Messagesنماذج OpenAIنماذج Claudeنماذج Geminiأي نموذج
واجهات برمجة التطبيقاتResponses و Messages. أما openrouter:bash فهو على Messages فقطResponsesالرسائلواجهة Gemini API البرمجيةأي
اللغاتأي أمر shell. تم الإبلاغ عن Ubuntu 22.04.5 مع Python 3.11.14 في 22 سبتمبر 2026أوامر shell على Debian 12. لغات Python وNode.js وJava وPHP وRuby وGo مثبتة مسبقًاPython وBashبايثون فقطأي شيء تبنيه
نظام الملفاتنظام ملفات حاوية خاص، محدود بحسابك ومساحة عملك. تُحفظ الملفات تحت المجلد الرئيسي بعد كل أمرنظام ملفات حاوية خاص بمجلد عمل افتراضي هو /mnt/data. تُحذف البيانات عند انتهاء صلاحية الحاويةحاوية معزولة مع 5 GiB من مساحة تخزين مساحة العمل. تنتهي صلاحية الحاويات بعد 30 يوماً من إنشائهاغير موثّقأي شيء يحدده صورتك ونقاط التحميل الخاصة بك
الشبكة الصادرةمطفأ افتراضياً. قائمة سماح تصل إلى 50 اسم مضيف على المنفذين 80 و443مطفأ افتراضياً. قائمة سماح على مستوى المؤسسة بالإضافة إلى network_policyمعطّلغير موثّقيتوقف على تهيئتك
تثبيت الحزم في وقت التشغيلنعم، مع مضيفي الحزم الموجودين في قائمة السماحنعم، مع مضيفي الحزم الموجودين في قائمة السماحلالانعم
استمرارية الجلسةحاوية مرتبطة بمعرّف الحاوية. تدخل في وضع السكون بعد 5 دقائق من عدم النشاط. تُحفظ الملفات المحفوظة لمدة 30 يوماً بعد آخر استخداميُعاد استخدام الحاوية بالمعرّف عبر container_reference. تُحدد مدة الصلاحية على الحاويةتُستعاد الحاوية بالمعرّف خلال 30 يوماً من الإنشاء. تستمر حالة المفسّر على code_execution_20260120 وما بعده مع الاستدعاء البرمجي للأدواتحد أقصى لمدة التنفيذ 30 ثانية لكل عملية. استمرارية الحالة بين الطلبات غير موثّقةحسب الحد الأقصى لكل منصة
نموذج التكلفةرموز الاستدلال بالإضافة إلى وقت الصندوق الرملي بسعر $0.0001 في الثانية، مع حد أدنى 30 ثانية للحاوية الجديدة أو الساكنةغير مذكور في وثائق أداة الصدفة1,550 ساعة مجانية لكل مؤسسة شهريًا، ثم 0.05 دولار لكل ساعة لكل حاوية، بحد أدنى 5 دقائق لكل تنفيذبلا رسوم إضافية. يتم فوترة الشيفرة المولّدة والمخرجات كرموز (tokens)وقت الحوسبة أثناء تشغيل بيئة الاختبار المعزولة

ما يفرضه صندوق الحماية لدينا

الهدف من صندوق الحماية هو أنك لا تحتاج إلى الوثوق بالنموذج. لا يمكن لأمر لم تقصده أن يصل إلى الشبكة أو إلى حاوية أي شخص آخر، ويتوقف عند حد صارم لمدة تشغيله وكمية ما يطبعه. كل ما في هذا القسم يصف صندوق الحماية لدينا. ويبين الجدول أعلاه أين تختلف الأداة الثلاث الأخرى.

الحدود المطبقة على كل أمر

نشغّل كل أمر في حاوية معزولة، منفصلة عن البنية التحتية التي تخدم طلبك وعن جهازك، ومحدودة النطاق بحسابك ومساحة عملك. أنت تحدد سقوفك الخاصة باستخدام timeout_ms لمدة التشغيل القصوى للأمر، و max_output_length للكمية القصوى التي يمكنه طباعتها. timeout_ms قيمته الافتراضية 120,000 ms ولا يمكن أن تتجاوز 300,000 ms. max_output_length قيمته الافتراضية 16,384 حرفًا لكل تدفق ولا يمكن أن تتجاوز 65,536. وتُرفض استدعاء الصدفة الذي يحتوي على أكثر من 100 أمر.

الوصول إلى الشبكة الصادر مغلق إلا إذا قمت بتشغيله. تحققنا من ذلك في 22 سبتمبر 2026 بإرسال طلب بدون network_policy وطلب من النموذج جلب https://example.com مع curl، مع طباعة رمز حالة HTTP فقط والاستسلام بعد 5 ثوانٍ. طبع الأمر 000، وهي ما يطبعه curl عندما لا تصل أي استجابة، وخرج برمز 28، وهو curl timeout.

{ "stdout": "000", "stderr": "curl: (28) Failed to connect to example.com port 443 after 5206 ms: Connection timed out", "outcome": { "type": "exit", "exit_code": 28 } }

لفتح الشبكة، حدد network_policy قائمة سماح تضم حتى 50 اسم مضيف أو نمط glob. المنافذ 80 و443 فقط هي القابلة للوصول، وتُثبَّت السياسة عند بدء تشغيل الحاوية. pip install يحتاج إلى كليهما pypi.org و files.pythonhosted.org في قائمة السماح.

حقن التعليمات وما تحده صندوق الحماية

إعطاء النموذج صدفة يعرّضك لـ حقن التعليمات. إذا قرأ وكيلك صفحة ويب، أو تذكرة دعم، أو ملفًا رفعه أحد، يمكن لمهاجم أن يخفي تعليمات في ذلك النص تطلب من النموذج تجاهل تعليماتك وتشغيل شيء آخر.

الحدود أعلاه تنطبق سواء كان النموذج يتبع تعليماتك أو تعليمات المهاجم. لا يمكن للأمر الذي يُشغَّل بموجب تعليمة محقونة أن يصل إلى أي مضيف خارج network_policy الذي قمت بتكوينه، ولا يمتلك أي وصول إلى الشبكة إطلاقًا عندما تترك السياسة مطفأة. لا يمكنه الوصول إلى حاوية مستأجر آخر، ويتوقف عند المهلة الزمنية نفسها. قائمة السماح توسّع ما يمكن للأمر المحقون الوصول إليه، و allowed_domains: ["*"] يسمح بمخرج غير مقيّد، لذا حافظ على قائمة السماح عند المضيفين التي تحتاجها المهمة فقط.

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

  • الإجراء Flag يسجّل الاكتشاف ويحوّل الطلب دون تغيير.
  • الإجراء Redact يستبدل الجزء المتطابق بـ [PROMPT_INJECTION] ويحوّل الطلب المنقّح.
  • الإجراء Block يرفض الطلب برمز 403 قبل أن يصل إلى النموذج.

عندما ينطبق أكثر من إجراء وقائي واحد، يُتّبع الإجراء الأكثر صرامة، وذلك بالترتيب: block ثم redact ثم flag. الكشف ليس شاملاً وقد ينتج نتائج إيجابية خاطئة، لذا قِس معدّل التطابق مقابل حركة مرورك الخاصة في وضع flag قبل أن تفرض redact أو block. يمكنك الإبلاغ عن نتيجة إيجابية خاطئة من صفحة Logs.

ما تكلّفك البيئة المعزولة المستضافة من الثواني والدولارات

تضيف البيئة المعزولة المستضافة ثوانٍ إلى الطلب وتجعلك بلا بنية تحتية لإدارتها. كما تمنحك حاوية يمكنك العودة إليها.

تبقى الملفات بين الطلبات

تُنفَّذ الأوامر في /workspace/home، ونحفظ الملفات المتغيّرة تحت ذلك الدليل بعد كل أمر. أرسل معرّفاً ثابتاً لـ session_id، أو اضبط معرّف حاوية في إعداد environment للأداة، وسيصل كل طلب يحمل ذلك المعرّف إلى الحاوية نفسها والملفات نفسها. يجب أن يتكوّن session_id من حروف وأرقام و _و -فقط. أي معرّف يحتوي على حرف آخر يُتجاهل، ونختار الحاوية وكأنك لم ترسل أي session_id، أي أن الأحدث container_id في المحادثة المعاد تشغيلها إن وُجد، وإلا فحاوية جديدة لذلك الطلب. عندما يكون طول session_id أكثر من 20 حرفاً، نستخدم آخر 20 حرفاً فقط، لذا يتشارك معرّفان طويلان ينتهيان بالطريقة نفسها في الحاوية ذاتها. يمكن أن يتكوّن معرّف container_reference من 1 إلى 40 حرفاً من المجموعة نفسها ولا يُقتطع، فاستخدمه عندما تحتاج إلى أن يكون المعرّف دقيقاً. أكّدنا ذلك في 22 سبتمبر 2026 بكتابة ملف في طلب واحد وقراءته مجدداً في طلب ثانٍ شارك نفس session_id.

يخضع الحاوية للسكون بعد 5 دقائق من عدم النشاط، ولا يمكن ضبط مدة عدم النشاط هذه. السكون لا يحذف الملفات. عند وصول طلب لاحق يحمل المعرف نفسه، تبدأ بيئة معزولة جديدة وتحمّل الملفات المحفوظة أولاً. العمليات الجارية ومتغيرات البيئة وحالة النظام المثبتة لا تُستعاد، لذا تعامل مع الحاوية المستيقظة كأنها جهاز جديد ملفاتك موجودة عليه. تُحفظ الملفات لمدة 30 يوماً بعد آخر استخدام للحاوية. ولإخراج مُخرج (artifact) منها، GET /api/v1/containers/{container_id}/files يسرد ما أنتجته الحاوية، ونقطة النهاية promote endpoint تنسخ الملف إلى مستندات مساحة العمل لديك، حيث لا تنتهي صلاحيته.

ما يمكنك مراجعته لاحقاً

تحمل كل نتيجة أداة shell في الاستجابة الأوامر التي نفذها النموذج، والمخرج القياسي (stdout) والخطأ القياسي (stderr) والنتيجة لكل أمر، حتى يتمكن تطبيقك من تسجيلها بنفس الطريقة التي يسجّل بها بقية أجزاء الاستجابة. تسجيل المدخلات والمخرجات (Input & Output Logging) يخزّن مطالباتك ومخرجات completion على OpenRouter لمراجعتها في صفحة السجلات (Logs)، وتظهر اكتشافات الضوابط الوقائية هناك أيضاً. للمراقبة في بيئة الإنتاج، Broadcast يبثّ آليات التتبع إلى منصة مراقبة خارجية مع اكتمال الطلبات.

إذا اخترت التوجيه داخل المنطقة، فأداة shell غير متاحة ويتم تخطي تسجيل المدخلات والمخرجات (Input & Output Logging) حتى لو كان مفعّلاً. يدعم Broadcast التوجيه داخل المنطقة، وتُضبط كل جهة وجهة بمناطق البيانات التي تستقبل منها آليات التتبع.

تكلفة الرحلة الذهاب والإياب عليك

الطلب الذي ينفّذ أمراً في بيئة معزولة يستغرق وقتاً أطول من الطلب نفسه دون ذلك. في مجموعة طلبات فردية أرسلناها في 22 سبتمبر 2026، عاد طلب بدون أداة shell في حوالي 2 ثانية، وعادت الطلبات التي أجرت استدعاء shell واحداً في 8 إلى 21 ثانية حسب النموذج. هذه عينات فردية من جلسة واحدة، وليست قياساً معيارياً. خصّص عدة ثوانٍ من الحمل الزائد لكل استدعاء shell.

تُحتسب فترة البيئة المعزولة بسعر 0.0001 دولار لكل ثانية. يبدأ العدّاد عندما ينفّذ الطلب أول أمر في البيئة المعزولة ويتوقف عند اكتمال الاستجابة. يُحتسب للطلب الذي يبدأ حاوية جديدة أو ساكنة حد أدنى قدره 30 ثانية، أما الطلبات اللاحقة التي تعيد استخدام الحاوية نفسها الدافئة فتدفع وقتها المقيس فقط. الطلب المذكور أعلاه بدأ حاوية جديدة، وأبلغ كائن الاستخدام الخاص به عن server_tool_cost قدره 0.003، وهو الحد الأدنى البالغ 30 ثانية. أما الحاوية الساكنة بين الطلبات فلا تُحتسب عليها أي تكلفة.

غيّر النموذج دون لمس كود أدواتك

استبدل النموذج وسيبقى تعريف أداتك كما هو.

أرسلنا جسم طلب واحداً ست مرات في 22 سبتمبر 2026، بتغيير حقل model فقط، وطلبنا من كل نموذج تشغيل python3 -c "print(sum(range(1, 101)))" في البيئة المعزولة. أجرى كل نموذج استدعاء shell واحداً وأعاد 5050.

النموذجالنتيجة
openai/gpt-5.4-mini5050
google/gemini-3.5-flash5050
anthropic/claude-haiku-4.55050
deepseek/deepseek-v3.25050
moonshotai/kimi-k2.65050
qwen/qwen3-coder5050

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

عندما تريد منصة بيئة معزولة (sandbox) خاصة بك

اختر منصة بيئة معزولة مخصصة عندما تحتاج إلى شيء لا توفره الأداة المستضافة. Modal توثّق بيئات معزولة مبنية من صور مخصصة بعمر قابل للتهيئة يصل إلى 24 ساعة وموارد GPU. Daytona توثّق بيئات معزولة تُنشأ من صورة حاويات عامة، بما في ذلك بيئات معزولة مزودة بـ GPU. E2B توثّق بيئات معزولة تعمل حتى 24 ساعة على خطتها Pro و1 ساعة على خطتها الأساسية، مع إمكانية الإيقاف المؤقت والاستئناف لأحمال العمل الأطول.

الخلاصة

للأوامر القصيرة المحدودة داخل طلب نموذج، استخدم أداة مستضافة. تضيف إدخالًا واحدًا إلى tools المصفوفة وتحصل على حاوية معزولة مع إيقاف الوصول إلى الشبكة الصادرة، وتدفع تكلفة الاستدلال بالإضافة إلى ثمان تشغيل البيئة المعزولة. احسب بضع ثوانٍ من النفقات الإضافية لكل استدعاء لـ shell وأعد استخدام الحاوية حيثما أمكن.

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

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

هل هناك أداة shell مستضافة ومعزولة يمكن للنماذج استدعاؤها مباشرة أثناء الطلب؟

نعم. أداة الخادم openrouter:shell لدينا تمنح النموذج بيئة Linux معزولة تعمل على بنيتنا التحتية أثناء الطلب، على كل من واجهتي Responses API و Messages API. عيّن engine إلى openrouter وستُنفَّذ الأوامر في حاوية معزولة، مع إرجاع كل من المخرجات القياسية stdout والأخطاء القياسية stderr ونتيجة الإنهاء أو انتهاء المهلة لكل أمر إلى النموذج. تقدم كل من OpenAI و Anthropic و Google أداة تنفيذ تعليمات برمجية مستضافة لنماذجها الخاصة.

هل يمكنني أن أمنح النموذج بيئة shell معزولة يمكنه تنفيذ أوامر فيها؟

نعم. أضف {"type": "openrouter:shell", "parameters": {"engine": "openrouter"}} إلى مصفوفة tools في طلب Responses أو Messages API. عندها يمكن للنموذج إصدار استدعاءات shell، ونحن ننفّذ الأوامر في حاوية معزولة ونعيد مخرجات كل أمر إلى النموذج. الحاوية لا تملك وصولاً شبكياً صادراً إلا إذا قمت بإعداد قائمة سماح network_policy allowlist.

ما هي حزم SDK أو المنصات التي توفر تنفيذ الأكواد من جهة الخادم جاهزةً للاستخدام؟

أداتنا openrouter:shell من نوع server tool تنفّذ الأوامر لأي نموذج على واجهتي Responses وMessages API، وأداتنا openrouter:bash تفعل الشيء نفسه على واجهة Messages API فقط. كلٌّ من OpenAI وAnthropic وGoogle ينفّذ الأكواد لنماذجه الخاصة عبر أداة shell في Responses API، وأداة تنفيذ الأكواد، وأداة تنفيذ الأكواد في Gemini API. حزمة OpenAI Agents SDK تغلّف الأدوات المستضافة من OpenAI كـ CodeInterpreterTool و ShellTool. أما E2B وModal وDaytona فهي منصات sandbox تدمجها وتشغّلها بنفسك بدلاً من كونها أدوات يشغّلها مزوّد داخل استدعاء الـAPI.

ما هو أفضل sandbox لوكلاء الذكاء الاصطناعي؟

يعتمد ذلك على مدة تشغيل العمل ومقدار التحكم الذي تحتاجه في بيئة التشغيل. بالنسبة للأوامر القصيرة داخل طلب واحد، فإن أداة مستضافة مثل openrouter:shell تعني ألا تشغّل أي بنية تحتية. أما إذا احتجت صورة أساسية مخصصة، أو وصولاً إلى GPU، أو جلسة تمتد لساعات، فإن منصة sandbox تديرها بنفسك، مثل Modal أو Daytona، تمنحك هذا التحكم.

كيف تعزل (sandbox) وكيل ذكاء اصطناعي؟

تشغّل أوامر الوكيل في بيئة معزولة عن أنظمتك الخاصة وتحدّد ما يمكن لهذه البيئة الوصول إليه. مع الأداة المستضافة يقوم المزوّد بذلك. على OpenRouter، الحاويات معزولة عن بنيتنا التحتية وعن جهازك، ومحدودة النطاق بحسابك ومساحة عملك، ووصول الشبكة الصادر معطّل افتراضياً، وكل أمر محدود بـ timeout_msثوانٍ، والمخرجات محدودة بـ max_output_length. وتضيف إجراءات حماية مساحة العمل كشف حقن الأوامر (prompt-injection) أمام النموذج.

ما هي أداة الذكاء الاصطناعي المعزولة (sandboxed)؟

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

المراجع

المصدر الأصلي

OpenRouter Blog

ملاحظات المحتوى

النشر الأصلي والحقوق تعود إلى المصدر.

ترجمة آلية · يُرجى الرجوع إلى الأصل