في وكيل الذكاء الاصطناعي، يتولى Jev القرارات الصغيرة بين استدعاءات LLM: أي أداة أو مهارة تُستخدم، وأي نموذج يتولى الخطوة التالية، وهل يواصل الوكيل أم يسلّم المهمة، وهل يبدو استدعاء الأداة أخطر من أن يُنفَّذ. توثّق TypeSafe وشركاؤها أنماطاً لتوجيه النوايا، واختيار النموذج، وقرارات المتابعة أو التوقف، وفحص مخاطر الأدوات؛ أما نمط اتخاذ قرار إعادة المحاولة فغير موثّق. وقبل نقل أي من هذه القرارات من نموذج LLM إلى Jev، أعد تشغيل قراراتك المسجّلة عبر الاثنين وقارن الدقة وزمن الاستجابة والتكلفة.
يجمع هذا الدليل ما يُظهره التوثيق الرسمي من TypeSafe وLangChain وVercel وCloudflare حتى أكتوبر 2026، ويوضح بجلاء المواضع التي نصف فيها فكرة تصميم لا ميزة موثّقة. لم ننشر Jev في نظام لدى عميل. وللاطلاع على خلفية النموذج نفسه، راجع مقال ما هو Jev.
أين تقع قرارات التوجيه داخل الوكيل؟
تعمل معظم الوكلاء في حلقة: تقرأ المهمة وآخر نتيجة من الأداة، وتقرر ما تفعله بعد ذلك، وتنفذ، ثم تكرر. وجزء «القرار» يخفي عادةً عدة أسئلة منفصلة يجيب عنها نموذج LLM ضمنياً داخل موجّه (prompt) طويل واحد. أما نموذج القرار فيجعلها صريحة. المخطط أدناه شيفرة زائفة محايدة لا ترتبط بمورّد، وليست شيفرة Jev API:
loop:
state = compact summary of task, last tool result, step count
answers = decision_model(state, [which_tool, needs_strong_model,
tool_call_risky, should_continue])
if any answer is below its confidence threshold:
hand the step to an LLM or a person
elif tool_call_risky is likely:
refuse the call, or ask for approval
else:
run the chosen tool with the chosen model
if not should_continue: stop
نقطتان من توثيق TypeSafe تحددان هذا التصميم. ينبغي أن تكون الأسئلة ذرّية، فتُقسَّم الأحكام العامة إلى عدة أسئلة وتُجمع نتائجها في الشيفرة. وينبغي أن تكون الحالة قصيرة: فـ Jev «يعاني من تآكل السياق (context rot)» حين تمتلئ الحالة بتفاصيل غير ذات صلة (Jev 1.13 jaggedness). تمرير النص الكامل للمحادثة خيار افتراضي سيئ؛ مرّر ما يحتاجه القرار فقط.
توجيه النوايا والأدوات
نمط توجيه النوايا لدى TypeSafe هو أوضح مثال رسمي. يصنّف سؤال Choice الطلب، ويقيّم سؤال Score درجة تعقيده، ثم تقرر شيفرة عادية وجهته: استفسارات حالة الطلب إلى شيفرة حتمية، وأسئلة المنتجات والمرتجعات إلى موجّهات LLM متخصصة، والشكاوى إلى LLM أو إلى إنسان بحسب التعقيد. والحالات منخفضة الثقة تذهب إلى إنسان. هذه دالة التوجيه كما نُشرت:
def route_ticket(ticket_id, response):
intent = response.answers["intent"]
complexity = response.answers["complexity"]
if intent.confidence < 0.5:
# If we don't have enough confidence to classify, route to a human agent
return route_to_human_agent(ticket_id)
if intent.choice == "order_status":
handle_order_status(ticket_id)
elif intent.choice == "product_question":
handle_with_llm(ticket_id, PRODUCT_SPECIALIST)
elif intent.choice == "return_exchange":
handle_with_llm(ticket_id, RETURNS_SPECIALIST)
elif intent.choice == "complaint":
low_confidence = complexity.confidence < 0.5
# A higher complexity.score leans toward the "escalation needed" end of the scale.
if complexity.score > 1 or low_confidence:
# Too complex for safe automation, or we're not sure about the complexity; route to a human.
route_to_human_agent(ticket_id)
else:
handle_with_llm(ticket_id, COMPLAINT_RESOLUTION)
أما اختيار الأدوات بمعناه الدقيق، فلدى TypeSafe دليلان عمليان. يربط دليل استدعاء الدوال اسم الدالة ووسائطها ذات القيم المغلقة (القيم الحرفية والقيم المنطقية) بأسئلة Choice وNoul، بطلب واحد لكل أمر. أما الوسائط من نوع الأعداد الصحيحة والنص الحر والتواريخ فتبقى على قيمها الافتراضية، وهذا يبيّن أين يتوقف النهج: Jev يختار الدالة، لكنه لا يملأ القيم المفتوحة. ويستخدم دليل اقتراح المهارات طلبين إلى Jev لاختيار مهارة واحدة على الأكثر من بين 182 مهارة. وفي اختبار TypeSafe الخاص على 488 طلباً مقارنةً بـ Claude Haiku 4.5، انخفض معدل تحميل المهارة الخاطئة من 16.8% إلى 7.3%، وانخفض تحميل مهارة حين لا تناسب أي مهارة من 9.8% إلى 4.0%. هذه نتيجة من المورّد على مهمة اختارها المورّد.
هناك حدّان مهمان لقوائم الأدوات. يضم سؤال Choice الواحد 255 خياراً على الأكثر، ويشير توثيق TypeSafe إلى أن Jev «يميل إلى الخيار الذي يأتي أولاً». إن كانت قائمة أدواتك بترتيب ثابت، فاختبر ما إذا كانت الأداة الأولى تُختار أكثر مما ينبغي.
اختيار النموذج مع LangChain
تصون LangChain حزمة langchain-typesafe (في مرحلة alpha، الإصدار 0.0.1a3 وقت كتابة المقال) تضم Runnable باسم TypeSafeClassifier وصنفين من الوسيط (middleware) موسومين بأنهما تجريبيان. يختار ModelRouterMiddleware النموذج الذي ينفذ الخطوة. هذا المقتطف من صفحة المزوّد في LangChain:
from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import (
ModelChoice,
ModelRouterMiddleware,
)
router = ModelRouterMiddleware(
choices={
"fast": ModelChoice(
model="openai:gpt-5.6-terra",
criteria="Direct lookups, extraction, and localized changes with explicit targets.",
),
"powerful": ModelChoice(
model="openai:gpt-6-astra",
criteria="Architecture, novel root-cause reasoning, and high-stakes decisions.",
),
},
instructions="Choose the least costly model that can complete the task safely.",
)
agent = create_agent("openai:gpt-5.6-terra", middleware=[router])
يكمل المثال الكامل في تلك الصفحة باستدعاء agent.invoke(...) ويقرأ المسار المختار من result["model_route"].choice. وتوجيه النماذج أيضاً من الاستخدامات التي اقترحها Armin Ronacher، الرئيس التنفيذي للتكنولوجيا في Earendil، حين سألته TechCrunch عن Jev. والحسابات الاقتصادية هنا بسيطة: استدعاء الموجّه رخيص، لذا يغطي تكلفته إن أرسل عدداً كافياً من الخطوات إلى النموذج الأرخص دون الإضرار بالنتائج. وما إذا كان يفعل ذلك هو بالضبط ما عليك قياسه. تعرض مقارنة تكاليف نماذج LLM لدينا فجوة الأسعار بين فئات النماذج التي يستفيد منها موجّه كهذا.
إعادة المحاولة والمتابعة والتصعيد
التوثيق هنا شحيح، ومن المفيد أن نكون دقيقين. المحتوى الرسمي لدى TypeSafe بشأن إعادة المحاولة يتعلق بطبقة النقل: تعيد حزم SDK المحاولة عند الخطأين 429 و529 مع تراجع أسّي (exponential backoff) وتحترم retry-after. لا يوجد نمط رسمي لاستخدام Jev في تقرير ما إذا كان ينبغي للوكيل إعادة محاولة خطوة فاشلة.
أقرب مثال موثّق هو فحص المتابعة/التوقف لدى Vercel، من سجل تغييرات AI Gateway:
import { TypeSafeClient } from '@typesafe-ai/sdk';
const client = new TypeSafeClient({
apiKey: process.env.AI_GATEWAY_API_KEY,
baseURL: 'https://ai-gateway.vercel.sh/typesafe',
});
const result = await client.systemOne({
state: 'The agent fixed the checkout bug and all tests pass.',
questions: {
continueWorking: {
type: 'noul',
instructions: 'Should the agent take another step?',
},
},
});
const shouldContinue = result.answers.continueWorking.noul >= 0.8;
يمكن أن يتخذ قرار إعادة المحاولة الشكل نفسه، ونطرحه هنا بوصفه فكرة تصميم فقط. بعد فشل استدعاء أداة، اطرح أسئلة نعم/لا، مثل: هل يبدو الخطأ عابراً، وهل يُرجَّح أن ينجح الاستدعاء نفسه بوسائط مختلفة. أبقِ عدد المحاولات والتراجع في الشيفرة، فتوثيق Jev يقول إنه لا يعدّ بشكل موثوق. وإن كانت الإجابات غير مؤكدة، فصعّد بدلاً من إعادة المحاولة.
ولعتبات التصعيد، يعرض نمط التوجيه بحسب الثقة لدى TypeSafe مسار خدمة مصرفية صوتية بحد أدنى للثقة قدره 0.6، مع موافقة تلقائية على التحويل فقط فوق 0.85. لاحظ أن إجابات Noul لا تحتوي على حقل confidence، لذا تقع العتبة في أسئلة نعم/لا على الاحتمال نفسه، كما في >= 0.8 لدى Vercel. واستخدم اختبار مستقل أجرته AY Automate حداً للثقة قدره 0.80 لإرسال الحالات غير المؤكدة إلى GPT-5.6 Terra، فبلغت الدقة 90.0% بنحو 26% من تكلفة Terra. هذه أرقامهم على بياناتهم؛ أما عتباتك فيجب أن تأتي من بياناتك.
فحص مخاطر الأدوات
يقوم AutoModeMiddleware(tools=[...]) التجريبي في LangChain بـ«السؤال عن احتمال أن يكون استدعاء الأداة خطراً أو غير مصرَّح به بما يكفي». والاستدعاءات التي يُحكم بخطورتها تعيد ToolMessage بخطأ بدلاً من أن تُنفَّذ. وتحذير LangChain نفسها يستحق التكرار: «هذا الوسيط يرفض الاستدعاءات الخطرة. ولا يطلب الموافقة». إن كان وكيلك يحتاج إلى خطوة موافقة بشرية، فعليك أن تبنيها بنفسك.
التحفظ الأكبر هو حقن الموجّهات (prompt injection). يقول توثيق Jev إن الحالة بيانات وإن النموذج «لا يعاملها افتراضياً على أنها عدائية». ونقلت VentureBeat اختباراً أجرته Octomind، أدى فيه حقل مزيف «pre-approved» (موافَق عليه مسبقاً) إلى خفض احتمال منع الأمر rm -rf ~/.ssh من 0.76 إلى 0.48. وموقف Pydantic، المنقول في المقال نفسه، هو الموقف المعقول: حارس Jev «مكانه إلى جانب الفحوص الحتمية، لا بدلاً منها». عملياً، يعني ذلك قوائم السماح والمنع، والتحقق من الوسائط، وفحوص الصلاحيات في الشيفرة أولاً، ثم يقيّم Jev المنطقة الرمادية التي لا تغطيها القواعد.
ملاحظات التكامل: LangChain وVercel وCloudflare وPydantic
- LangChain: تُصان
langchain-typesafeفي مستودع langchain-ai لكنها في مرحلة alpha، وصنفا الوسيط كلاهما تجريبيان. توقّع تغييرات في الواجهة البرمجية. - Vercel AI Gateway: النموذج هو
typesafe-ai/jev، ويمكن الوصول إليه عبر عميل TypeSafe مع عنوان URL أساسي للبوابة (كما أعلاه)، أو عبر نقطة HTTP /v1/evaluate، أو عبر AI SDK من خلال@ai-sdk/typesafe-ai. تختلف صفحات Vercel في اسم دالة AI SDK (experimental_evaluateفي سجل التغييرات، وexperimental_decideفي دليل التكاملات الأحدث)، فراجع التوثيق الحالي قبل نسخ الشيفرة. وتسمي واجهة API الأصلية للبوابة نوع نعم/لاbooleanمع حقل.probability، بينما تستخدم TypeSafe noul. وتقول Vercel أيضاً إن إطار الوكلاء eve الخاص بها يستخدم Jev نموذجاً افتراضياً للتقييم. - Cloudflare Workers AI: الاستدعاء هو
env.AI.run('typesafe/jev', { state, questions })مع مخطط الأسئلة الخاص بـ TypeSafe (صفحة النموذج). وتذكر Cloudflare عدم الاحتفاظ بالبيانات (zero data retention) ونافذة سياق من 32,000 رمز، مقابل 64k لكل طلب كما تذكر TypeSafe. - Pydantic AI:
TypeSafeModelوTypeSafeProviderعبر الإضافةpydantic-ai-slim[typesafe]، بمفتاح TypeSafe الخاص بك ودون بث متدفق (streaming) (Pydantic).
أياً كان المسار، ثبّت إصدار النموذج (jev-1.13.0) بعد ضبط العتبات. فالاسم البديل jev-latest سيتغير.
كيف تقيّم Jev على حركة البيانات الخاصة بك
نتائج الاختبارات المنشورة متضاربة، وتقييمات TypeSafe نفسها تقيس مقابل تسميات أنتجها نموذجا LLM رائدان، أي أنها تقيس التوافق لا الصحة. والأرقام الوحيدة التي ينبغي أن تحسم قرار التحول هي أرقام حركة البيانات الخاصة بك. هذه طريقة عملية:
- استخرج القرارات المسجّلة من سجلات تنفيذ وكيلك: الحالة وقت القرار، والاختيار الذي اتخذه نموذج LLM الحالي، والنتيجة حيث تعرفها.
- وسّم عينة يدوياً، بما فيها الحالات الصعبة والمكلفة. فاستخدام نموذج LLM آخر مرجعاً يكرر مشكلة اختبارات المورّدين.
- صُغ كل قرار في صورة أسئلة Jev ذرّية. وتوقّع أن تحتاج إلى عدة تكرارات؛ ففي اختبار التصيّد الذي لخّصه Beri.net، غيّر تقسيم سؤال عام واحد إلى خمسة أسئلة النتيجة أكثر مما غيّرها اختيار النموذج.
- أعد تشغيل العينة دون اتصال (offline) عبر Jev وعبر نموذج LLM الحالي المرجعي لديك.
- قارن لكل نوع من القرارات: الدقة أو macro-F1، ومصفوفة الالتباس للأخطاء المكلفة، والمعايرة. اضبط العتبات لكل سؤال؛ فقد وجد Beri.net أن معايرة Jev الافتراضية غير موثوقة.
- قِس التغطية عند كل عتبة: النسبة التي يتولاها Jev وحده، والنسبة التي تُصعَّد إلى نموذج LLM.
- قِس زمن الاستجابة p50 وp95 من المنطقة التي تنشر فيها. فأرقام المورّد أُخذت من الساحل الغربي للولايات المتحدة.
- احسب التكلفة لكل 1,000 قرار، بما فيها استدعاءات LLM للحالات المصعَّدة.
- أضف مجموعة عدائية تتضمن تعليمات محقونة في الحالة، خصوصاً لأسئلة مخاطر الأدوات.
- شغّل النظام في وضع الظل (shadow mode) على حركة البيانات الحية قبل التحويل، وأبقِ مسار LLM احتياطياً.
إن كانت النتيجة متقاربة، فالعاملان الحاسمان عادةً هما حجم القرارات ومدى تكلفة كل نوع من الأخطاء. وتجد دليلاً للصورة الأوسع لتكاليف الوكلاء في مقالنا عن تكلفة تطوير وكلاء الذكاء الاصطناعي، والمفاضلات الأشمل في مقال Jev مقابل نماذج LLM.
الأسئلة الشائعة
هل يعمل Jev مع LangChain؟
نعم. تصون LangChain حزمة langchain-typesafe، التي تضم Runnable باسم TypeSafeClassifier إضافة إلى ModelRouterMiddleware التجريبي لاختيار النموذج وAutoModeMiddleware لفحص مخاطر الأدوات. الحزمة في مرحلة alpha.
هل يستطيع Jev اختيار الأدوات لوكيل ذكاء اصطناعي؟
نعم، في الخيارات المغلقة. يربط دليل استدعاء الدوال لدى TypeSafe أسماء الدوال والوسائط ذات القيم المغلقة بأسئلة Choice وNoul، أما وسائط الأعداد الصحيحة والنص الحر والتواريخ فتحتاج إلى مصدر آخر. ويضم سؤال Choice الواحد حتى 255 خياراً.
هل لدى Jev سياسة مدمجة لإعادة المحاولة؟
فقط لأخطاء النقل: تعيد حزم SDK المحاولة عند الاستجابتين 429 و529 مع تراجع تدريجي. أما تقرير ما إذا كان ينبغي للوكيل إعادة محاولة خطوة فاشلة فليس نمطاً موثّقاً في Jev، وإن كانت Vercel تعرض فحصاً قريباً للمتابعة/التوقف.
هل من الآمن استخدام Jev حارساً وحيداً لاستدعاءات الأدوات؟
لا. المحتوى المحقون في الحالة قد يغيّر إجاباته، كما أظهر اختبار Octomind الذي نقلته VentureBeat. استخدمه إلى جانب فحوص صلاحيات حتمية، ولاحظ أن وسيط LangChain يرفض الاستدعاءات الخطرة لكنه لا يطلب الموافقة.
كيف أضبط عتبات الثقة للتوجيه؟
اضبطها لكل سؤال على بياناتك الموسومة. تستخدم أنماط TypeSafe القيم 0.5 و0.6 و0.85 في أمثلة مختلفة، ويستخدم مثال Vercel القيمة 0.8 على احتمال Noul، لكن كل قيمة اختيرت لمثال بعينه.
بناء طبقة التوجيه
يغيّر نموذج القرار شكل الوكيل: ينتقل منطق التوجيه من الموجّهات إلى أسئلة محددة النوع وعتبات وشيفرة يمكنك اختبارها. وقد يجعل ذلك تشغيل النظام أرخص وتدقيقه أسهل، بشرط أن يتولى أحدٌ مسؤولية التقييم والمسارات الاحتياطية. تصمم AI Superior وتبني وكلاء ذكاء اصطناعي وتطبيقات LLM لعملاء الشركات (B2B)، مع توجيه النماذج والتقييم دون اتصال وضبط التكاليف جزءاً من البنية. اطّلع على خدمات نشر نماذج LLM لدينا إن كنت تخطط لذلك في بيئة الإنتاج.