الانتقال إلى المحتوى الرئيسي
بمجرد أن يكون لديك مساحة عمل ومفتاح API (انظر المقدمة)، فإن المطالبات هي الخطوة التالية. هذه الصفحة هي المرجع الكنسي لسجل المطالبات في OrcaRouter — ما هو، وكيفية استخدامه، وكيف يتكامل مع بقية البوابة.

1. ما هو سجل المطالبات

سجل المطالبات هو مكتبة قابلة لإعادة الاستخدام من رسائل النظام ضمن نطاق مساحة العمل. تحفظ مطالبة مرة واحدة، وتربط أي مفتاح API بها (أو ترسل prompt_ref مع كل طلب)، وتقوم البوابة بحقن تلك المطالبة كرسالة نظام قبل إعادة توجيه الطلب إلى النموذج الأعلى. تعديل مطالبة يحدّث كل مفتاح مرتبط بها في الاستدعاء التالي مباشرة. بدون إعادة نشر. بدون تغيير في الكود. بدون ترقية SDK. الربط يعيش في البوابة، وليس في تطبيقك. هذه هي نفس الفكرة التي ابتكرتها Langfuse وLangSmith، لكن مع فارق واحد: OrcaRouter هي طبقة التسليم. كود تطبيقك يستدعي /v1/chat/completions تماماً كما كان؛ تقوم البوابة بحل وحقن المطالبة. لا يوجد شيء لتثبيته في التطبيق. المطالبات ضمن نطاق مساحة العمل — كل عضو يرى مطالبات مساحة عمله؛ لا شيء يعبر حدود المستأجر.

2. البداية السريعة — اربط مطالبتك الأولى في 5 خطوات

1

أنشئ مطالبة

في وحدة التحكم، انتقل إلى /console/prompts وانقر New prompt. سمّها support-agent. الصق رسالة النظام:
“أنت وكيل دعم موجز لشركة Acme. أجب في جملتين أو أقل.”
احفظ — هذا ينشئ الإصدار 1.
2

اربط مفتاحاً

اذهب إلى /console/token، أنشئ أو حرّر مفتاح API، اختر support-agent من قائمة Prompt المنسدلة، وproduction من قائمة Label المنسدلة.
3

أرسل طلباً

باستخدام ذلك المفتاح، استدعِ OrcaRouter تماماً كما كان من قبل:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "What are your business hours?"}
    ]
  }'
تضيف البوابة رسالة النظام المحفوظة قبل إعادة التوجيه. يؤكد رأس الاستجابة X-Orca-Prompt: support-agent@production:v1 أي مطالبة تم حقنها.
4

حرّر المطالبة

عد إلى /console/prompts، حرّر support-agent — غيّر رسالة النظام. احفظ — يُنشأ الإصدار 2 تلقائياً؛ ولا يزال production يشير إلى v1.
5

رقّ الإصدار

انقر Labels على صف المطالبة، انقل production إلى v2، أكّد. الطلب التالي مباشرة عبر مفتاحك يحصل على رسالة نظام v2. بدون أي تغيير في التطبيق.
تلك هي القيمة الرئيسية.

3. المفاهيم: المطالبات، الإصدارات، التسميات

المفهومالتعريفقابلية التعديل
Promptإدخال مسمّى ضمن نطاق مساحة العمل. المعرّف: name (regex ^[a-zA-Z0-9._-]{1,128}$).قابلة للحذف الناعم (سلة 30 يوماً + تطهير).
Versionلقطة غير قابلة للتغيير من محتوى المطالبة. تُنشأ تلقائياً عند كل حفظ. المعرّف: int رتيب.غير قابلة للتغيير — لا تُعدَّل أبداً ولا تُعاد.
Labelمؤشر قابل للتحريك يشير إلى إصدار (مثل production → v7).يُحرَّك ذرياً عبر Promote؛ سجل التدقيق يسجل كل حركة.

