00:00:00إحدى أبسط الطرق لجعل وكلاء الذكاء الاصطناعي الخاصين بك أكثر قوة هي ببساطة منحهم
00:00:03الوصول إلى bash، لكن ذلك قد يكون معقدًا بعض الشيء. فأنت بحاجة إلى صدفة (shell) حقيقية، ونظام ملفات،
00:00:09وخوادم وحاويات، وبشكل عام الكثير من البنية التحتية، أو على الأقل كان هذا هو الحال سابقًا.
00:00:13لكن ماذا لو أخبرتك أن هناك طريقة أبسط؟ يمكنك في الواقع استخدام تنفيذ typescript
00:00:18لـ bash. أعلم أن هذا قد يبدو جنونيًا بعض الشيء، لكن صدقني هذا أمر رائع للغاية
00:00:22ويمكنه حتى توفير المال لك. دعني أريك كيف.
00:00:30هذه حزمة جديدة تسمى justbash ويمكنك أن ترى في ملف التوضيح (readme) أنها تقول “بيئة
00:00:34bash محاكاة مع نظام ملفات افتراضي في الذاكرة مكتوب بلغة typescript. تم تصميم
00:00:38هذا لوكلاء الذكاء الاصطناعي الذين يحتاجون إلى بيئة bash آمنة ومعزولة.”
00:00:42ولكن قبل أن أريك كيف يمكنك ربط هذا بوكلاء الذكاء الاصطناعي لمنحهم
00:00:45المزيد من القدرات، أريد فقط أن أريك بعض الأكواد البسيطة جدًا ليكون لديك سياق
00:00:48حول كيفية عمل ذلك. هنا أقوم ببدء بيئة bash جديدة من حزمة justbash
00:00:53وداخلها يمكننا تشغيل أوامر bash الخاصة بنا. نحن نستخدم env.exec وهنا ببساطة
00:00:57أقوم بتشغيل أمر bash وهو echo hello وأطلب حفظ ذلك في ملف يسمى
00:01:01greeting.txt. ثم في السطر التالي أقوم بتشغيل exec مرة أخرى في نفس البيئة قائلًا
00:01:06أنني أريد الآن قراءة ملف greeting.txt هذا. ويمكنك أن ترى أنه يمكننا فعليًا تسجيل
00:01:10المخرجات القياسية للنتيجة التي نحصل عليها هناك، ورمز الخروج وأيضًا متغيرات
00:01:14البيئة، وعندما أقوم بتشغيل هذا يمكنك أن ترى أنه نجح في كتابة هذا الملف وأيضًا
00:01:18قراءته. نحصل على رمز خروج صفر ثم متغيرات البيئة في صدفة
00:01:22bash المحاكاة الخاصة بنا. لكن الشيء المهم الذي يجب تذكره هنا هو كما قلت، هذه مجرد
00:01:26صدفة bash محاكاة، إنها حرفيًا نسخة من أوامر bash تلك مكتوبة بلغة typescript.
00:01:30لذا فهي ليست متصلة فعليًا بأي صدفة حقيقية، إنها ببساطة تحول الأمر الذي
00:01:34نعطيه إياه هنا إلى typescript وتشغله. لذا فإن هذا الملف المسمى greeting.txt
00:01:39غير موجود في أي نظام ملفات حقيقي، بل هو في الواقع نظام ملفات افتراضي في الذاكرة بالرغم من
00:01:44وجود خيارات إذا كنت ترغب في ربط نظام ملفات حقيقي. لذا فإن الطريقة البسيطة للتفكير فيما
00:01:47تفعله هي أنها تأخذ ببساطة أمر bash الذي نكتبه داخل وظيفة exec
00:01:51وتحوله إلى وظيفة javascript ثم تقوم بتشغيلها، مما يعني أنها لا
00:01:55تحتاج إلى صدفة حقيقية ويمكننا رؤية ذلك في قاعدة الأكواد هنا. عندما أضع echo داخل
00:01:59exec فهي في الواقع تشغل وظيفة javascript هذه، ويمكننا أن نرى أن لديها ببساطة منطقًا
00:02:03لتحليل الأعلام التي يمتلكها أمر echo في bash وتحويلها إلى javascript
00:02:08ثم ببساطة طباعة مخرجات أي شيء نضعه بعد echo ويمكنك أن ترى
00:02:11بالأسفل هنا أنها ترجع ببساطة كائنًا يحتوي على المخرجات القياسية مع المخرجات في
00:02:15javascript والخطأ القياسي وأيضًا رمز الخروج. وإذا كنت تعتقد أنها لا تستطيع
00:02:19ربما التعامل مع جميع أساسيات bash، يمكنك في الواقع رؤية قائمة هنا بجميع
00:02:23الأوامر المدعومة وهي تحتوي حقًا على الكثير منها، مثل cat وcopy وawk و
00:02:27base64، ولديها أوامر متقدمة لمعالجة البيانات مثل jq وpython 3 وsqlite ويمكنك حتى
00:02:33تشغيل طلبات الشبكة أيضًا باستخدام curl. يمكنك في الواقع إعداد قائمة بيضاء بحيث تكون
00:02:36آمنة حقًا، وهناك أيضًا ميزات الصدفة هنا؛ فهي تحتوي على الأنابيب (pipes) وإعادة التوجيه وتسلسل
00:02:41الأوامر، إنها تمنحك حقًا كل ما توفره صدفة bash الأساسية. لذا يمكنك أن ترى
00:02:45أن الحزمة رائعة حقًا ولديها الكثير من الوظائف ولكنك ربما لا تزال
00:02:48تتساءل لماذا قد ترغب فعليًا في تنفيذ bash بلغة typescript وكيف يمكن أن يساعد ذلك وكلاءك
00:02:53ويوفر لك المال. حسنًا، للإجابة على ذلك دعني أريك إحدى حالات استخدامها مع
00:02:57تطبيق دردشة بسيط جدًا. الآن لنفترض أنني أردت في تطبيق الدردشة هذا التحدث عن ملف json هذا، وهو
00:03:02ملف json يحتوي على الكثير من السجلات، ولنقل أنني أردت أن أطلب من الذكاء الاصطناعي استرجاع
00:03:06معلومات معينة داخل هذا الملف أو ربما إجراء بعض التحليلات على بعض هذه الحقول، يمكنك
00:03:11أن ترى أنه ملف ضخم للغاية. إحدى أبسط الطرق ولكنها بالتأكيد خاطئة للقيام
00:03:15بذلك هي أن تأخذ محتويات الملف بأكمله وتضعها داخل المطالبة (prompt)، يمكنك
00:03:19أن ترى هنا أنني أستخدم ai sdk وأستخدم أيضًا gpt 5.2. إذا قمنا بتشغيل هذا الوكيل
00:03:24وطلبنا منه جلب سجل معين، يمكنك أن ترى أن المساعد سيرد ويمكنني
00:03:28تأكيد أن هذا صحيح لأن هذه النماذج الأكبر جيدة جدًا في استرجاع القيم من سياقها
00:03:33الكبير ولكن المشكلة هي أن هذا استخدم 133,000 توكن (token) وسيبدأ أيضًا
00:03:39في الانهيار إذا سألته بعض الأسئلة الأكثر تقدمًا، ربما تريد إجراء بعض التلاعب بالبيانات
00:03:43أو سؤاله عن بيانات ضمن نطاقات معينة. كما قلت، من الواضح أن هذه هي الطريقة
00:03:48الخاطئة للقيام بالأمور، لذا فإن الطريقة التالية التي ربما حاولت تجربتها من قبل هي طريقة RAG
00:03:51أو حتى منح الوكيل بيئة معزولة (sandbox) حتى يتمكن من تشغيل أوامر bash والتلاعب
00:03:56بالبيانات بهذه الطريقة، لكن المشكلة في هذه الأساليب هي أنك ستحتاج إلى الكثير من البنية التحتية.
00:04:00بدلاً من ذلك، دعونا نحاكي هذا باستخدام just bash. للقيام بذلك مع ai sdk يمكنك في الواقع
00:04:05استخدام حزمة bash tool المبنية فوق just bash وما يسمح لنا
00:04:09هذا بفعله هو أنه في نقطة نهاية api الخاصة بنا للدردشة يمكننا إنشاء أداة bash جديدة
00:04:13وتمرير أي ملفات نريدها أن تكون في بيئة bash المحاكاة الخاصة بنا، ففي حالتي
00:04:17أقوم بتمرير ملف json هذا الذي كان لدينا سابقًا، الملف الكبير جدًا، ثم أقوم أيضًا
00:04:21بإعداد الوجهة التي ستذهب إليها هذه الملفات؛ حيث ستذهب إلى مجلد workspace محاكى.
00:04:26بعد ذلك، كل ما نحتاج إلى فعله في البث (stream) الذي لدينا من ai sdk هو تمريره
00:04:31عبر أداة bash التي لدينا، وهي bashTool.bash، وقد قمت أيضًا بتمرير بعض
00:04:34تعليمات الوكيل التي يمكنك العثور عليها في مجلد node modules، وهي مجرد تعليمات
00:04:39وفرتها الحزمة لمساعدة وكيل الذكاء الاصطناعي الخاص بك على فهم كيفية استخدام أداة
00:04:42bash. الآن مع هذا الإعداد البسيط للغاية، إذا سألنا المساعد نفس السؤال بالضبط
00:04:46لجلب معلومة من ملف json هذا، فبدلاً من استخدام سياقه الخاص
00:04:50والحاجة إلى البحث كمن يبحث عن إبرة في كومة قش، يمكنك أن ترى أنه يذهب في الواقع
00:04:54ويشغل بعض أوامر bash، ولكن مرة أخرى هذا يتم في بيئة typescript المحاكاة الخاصة بنا.
00:04:58في هذه الحالة، حاول تشغيل أمر jq ولكن يبدو أنه واجه خطأ، لذا في
00:05:02الخطوة التالية قام بتشغيل أمر head bash حتى يتمكن من رؤية الشكل الفعلي لهذا الملف
00:05:06وبهذه الطريقة حصل على التنسيق الصحيح لأمر jq وأعطانا إجابتنا. لذا نعم، رغم أننا
00:05:10حصلنا على نفس الإجابة بالضبط وربما استغرق الأمر وقتًا أطول قليلاً، إلا أن المفتاح هنا
00:05:15هو أنه يمكنك أن ترى فعليًا أنه استغرق 6000 توكن إدخال بينما الطريقة الأخرى استغرقت
00:05:19133,000. هذه ببساطة طريقة أفضل بكثير للتعامل مع السياق الطويل،
00:05:24وهذه ليست ميزتها الوحيدة، فهي تصبح أقوى بكثير عندما تبدأ في
00:05:28طرح أسئلة أعمق حول بياناتك. على سبيل المثال، إذا سألته كم عدد السجلات بين
00:05:331000 و2500 التي تحتوي على metadata.active true، يمكنك أن ترى
00:05:37أنه يمكنه ببساطة الذهاب وتشغيل أمر bash والحصول على الإجابة فورًا. إذا جربت
00:05:41هذا بالفعل في النسخة الأخرى، أولاً سيستهلك الكثير من السياق وثانيًا ربما
00:05:45سيعطيك إجابة خاطئة بناءً على التخمين. هذا سيكون أدق بكثير لأنك
00:05:49ببساطة تقول للوكيل: مرحبًا، لديك وصول كامل إلى صدفة bash بالرغم من
00:05:53أنه تقنيًا لا يملك ذلك. إنها حقًا إضافة مجانية بسيطة يمكنك تقديمها
00:05:57لوكلاءك لجعلهم أقوى دون الحاجة إلى بنية تحتية إضافية، وهذا
00:06:01ما أحبه حقًا فيها. آمل أن أكون قد عرضت حالة استخدام واحدة فقط، لكن
00:06:05صدقني هناك الكثير غيرها؛ فكما رأينا سابقًا يمكنك تشغيل أوامر python وsql وcurl
00:06:10أساسية هنا، وإذا أردت يمكنك فعليًا ربط هذا بنظام ملفات حقيقي.
00:06:14أخبرني برأيك في just bash في التعليقات أدناه، وأثناء وجودك هناك اشترك
00:06:18وكالعادة، أراك في الفيديو القادم.