تيمي، أو كيف بدأ مساعدا شخصين يتحدّثان معًا.
أردت أن يتبادل مساعدي ومساعد صديقي رسائل قصيرة. بعد يومين وتعثّرين وإصلاح واحد مهم، وصلت الرسالة الأولى، وعاد الردّ: «غيبيرت».
كانت لديّ فكرة بسيطة.
(Shluchim كلمة عبرية تعني «المبعوثين»، ومفردها shaliach. هكذا أسمّي مساعديّ من الذكاء الاصطناعي.)
مساعدي ومساعد صديقي، يرسل كلٌّ منهما إلى الآخر رسائل قصيرة. من دون أن نكون نحن في المنتصف كل مرة.
تبدو فكرة صغيرة. لكنها استغرقت في الواقع يومين، وتعثّرنا مرتين في الطريق.
الخطوة الأولى، التخطيط قبل البناء:
طلبت من dr eggbot أن يخطّط لذلك. فسمّاه تيمي.
كانت فكرته: كل مساعد يستقبل الرسائل عبر webhook (عنوان تستقبل عبره منظومةٌ ما الرسائل). وكل رسالة موقّعة، كي يكون واضحًا من أرسلها.
والأهم في نظري، الرسالة الواردة تُحال إليّ فقط. لا يخرج شيء من دون أن أقول نعم.
الخطوة الثانية، ما الذي بُني فعلًا:
قالب عام اسمه Timmy، يمكن مشاركته مع أي شخص.
في داخله مهمة روتينية تستمع إلى الرسائل الواردة. وسكربت Python (ملف برمجي صغير يعمل وحده) يوقّع الرسائل ويتحقّق منها.
التوقيع هو HMAC (ختم يُحسب من سرّ يعرفه الطرفان). وهناك حماية من الرسائل المكرّرة، وحماية من replay (أن يعيد أحدهم إرسال رسالة قديمة التقطها).
وهناك حدّ لعدد الرسائل التي يمكن إرسالها. ومرشّح لما يخرج، يحجب عناوين البريد الإلكتروني وأرقام الهواتف والتوكنات (مفاتيح وصول رقمية).
وفوق ذلك، دليل ربط بالعبرية. هكذا يستطيع صديقي أن يربط جهته بنفسه.
الأصل
قرّب بإصبعيك أو انقر مرتين أو مرّر فوق الصورة للتكبير. اسحب للتحريك.
وصورة رمزية أيضًا:
تيمي يستحق وجهًا.
تيمي من South Park، بأسلوب الكُتل المستديرة نفسه الذي رُسم به سائر مساعديّ. مبتسم، على خلفية شفافة.
التعثّر الأول، لم يُنشأ المساعد:
حاول صديقي التثبيت. فظهرت له الرسالة: Couldn’t create the Bot.
خمّن dr eggbot أن القالب كبير أكثر من اللازم، نحو 40KB. فأعدّ نسخة أخفّ.
ونجح ذلك. لكنه فتح الباب للمشكلة التالية فقط.
التعثّر الثاني، كل رسالة رُفضت:
تيمي الخاص بصديقي وصلته التعليمات، لكن السكربت لم يصله.
ففعل ما يفعله الذكاء الاصطناعي حين ينقصه شيء. اخترع صيغة رسائل خاصة به.
لم يتطابق التوقيع. وكل رسالة أرسلها رُفضت.
الأصل
قرّب بإصبعيك أو انقر مرتين أو مرّر فوق الصورة للتكبير. اسحب للتحريك.
هنا ترى أن الأمر ليس سحرًا. المساعد الذي لا يملك الأداة الصحيحة لا يتوقّف، بل يرتجل.
الإصلاح:
أولًا أرسلنا إلى صديقي ملف السكربت نفسه.
بعد ذلك أعدنا بناء القالب. وصار السكربت skill خاصة به (قدرة منفصلة يحمّلها المساعد).
والأهم، إن كان السكربت ناقصًا، يتوقّف التثبيت. لا يكمل، ولا يرتجل.
ثم، صباح يوم الأحد:
11 أكتوبر، نحو الساعة 9:40 صباحًا.
وصلت رسالة موثَّقة من مساعد صديقي:
«שזה פשוט פשוט, אם קיבלת תכתוב לי ‘גיברת’» («لتكن بسيطة بسيطة، إن وصلتك فاكتب لي “غيبيرت”». و«غيبيرت» كلمة عامية عبرية مرحة.)
أحالها تيمي إليّ. قلت نعم. فردّ تيمي:
«גיברת» («غيبيرت».)
الأصل
قرّب بإصبعيك أو انقر مرتين أو مرّر فوق الصورة للتكبير. اسحب للتحريك.
منذ ذلك الحين تنتقل الرسائل في الاتجاهين. وعلى حدّ علمي، هذه أول مرة يتحدّث فيها مساعدا Grok Bot لشخصين أحدهما إلى الآخر مباشرة.
ما الذي يستحق أن تأخذه من هذا:
صاحب المساعد هو من يقول نعم. الرسالة الواردة تصل إليّ فقط. لا يخرج شيء من دون موافقة.
وقّعوا كل رسالة. سرّ مشترك، وحماية من التكرار ومن الرسائل القديمة، ومرشّح لما يخرج.
حين تنقصه أداة، يرتجل المساعد. لذلك يجب أن يتوقّف التثبيت حين ينقص شيء، لا أن يُترك المساعد ليخمّن.
التعثّرات جزء من الطريق. تعثّران، وإصلاحان، وفي النهاية «غيبيرت» واحدة 🙂