التسميات المحجوزة

  • production مثبَّتة تلقائياً على v1 عند الإصدار الأول لكل مطالبة جديدة. تحريكها هو تبديل لحركة الإنتاج — لـ Owner فقط في RBAC.
  • latest تُدار تلقائياً بواسطة البوابة وتشير دائماً إلى أحدث إصدار. لا يمكنك تحريك latest يدوياً.
يمكنك إضافة تسميات مخصصة (مثل staging، canary، eu-prod) لاحقاً عبر مربع Labels وربط مفاتيح بها. حتى يتم تثبيت التسمية على إصدار، يفشل المفتاح المرتبط بـ name@<that-label> بأمان دون أي حقن.

لماذا هذا الشكل

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

4. أنماط الإنتاج: الترقية، التراجع، الإصدار المتدرج

الترقية

افتح Labels على صف المطالبة، اختر الإصدار الهدف، انقر Promote. حركة التسمية ذرية ومدققة (يُظهر سجل التدقيق من حرّك أي تسمية من أي إصدار إلى أي إصدار، ومتى). كل مفتاح مرتبط بـ name@<label> يلتقط الإصدار الجديد في الطلب التالي.
Owner فقط. الترقية هي تغيير لحركة الإنتاج ومقيّدة بـ Owners مساحة العمل (POST /api/prompt/:id/label). يرى Developers و Viewers قائمة التسميات وتاريخ التدقيق لكن بدون زر Promote؛ يُظهر المربع تلميحاً مضمناً “ask an Owner” حتى يكون التقييد ظاهراً وليس صامتاً.

التراجع

Restore على إصدار أقدم في درج History. ينسخ Restore محتوى ذلك الإصدار إلى الأمام كإصدار جديد (لا يتم تعديل التاريخ أبداً) ويحرّك latest إليه. لجعل حركة المرور تتراجع فعلياً، Promote التسمية ذات الصلة إلى الإصدار المستعاد.

الإصدار المتدرج

اربط مفاتيح canary بـ name@staging، ومفاتيح prod بـ name@production. رقّ staging إلى إصدار جديد، وراقب في Insights، ثم رقّ production عندما تكون راضياً. بدون تعديل المفاتيح، بدون نشر، بدون تحديث SDK.

تقسيم حركة المرور A/B

يحتوي مربع Label على مفتاح Split traffic. فعّله لتوجيه تسمية واحدة إلى إصدارات متعددة بتوزيع موزون (مثل v7: 60%، v8: 40%). التجميع حتمي لكل (workspace, token, request-id) بحيث تبقى محادثة واحدة في نفس الدلو عبر المحاولات.

5. القوالب: استبدال {{var}}

