متى يستحق الوكيل
درس 1 من 6
1متى يستحق الوكيل
الصورة الكبيرة«الوكيل» نموذج يقرّر بنفسه أي أداة يستدعي وكم مرة، في حلقة حتى ينتهي. هذه الحرية مكلفة: رموز أكثر، وزمن أطول، وسلوك أصعب في التنبّؤ والاختبار. أغلب ما يُسمّى وكلاء هو في الحقيقة استدعاء واحد وجملة شرطية، أو سلسلة ثابتة من الخطوات، وهذا أفضل غالبًا.
ماذا تشاهد في الرسم: استدعاء واحد 1.5 ألف رمز، ووكيل بخمس وعشرين خطوة 150 ألفًا. الأعمدة لا تكبر بخط مستقيم لأن كل خطوة تحمل تاريخ كل الخطوات السابقة، وهذا ثمن أن يختار النموذج الطريق بنفسه.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
الوكيل مثل موظف تعطيه هدفًا ويقرر بنفسه الخطوات. هذا مفيد حين لا تعرف الخطوات مسبقًا. لكن أغلب المهام خطواتها معروفة: «اقرأ الطلب، صنّفه، أرسله للقسم». هنا يكفي برنامج عادي واستدعاء واحد للنموذج، وهو أرخص وأوضح وأقل خطأ.
الوكيل حلقة يقرر فيها النموذج الأداة التالية، وكل خطوة تضيف زمنًا وتكلفة واحتمال خطأ. تستحقه المهام مفتوحة النهاية متعددة الخطوات ذات النتيجة القابلة للتحقق. ودون ذلك يكفي سير عمل workflow ثابت بنداءات محددة وشروط if.
قبل أن تبدأ
📞استدعاء نموذج
تعرف كيف ترسل رسائل لنموذج وتقرأ ردّه، وأن كل استدعاء يُحسب بالرموز.
🧱هندسة السياق
تعرف أن القالب الجيد مع تعليمات واضحة يحلّ أغلب المهام في استدعاء واحد.
الفكرة الجوهرية
لكل نظام ثلاث درجات تختار منها: استدعاء واحد، ثم سلسلة ثابتة، ثم وكيل. في هذا الدرس ترى كل درجة ومتى تكفي، ثم تحسب ثمن الحرية.
1الدرجة الأولى: استدعاء واحد
أغلب المهام تحويل واحد: تصنيف، أو تلخيص، أو استخراج، أو ترجمة. قالب جيد واستدعاء واحد يحلّها، وهذا أرخص وأسرع وأسهل في الاختبار.
انظر إلى الرسم: الرسالة تدخل، والنموذج يُستدعى مرة واحدة، ثم يقرّر كودك بجملة if بسيطة ماذا يفعل بالنتيجة.
النموذج هنا لا يختار أي خطوة. هو يحوّل نصًّا إلى نص، وكودك يملك كل ما بعده.
2الدرجة الثانية: سلسلة ثابتة
حين تعرف الخطوات وترتيبها مسبقًا، اكتبها كودًا. كل خطوة استدعاء أو كود عادي، والسلسلة نفسها كود تختبره خطوة خطوة.
مهمة تُبنى كثيرًا كوكيل: «أين طلبي؟». خطواتها معروفة دائمًا، فنكتبها كودًا.
import re
def extract_order_id(message):
m = re.search(r"\b(\d{5})\b", message)
return m.group(1) if m else None
ORDERS = {"48213": {"status": "shipped", "eta": "Thursday"}}
def lookup(order_id):
return ORDERS.get(order_id)
def reply(message):
order_id = extract_order_id(message) # step 1: in production, one small model call
if not order_id:
return "Please send your 5-digit order number."
order = lookup(order_id) # step 2: plain code, no model
if not order:
return f"I could not find order {order_id}."
return f"Order {order_id} is {order['status']}, arriving {order['eta']}." # step 3: a template
for msg in ["where is my order 48213?", "where is my order?", "status of 11111 please"]:
print(f"{msg!r:32} -> {reply(msg)}")
ثلاث خطوات ثابتة: استخراج الرقم (في الإنتاج استدعاء نموذج صغير واحد، هنا تعبير نمطي)، ثم بحث بالكود، ثم قالب. كل حالة فشل لها رد واضح، وكل خطوة تُختبر وحدها. وكيل حرّ لنفس المهمة سيصل لنفس الردود بأضعاف الرموز، وأحيانًا يقرّر أن يعتذر بدل أن يبحث.
اسأل نفسك: هل أستطيع رسم مخطّط سير لهذه المهمة؟ إن استطعت، فالمخطّط هو الكود ولا تحتاج وكيلًا.
3الدرجة الثالثة: وكيل حقيقي
الوكيل نموذج يقرّر بنفسه أي أداة يستدعي وكم مرة. تحتاجه فقط حين لا تعرف عدد الخطوات ولا ترتيبها، وتعتمد كل خطوة على نتيجة السابقة.
انظر إلى الرسم: النموذج يختار أداة، ويقرأ نتيجتها، ثم يختار من جديد. الدورة لا تُرسم مسبقًا لأنها تتغيّر مع كل حالة.
أمثلة هذه المهام: بحث مفتوح، أو إصلاح كود، أو تحقيق في مشكلة. في كل واحدة لا تعرف الخطوة الثالثة قبل أن ترى نتيجة الثانية.
4ثمن الحرية
الحرية لها ثمن: رموز أكثر، وزمن أطول، وسلوك يتغيّر بين تشغيلين، واختبار أصعب بكثير. الرموز أسهل ما يُقاس منها، فلنحسبها.
system_and_tools = 1200 # tokens sent with every call
per_step = 400 # each step adds a tool call and its result to the history
def agent_tokens(steps):
total, history = 0, 0
for _ in range(steps):
total += system_and_tools + history
history += per_step
return total
one_call = system_and_tools + 300
print(f"one call: {one_call:>7,} input tokens")
for steps in [3, 10, 25]:
print(f"agent, {steps:2} steps: {agent_tokens(steps):>7,} input tokens")
استدعاء واحد 1500 رمز. وكيل بعشر خطوات 30 ألفًا، عشرون ضعفًا، وبخمس وعشرين خطوة 150 ألفًا. النمو تربيعي تقريبًا لأن كل خطوة تعيد إرسال ما قبلها. والتخزين المؤقت للبداية المتكرّرة يخفّف السعر لكنه لا يلغي الزمن. هذا ما تدفعه مقابل أن يقرّر النموذج الطريق بنفسه.
كيف يعمل، خطوة بخطوة: كيف تختار بين استدعاء وسلسلة ووكيل
ابدأ باستدعاء واحد بقالب جيد، وأضف جملة شرطية في الكود إن احتجت قرارًا.
إن عرفت الخطوات وترتيبها مسبقًا، فاكتبها سلسلة ثابتة يتحكّم فيها كودك وتختبر كل خطوة وحدها.
لا تنتقل لوكيل إلا حين يتغيّر عدد الخطوات وترتيبها مع كل حالة، وتعتمد كل خطوة على نتيجة سابقتها.
قبل أن تبنيه، احسب رموزه وزمنه عند عدد الخطوات المتوقّع، وقارنه بالدرجة الأدنى.
مثال محلول
قبل أن تبني وكيلًا، احسب ثمنه. في كل خطوة يرسل الوكيل رسالة النظام ووصف الأدوات، ومعها كل ما حدث في الخطوات السابقة. فالتاريخ يكبر مع كل خطوة، والتكلفة تكبر أسرع منه.
جرّب بلا كود
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| الوكيل دائمًا أذكى من سلسلة ثابتة. | في المهام المعروفة الخطوات يصل غالبًا لنفس النتيجة، وأحيانًا يتوه أو يتخطّى خطوة، وبتكلفة أعلى بكثير. |
| تكلفة الوكيل تتناسب مع عدد خطواته. | تكبر أسرع من ذلك، لأن كل خطوة تعيد إرسال كل ما قبلها: عشر خطوات كلّفت 30 ألف رمز لا 15 ألفًا. |
| كلما زادت أدوات الوكيل صار أستطيع. | كل أداة إضافية تكبّر رسالة النظام في كل خطوة وترفع احتمال اختيار أداة خاطئة. ابدأ بأقل ما يكفي. |
جرّب بنفسك
أي مهمة تستحق وكيلًا حقيقيًّا؟
لا تعرف مسبقًا أي الملفات ستقرأ ولا كم أمرًا ستشغّل، وكل خطوة تعتمد على ما وجدته السابقة. الباقي تحويلات واحدة.
لماذا تنمو رموز الوكيل أسرع من عدد خطواته؟
الخطوة العاشرة تحمل التسع السابقة كلها. مجموع 1 + 2 + ... + n ينمو مع مربّع n.
بطاقات مراجعة سريعة
if في الكود حول النتيجة إن احتجت قرارًا.تحقق من فهمك
مهمة: «اقرأ هذه الفاتورة واستخرج المبلغ والتاريخ وأضفهما إلى جدول». وكيل أم سلسلة؟
سلسلة. الخطوات معروفة وثابتة: استدعاء واحد يستخرج JSON بمخطّط، وكود يتحقّق منه، وكود يضيفه للجدول. لا يوجد قرار يحتاج حرية النموذج. الوكيل هنا يضيف تكلفة وخطر أن «يقرّر» تعديل صفوف أخرى.
مهمة: «اقرأ رسالة العميل، وإن كانت شكوى فأنشئ تذكرة، وإلا فأجب من الأسئلة الشائعة». أي درجة من السلّم تناسبها؟
استدعاء واحد يصنّف الرسالة، ثم جملة شرطية في الكود توجّهها. الفرعان معروفان مسبقًا، فلا حاجة لأن يقرّر النموذج المسار.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.