لنتابع طلبًا واحدًا من أوله إلى آخره، من لحظة وصوله إلى لحظة حدوث شيء بالفعل. والوكيل هو مساعد السفر الذي نبنيه منذ الفصل 1. وسنسمّيه TravelBooker.
لنتابع طلبًا واحدًا من أوله إلى آخره، من لحظة وصوله إلى لحظة حدوث شيء بالفعل. والوكيل هو مساعد السفر الذي نبنيه منذ الفصل 1. وسنسمّيه TravelBooker.
والطلب: “احجز لي رحلة إلى نيويورك صباح الاثنين، ورتّب اجتماعًا مع سارة في اليوم نفسه.”
الوكلاء الحقيقيون ينفّذون تسلسلًا أكثر تشابكًا مما يعترف به أي مخطط، لكنه يُختصر اختصارًا مفيدًا إلى ثلاث مراحل:
يَغلب على المرء أن يقول إن الموجّهات هي ما يقود الوكيل، لأن النموذج هو الجزء المثير. وهذا ليس دقيقًا تمامًا، وقلّة الدقة تسبّب التباسًا حقيقيًا لاحقًا.
الوكيل تركيبة من أشياء تعمل معًا:
فالنموذج يُستشار مرارًا، وأجوبته توجّه الحلقة. لكن كثيرًا مما يجعل الوكيل موثوقًا هو شفرة حتمية تفعل الشيء نفسه في كل مرة. وهذه ميزة لا نقص: ما تستطيع جعله متوقّعًا، فاجعله كذلك.
الهدف: تحديد المهام المنفصلة داخل الطلب.
أنت TravelBooker، مساعد لحجز السفر وإدارة الجدول. حدّد المهام في طلب المستخدم التالي وصنّفها.
وما يعود:
الجدول 6-1: المهام المحدَّدة في الطلب
| المهمة | النوع |
|---|---|
| حجز رحلة | سفر |
| ترتيب اجتماع | تقويم |
مهمتان، لا مهمة واحدة. وإصابة هذا الفصل مبكرًا تمنع الوكيل من خلطهما لاحقًا — كأن يحجز رحلة تهبط بعد الاجتماع الذي يُفترض أن تتيحه.
الهدف: تحويل كل مهمة إلى خطوات، ثم جمع ما تحتاجه تلك الخطوات.
للطلب التالي، فكّك كل مهمة إلى خطة خطوة بخطوة قبل استرجاع أي شيء أو اتّخاذ أي إجراء.
التعليمة القائلة خطّط قبل أن تعمل مقصودة، وهي من أنفع العادات في تصميم الوكلاء. ففحص خطة أسهل بكثير من تفكيك سلسلة إجراءات نُفِّذت بالفعل.
الجدول 6-2: الخطة التي أنتجها الوكيل
| الخطوة | ما تستخدمه |
|---|---|
| استرجاع تفضيلات المسافر | الذاكرة |
| البحث في رحلات صباح الاثنين | خدمة الرحلات |
| المقارنة بالسعر والتوقيت والمقعد | منطقه الداخلي |
| التحقّق من أوقات سارة المتاحة | التقويم |
| اختيار وقت يصلح بعد هبوط الرحلة | منطقه الداخلي |
| تجهيز الاثنين للتأكيد | — |
ولا يسترجع الوكيل شيئًا إلا بعد أن تتّضح الخطة. ولاحظ السطر الأخير: الخطة تنتهي عند التجهيز، لا عند الحجز. وهذا مقصود.
وهذه هي الخطوة التي تخطئ فيها معظم الشروح، ومعها كثير من المنتجات الحقيقية.
حجز رحلة يصرف مالًا. يصعب التراجع عنه، ويظهر على بطاقة أحدهم، وإن أخطأ الوكيل في قراءة “الاثنين” فتكلفة معرفة ذلك بعد الحجز أعلى بكثير من تكلفة السؤال قبله. فيؤدّي الوكيل كل العمل حتى الإجراء غير القابل للرجوع، ثم يتوقّف.
1 يعرض الوكيل ما اختاره. “Airline A، الاثنين 7:00 صباحًا، مقعد عند النافذة، £214. اجتماع مع سارة في 2:00 بعد الظهر، وهو ما يترك ثلاث ساعات بعد الهبوط. أأحجز الاثنين؟”
2 توافق. أو لا توافق — فتقول إن 7:00 صباحًا مبكرة جدًا، فيعدّل الوكيل دون أن يصرف شيئًا.
3 الآن ينفّذ الوكيل. يحجز الرحلة، ويرسل دعوة التقويم، ويؤكّد الاثنين.
تحتفظ بالسرعة كلها تقريبًا. فالوكيل قام بالبحث، والمقارنة، والتحقّق من الأوقات المتاحة، وحساب المواعيد — وهي الأجزاء المملّة. ولم تتنازل عن شيء من التحكّم تقريبًا، لأن اللحظة الوحيدة التي كانت مهمة عادت إليك.
الجدول 6-3: المراحل الثلاث
| المرحلة | ما جرى فيها |
|---|---|
| الفهم | تحديد مهمتين: رحلة واجتماع |
| الاستدلال والجمع | بناء خطة، ثم استرجاع بيانات حيّة |
| التنفيذ | عرض الخيارات، ومنح الموافقة، وإتمام الاثنين |
تنقسم الذاكرة انقسامًا مفيدًا إلى نوعين. تصوّر لوحًا للكتابة وخزانة ملفات.
الذاكرة قصيرة المدى تُبقي الوكيل متموضعًا داخل المهمة الحالية. تحفظ ما قيل حتى لا تبدأ المحادثة من جديد في كل دور.
وفي TravelBooker يعني ذلك حفظ: المقصد نيويورك، وصباح الاثنين، وأي تفضيل ذُكر في الطريق. وبدونها كنت ستُسأل عن المقصد أربع مرات.
وهي تسكن في نافذة السياق عند النموذج، وغالبًا في مخزن جلسة إلى جانبها. وتُمحى عند انتهاء الجلسة، إلا إذا احتفظ بها شيء عن قصد.
الذاكرة طويلة المدى هي ما يتيح للوكيل أن يصبح نافعًا نفعًا حقيقيًا مع الوقت. تحفظ ما يستحق الاحتفاظ به بين المحادثات.
وعلى مدى أشهر، يتعلّم TravelBooker أنك تفضّل الاجتماعات الصباحية، وتختار دائمًا مقعدًا عند النافذة، وتسافر في الأغلب إلى نيويورك أو سان فرانسيسكو. فتصير “احجز المعتاد” تعليمة كاملة. ويتناول الفصل 8 أين يُخزَّن ذلك، وما تكلّفه الخيارات.
ومن وجهة نظر التصميم، المهم أن هذا كله ليس برنامجًا واحدًا كبيرًا. فالوكيل مبنيّ على هيئة وحدات منفصلة، كل واحدة مسؤولة عن وظيفة واحدة، تجمعها طبقة تنسيق تقرّر كيف يستدلّ الوكيل، وكيف يتذكّر، وكيف يعمل.
وكل قطعة قابلة للاستبدال: بدّل النموذج، أضف أداة، غيّر مكان الذاكرة، اكتب تعليمات جديدة. وهذه البنية الوحدوية هي ما يجعل صيانة الوكلاء ممكنة — وهي ما يجعل تصاميم النظام متعدد الوكلاء في الجزء الخامس ممكنة من الأصل.
الجدول 6-4: وحدات الوكيل
| الوحدة | وظيفتها |
|---|---|
| النموذج اللغوي | يفسّر الموقف ويقرّر الخطوة التالية |
| مدير التعليمات | يخزّن ما يُقال للنموذج ويصوغه |
| واجهات الأدوات | وصلات إلى الأنظمة الخارجية |
| مخزن الذاكرة | الحالة قصيرة المدى وطويلة المدى |
| طبقة التنسيق | ترتّب العمل وتعالج الأعطال |
وتُوصَل هذه عادةً بإطار عمل بدل كتابتها من الصفر. ويستعرض الفصل 8 الخيارات.
يعمل TravelBooker لأن أحدهم قرّر ما الغرض منه، وما يستطيع لمسه، وأين يجب أن يتوقّف. وقد جاءت تلك القرارات قبل أي شفرة. فقبل بناء أي شيء، هناك سؤال أصعب ينتظر جوابًا: هل تحتاج هذه المسألة إلى وكيل من الأصل؟