محتوى المطالبة يدعم العناصر النائبة {{var}} بأسلوب Mustache. تأتي قيم المستدعي من prompt_ref.variables (انظر §6). القواعد:
  • استبدال أحادي التمرير. تُبعث قيم المتغيرات كنص حرفي. لا يُعاد تقييمها كقالب — هذا يمنع حقن المطالبات حيث تحاول قيمة من المستدعي حقن توجيهات {{...}} إضافية.
  • العناصر النائبة غير المعروفة تبقى حرفياً. إذا لم يكن لعنصر نائب {{foo}} متغير مطابق، يُبعث الحرفي {{foo}} (ويُسجَّل تحذير). لا تفشل الطلبات أبداً بسبب متغير مفقود.
  • الوصول النقطي. {{user.name}} يجتاز الكائنات المتداخلة عندما يمرر المستدعي خريطة متداخلة.
  • الأقسام. {{#flag}}...{{/flag}} يعرض الكتلة فقط عندما يكون flag truthy. الأقسام المعكوسة ({{^flag}}...) تعرض الكتلة عندما يكون flag مفقوداً/falsy.
  • سقف حجم النص المُصيَّر: 256 KiB. إذا تجاوز النص النهائي المُصيَّر هذا الحد، يُتخطى الحقن بالكامل (لا تحمل الاستجابة رأس X-Orca-Prompt) ويُعاد توجيه الطلب دون تغيير — حماية من تضخّم المتغيرات.
يحترم المزودون الخارجيون صياغتهم الأصلية:
  • مطالبات Langfuse تستخدم نفس صياغة Mustache {{var}}.
  • مطالبات LangSmith تُعلن template_format: f-string | mustache في بيانها. تحترم البوابة هذا الإعلان.

6. التجاوز لكل طلب: prompt_ref

تجاوز أو اختر مطالبة لكل طلب بدون تغيير ربط المفتاح. أضف حقل prompt_ref على أعلى مستوى إلى جسم الطلب:
{
  "model": "openai/gpt-4o-mini",
  "messages": [
    {"role": "user", "content": "Who is on call tonight?"}
  ],
  "prompt_ref": {
    "name": "support-agent",
    "label": "staging",
    "variables": {
      "product_name": "Orca"
    }
  }
}
الأسبقية (الأعلى يفوز): prompt_ref الطلب > ربط المفتاح (الأصلي PromptId/PromptLabel أو PromptProviderId) > SystemPrompt القناة > لا شيء. prompt_ref تستهلكه البوابة وتُزيله قبل إعادة التوجيه للأعلى — لا يرى المزودون الصارمون أبداً الحقل غير المعروف. الشكل:
type PromptRef = {
  provider?: string;   // omit for native; or the provider's configured name for external
  name: string;        // required
  label?: string;      // mutually exclusive with `version`
  version?: string;    // pin to a specific version
  variables?: { [key: string]: string };  // mustache substitution
};
حالات الاستخدام: اختبار A/B لإصدارات مختلفة من المطالبة لنفس المفتاح؛ canary rollout من جانب المستدعي؛ استيفاء المتغيرات لكل طلب.

7. المطالبات بشكل المحادثة (system + few-shot)

معظم المطالبات هي سلسلة system واحدة. لكن أحياناً تريد أن تحقن البوابة قالباً أغنى — رسالة نظام بالإضافة إلى تسلسل few-shot من أدوار user/assistant. يدعم السجل ذلك باسم kind: 'chat'. تكشف نافذة Create prompt في وحدة التحكم عن مفتاح Text / Chat. عندما تختار Chat، يصبح محرر المحتوى قائمة من صفوف {role, content} (system، user، assistant) — أضف كم تشاء. عند الحفظ، تُحفظ الصفوف كـ messages_json. بعد الإنشاء، يكون kind غير قابل للتغيير. السلوك عند الحقن:
  • لا توجد رسالة نظام في الطلب ⇒ تضيف البوابة رسالة نظام القالب وتظهر أدوار few-shot للقالب قبل رسائل المستدعي.
  • توجد رسالة نظام في الطلب ⇒ يتبع الحقن الافتراضي لمحوّل التنسيق. بالنسبة لطلبات بشكل OpenAI، تُضاف رسالة نظام القالب في المقدمة؛ بالنسبة لطلبات بشكل Claude، تذهب رسالة نظام القالب إلى المعامل system الأصلي.
بالنسبة لمطالبات المحادثة الخارجية (Langfuse، LangSmith)، تسطّح البوابة القالب إلى نفس الشكل.

8. العلاقة مع بقية البوابة

السطحكيف يتكامل مع Prompts؟
Modelsالمطالبات محايدة للنموذج. نفس المطالبة تركب على GPT-5 وClaude وGemini. يختار التوجيه النموذج الأعلى بناءً على model الطلب ومجموعة المفتاح — Prompts لا تتجاوز ذلك أبداً.
Routingيعمل التوجيه أولاً؛ ومحلل المطالبات بعده. لذا تركب المطالبة المُحلَّلة أي قناة اختارها الموجه، بما في ذلك عبر سلسلة fallback.
GuardrailsGuardrails هي بوابة مستقلة تفحص وتُنقّح المحتوى. تحقن المطالبات رسالة نظام؛ لا تتجاوز السياسة. يمكن للطلب أن يحمل كليهما — guardrails تعمل دائماً.
API Keysيرتبط المفتاح بمطالبة عند تسمية (مثل support-agent@production). يعيش الربط على المفتاح في البوابة، لذا فإن ترقية إصدار جديد تنقل كل مفتاح على تلك التسمية دفعة واحدة.
Insightsيختم كل طلب prompt_id وprompt_version وprompt_label على صف سجله. تشرّح Insights حسب المطالبة — الاستخدام، معدل الأخطاء، الكمون، التكلفة.
يبقى الموجه السلطة الوحيدة للنموذج. حتى المطالبات الخارجية التي تُعلن config (Langfuse config.model، LangSmith model_config) — تتجاهل البوابة تلك الحقول. المطالبات تحقن نصاً فقط؛ اختيار النموذج هو وظيفة الموجه.

9. المصادر الخارجية: Langfuse، LangSmith، Generic HTTP

الاتحاد: اتصل بمصدر مطالبات خارجي مرة واحدة، ثم اربط المفاتيح أو أرسل prompt_ref مقابل الأسماء المستضافة هناك. المطالبات الأصلية والخارجية ترتبط وتُقدَّم بشكل مماثل — يختلف فقط backend المحلل. المصادر المدعومة:
  • LangfuseGET {base}/api/public/v2/prompts/{name}?label=...، مصادقة Basic من زوج public:secret الخاص بك. مطالبات نصية ومحادثة.
  • LangSmithGET {base}/commits/{owner}/{name}/{tag|hash|latest}، رأس x-api-key. تحلل البوابة البيان المسلسل لاستخراج messages/text وإعلان template_format. تُجرَّد الحقول المدمجة model_config / model_provider (دفاع متعمق: يقدم السجل نصاً فقط).
  • Generic HTTP — موصل مكوَّن من قِبَل المشغّل لأي سجل مطالبات يكشف عن استدعاء HTTP واحد لكل جلب. انظر أدناه للحقول القابلة للتكوين.
اتصل بمصدر تحت Integrations → Prompt sources (تكوين Owner فقط؛ تُخزَّن الأسرار مشفّرة، مقنّعة عند القراءة). يقوم تدفق Test & Save بحل تجريبي لمطالبة معروفة قبل الاستمرار ويرفض عناوين URL المحظورة بـ SSRF (loopback، خاصة، link-local، نطاقات metadata).

حقول موصل Generic HTTP

مصدر Generic HTTP هو محوّل “صِف استدعاء HTTP واحد وشكل استجابة واحد”. يُستخدم لمخازن المطالبات المستضافة ذاتياً وللمنصات الخارجية التي لا تحتاج تكامل backend خاص بها (PromptLayer، واجهات برمجة تطبيقات مخصصة بسيطة، إلخ). الحقول صغيرة عمداً — التدفقات متعددة الخطوات أو البروتوكولات الخاصة بالمزودين خارج النطاق.
الحقلالافتراضيما الذي يفعله
URL templaterequiredعنوان URL الكامل للطلب مع العناصر النائبة {name} / {label} / {version}. تستخدم العناصر النائبة في المسار PathEscape؛ وتستخدم العناصر النائبة في سلسلة الاستعلام QueryEscape بحيث لا يستطيع &/= في اسم مطالبة حقن معاملات استعلام إضافية.
HTTP methodGETGET أو POST. اختر POST عندما تتطلب المنصة جسم طلب.
Auth header nameAuthorizationرأس HTTP الذي يُرسل فيه السر. اضبط X-API-KEY (أو ما شابه) للمزودين الذين يستخدمون رأساً مخصصاً.
Auth scheme prefixBearer (مع مسافة لاحقة)السلسلة المضافة قبل السر في قيمة الرأس. اضبط فارغاً إذا توقعت المنصة مفتاح API خاماً، أو Token / بادئة مخصصة أخرى.
Body templateemptyPOST فقط. جسم الطلب الخام مع عائلتين من العناصر النائبة. Verbatim: {name} / {label} / {version} تستبدل القيمة الحرفية (استخدمها للأجسام form-encoded، XML، أو القالبية — التهرب على عاتقك). JSON-safe: {name_json} / {label_json} / {version_json} تستبدل بسلسلة JSON حرفية مقتبسة بالكامل (مثل "hello") — استخدمها داخل أجسام JSON بحيث لا يمكن لاسم مطالبة من جانب الطلب يحتوي " / \ / أحرف تحكم أن يحقن حقولاً شقيقة للأعلى.
Response JSON pathemptyمسار نقطي اختياري إلى JSON الاستجابة حيث تعيش حمولة المطالبة (مثل data.0.template.messages). فارغ = اكتشاف تلقائي لأشكال text / prompt / messages العليا.
مثال — توصيل PromptLayer يدوياً:
URL template:        https://api.promptlayer.com/rest/get-prompt-template?prompt_name={name}&label={label}&version={version}
HTTP method:         GET
Auth header name:    X-API-KEY
Auth scheme prefix:  (empty)
Body template:       (empty)
Response JSON path:  prompt_template.messages
Secret:              <your PromptLayer API key>

المرونة

  • ذاكرة تخزين مؤقت TTL (افتراضي 60 ثانية) بحيث تنتشر تعديلات المطالبات في غضون دقيقة.
  • Stale-while-revalidate — تُقدَّم القيمة المخزَّنة بينما يعمل التحديث التالي في الخلفية.
  • Stale-on-error — إذا أعاد المصدر الخارجي 5xx أو انتهت مهلته، تقدم البوابة آخر استجابة جيدة معروفة. لا تفشل حركة المستخدم بشكل قاسٍ أبداً بسبب انقطاع المزود.

10. القابلية للملاحظة

كل طلب محقون بمطالبة يترك أربع آثار.

رأس الاستجابة

X-Orca-Prompt: support-agent@production:v7 (native)
التنسيق:
  • أصلي: name@label:vN (native) (أو name@label (native) عندما يكون int الإصدار غير معروف).
  • خارجي: name@label:<provider-version-tag> (langfuse) إلخ.
  • التسمية محذوفة ⇒ لا يوجد مقطع @label.

أعمدة السجل

Log.PromptId، Log.PromptVersion، Log.PromptLabel — أعمدة مكتوبة، مفهرسة لاستعلامات Insights.

Drilldown في Insights

في /console/insights، يحتوي صف التصفية على واجهة Prompt — اختر مطالبة وكل علامة تبويب (الكمون، الأخطاء، التكلفة) تُصفّى إلى ذلك prompt_id. هذا هو إغلاق الحلقة لـ “حرّرت مطالبة — ما الذي تغير في حركة المرور؟”.

التدقيق

تُسجَّل كل حركة تسمية وتراجع في Promote history للمطالبة مع user id للممثل، والطابع الزمني، والإصدار من، والإصدار إلى. مرئية لكل عضو؛ الطفرة مقيدة بدور Owner.

11. مرجع API

جميع المسارات ضمن نطاق مساحة العمل عبر رأس X-Workspace-Id. يُفرض RBAC باستمرار: القراءات مفتوحة لكل عضو؛ الكتابات هي Developer+؛ تغييرات حركة الإنتاج (نقل التسميات، التراجعات، تكوين المزود، webhooks) هي Owner فقط.

المطالبات

الطريقة والمسارالدورالغرض
GET /api/prompt/Memberقائمة المطالبات (مع ترقيم الصفحات، يدعم ?tag=).
GET /api/prompt/?in_trash=trueOwnerقائمة المطالبات المحذوفة بنعومة (Owner فقط — فئة الاسترداد).
GET /api/prompt/searchMemberبحث بالكلمات المفتاحية + العلامات (rate-limited).
GET /api/prompt/tagsMembertypeahead العلامات لمساحة العمل.
GET /api/prompt/:idMemberتفاصيل مطالبة واحدة.
GET /api/prompt/:id/versionsMemberتاريخ الإصدارات (الأحدث أولاً).
GET /api/prompt/:id/labelsMemberخريطة التسمية → الإصدار الحالية.
GET /api/prompt/:id/tagsMemberمجموعة العلامات لمطالبة واحدة.
GET /api/prompt/:id/label_historyMemberسجل تدقيق الترقية.
GET /api/prompt/:id/analyticsMemberبيانات مخطط الاستخدام لكل مطالبة.
GET /api/prompt/analytics/topMemberالمطالبات الأكثر استخداماً على مستوى مساحة العمل.
POST /api/prompt/Developer+إنشاء مطالبة (text أو chat).
PUT /api/prompt/Developer+تحديث مطالبة (ينشئ إصداراً جديداً).
POST /api/prompt/:id/tagsDeveloper+استبدال مجموعة العلامات.
POST /api/prompt/:id/runDeveloper+Playground “Try it” (rate-limited 30/min/workspace).
DELETE /api/prompt/:idDeveloper+حذف ناعم إلى السلة (افتراضي)؛ ?purge=true هو حذف صعب Owner فقط.
POST /api/prompt/:id/restoreOwnerالاستعادة من السلة.
POST /api/prompt/:id/rollbackOwnerاستعادة إصدار أقدم كإصدار جديد.
POST /api/prompt/:id/labelOwnerنقل تسمية إلى إصدار (ذري، مدقَّق؛ يقبل أيضاً حمولة split لـ A/B).

مزودو المطالبات (الاتحاد)

الطريقة والمسارالدورالغرض
GET /api/prompt_provider/Memberقائمة المصادر المتصلة (أسرار مقنّعة).
POST /api/prompt_provider/Ownerالاتصال بمصدر.
PUT /api/prompt_provider/Ownerتحديث مصدر.
DELETE /api/prompt_provider/:idOwnerقطع الاتصال.
POST /api/prompt_provider/testOwnerحل تجريبي قبل الحفظ.
GET /api/prompt_provider/:id/promptsMemberقائمة المطالبات المتاحة في مصدر خارجي.
POST /api/prompt_provider/:id/prompts/importDeveloper+استيراد مطالبة خارجية إلى السجل المحلي.

webhooks المطالبات

الطريقة والمسارالدورالغرض
GET /api/prompt_webhook/Memberقائمة webhooks.
POST /api/prompt_webhook/Ownerإضافة webhook (يُعاد السر مرة واحدة).
PUT /api/prompt_webhook/:idOwnerتحرير.
DELETE /api/prompt_webhook/:idOwnerإزالة.
POST /api/prompt_webhook/:id/testOwnerإرسال حدث عينة.

تسليم أحداث الـ Webhook

كل عملية تسليم ترسل طلب POST بمظروف JSON إلى الرابط الذي قمت بإعداده:
{
  "event": "label.promoted",
  "workspace_id": "ws_...",
  "occurred_at": "2025-01-15T08:30:00Z",
  "data": { "...": "event-specific fields" }
}
أنواع الأحداث: prompt.created، prompt.updated، prompt.deleted، label.promoted، version.rolled_back. الترويسات المرفقة مع كل عملية تسليم:
  • X-Orca-Webhook-Id — معرّف الـ webhook الخاص بك (استخدمه لإزالة التكرار).
  • X-Orca-Event — مطابق لحقل event في المظروف.
  • X-Orca-Signature — بتنسيق sha256=<hex>، حيث <hex> هو HMAC-SHA256 لجسم الطلب الخام باستخدام الـ webhook secret كمفتاح. قارن باستخدام وقت ثابت.

إضافة إلى حمولة الطلب

type ChatCompletionsRequest = {
  // ... all existing OpenAI-compatible fields ...
  prompt_ref?: PromptRef;  // gateway-only; stripped before upstream
};

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

السلوك متطابق بايت ببايت مع مساحة عمل لم تفعّل الميزة أبداً. إذا لم يكن المفتاح مرتبطاً، ولم يكن prompt_ref موجوداً، ولم يُضبط افتراضي القناة، فإن البوابة لا تجري أي تعديلات. لا تحمل الاستجابة رأس X-Orca-Prompt. أعمدة السجل تكون NULL.هذا ضمان الانحدار: المحلل هو no-op متحقق منه عندما لا يوجد شيء مرتبط.
SystemPromptOverride هو الافتراضي الحالي لـ system-prompt على مستوى القناة. مطالبة سجل مرتبطة تتجاوز افتراضي القناة — موثّق ومقصود. عندما لا يُحل شيء، يعمل افتراضي القناة تماماً كما كان من قبل.عندما يتضمن طلب المستدعي بالفعل رسالة نظام، يقرر السلوك محوّل التنسيق: طلبات بشكل OpenAI تحصل على رسالة نظام القالب مُضافة في المقدمة؛ طلبات بشكل Claude تضع رسالة نظام القالب في المعامل system الأصلي.
ليس في v1. أي مفتاح يمكنه prompt_ref أي مطالبة في مساحة عمله الخاصة. هذا يطابق نموذج المفتاح ضمن نطاق مساحة العمل من Langfuse وLangSmith. يُرفض الوصول عبر مساحات العمل على مستوى المحلل (يُعاد فحصه في مسار الترحيل؛ لا يُوثق به أبداً من ربط قديم).قوائم سماح المطالبات لكل مفتاح هي إضافة مستقبلية ممكنة.
نعم. تُحسب رموز system-prompt المحقونة في الاستخدام / الحصة / الفوترة تماماً كأي رسالة نظام أخرى. المطالبات الطويلة جداً التي تتجاوز نافذة سياق النموذج تعيد خطأ النموذج الأعلى العادي — البوابة لا تقتطع مسبقاً.
لا. تُتجاهل حقول config.model / model_config للمزودين الخارجيين. يبقى اختيار النموذج السلطة الوحيدة للموجه — تحقن Prompts نصاً فقط.
يعالج المحلل المطالبات المفقودة / المحذوفة / غير المصرح بها كـ fail-safe skip — يُعاد توجيه الطلب دون تغيير ودون خطأ للمستدعي. تعرض نوافذ Edit وPromote شارة “Used by N keys” حتى ترى نصف قطر الانفجار قبل الحذف أو الترقية.
حركات التسمية الأصلية فورية تقريباً (تتزامن البوابة من قاعدة البيانات على فترة محدودة بالثواني، بالإضافة إلى كتابة خريطة محلية على مسار كتابة المتحكم). تظهر حركات التسمية الخارجية ضمن TTL ذاكرة التخزين المؤقت المكوَّن (افتراضي 60 ثانية). كلاهما توقعات موثقة، وليست عيوب.
نعم. تكشف نافذة Create prompt عن مفتاح Text / Chat؛ وضع المحادثة يعرض محرراً منظماً {role, content}. بعد إنشاء مطالبة، يكون kind لها غير قابل للتغيير (تنشئ مطالبة جديدة لتغيير الشكل).
  • رأس الاستجابة X-Orca-Prompt على الاستجابة الموجهة للمستخدم.
  • أعمدة Log.PromptId / PromptVersion / PromptLabel على صف سجل الطلب.
  • واجهة تصفية Prompt في Insights — اختر مطالبة؛ كل علامة تبويب Insights تُصفّى إلى ذلك prompt_id.
حرّر webhook عبر PUT /api/prompt_webhook/:id وزوّد قيمة secret جديدة. يُعرض السر الجديد مرة واحدة في الاستجابة — انسخه حينها؛ بعدها يُقنَّع السر. (لا يوجد نقطة نهاية مخصصة للتدوير؛ التدوير هو تحرير عادي.)