إذا كنت جديدًا في بناء الوكلاء، تأكد أولاً من قراءة مقدمة للوكلاء و جولة إرشادية في smolagents.
وكلاء الرموز #
متعدد البحث الأوراق أظهرت أن جعل LLM يكتب إجراءاته (استدعاءات الأداة) في شيفرة برمجية أفضل بكثير من التنسيق القياسي الحالي لاستدعاء الأداة، والذي يتمثل في مختلف ألوان الصناعة في "كتابة الإجراءات على هيئة JSON لأسماء الأدوات والوسائط التي يجب استخدامها".
لماذا الكود أفضل؟ حسناً، لأننا صممنا لغاتنا البرمجية خصيصاً لتكون رائعة في التعبير عن الإجراءات التي يقوم بها الحاسوب. لو كانت مقتطفات JSON هي الطريقة الأفضل، لكانت هذه الحزمة مكتوبة بمقتطفات JSON ولكان الشيطان يضحك علينا.
البرمجة هي مجرد طريقة أفضل للتعبير عن الإجراءات على الكمبيوتر. لديها أفضل:
- قابلية التركيب: هل يمكنك تداخل إجراءات JSON داخل بعضها البعض، أو تحديد مجموعة من إجراءات JSON لإعادة استخدامها لاحقًا، بنفس الطريقة التي يمكنك بها تحديد دالة بايثون؟
- إدارة الكائنات: كيف يمكنك تخزين مخرجات إجراء مثل
توليد_صورة
في JSON؟ - العمومية: تم تصميم التعليمات البرمجية للتعبير ببساطة عن أي شيء يمكنك القيام به على الكمبيوتر.
- التمثيل في مجموعة تدريب LLM: لماذا لا نستفيد من هذه البركة التي أدرجت بالفعل الكثير من الأعمال النوعية في مجموعة التدريب على الماجستير في القانون؟
وهذا موضح في الشكل أدناه، المأخوذ من إجراءات التعليمات البرمجية القابلة للتنفيذ تستنبط وكلاء LLM أفضل.

لهذا السبب ركزنا على اقتراح وكلاء الشيفرة، وفي هذه الحالة وكلاء بايثون، مما يعني بذل جهد أكبر في بناء مترجمي بايثون آمنين.
مترجم بايثون المحلي #
بشكل افتراضي، فإن CodeAgent
يُنفِّذ شيفرة من إنشاء LLM في بيئتك. لا يتم تنفيذ هذا التنفيذ بواسطة مترجم Python الفانيليا: لقد أعدنا بناء LocalPythonInterterterter
من الألف إلى الياء. تم تصميم هذا المترجم الشفهي للأمان من خلال:
- تقييد الواردات بقائمة تم تمريرها صراحةً من قبل المستخدم
- وضع حد أقصى لعدد العمليات لمنع الحلقات اللانهائية وتضخم الموارد.
- لن ينفذ أي عملية غير محددة مسبقاً.
لقد استخدمنا ذلك في العديد من حالات الاستخدام، دون أن نلاحظ أي ضرر على البيئة.
ومع ذلك، فإن هذا الحل ليس محكمًا: يمكن للمرء أن يتخيل حالات يمكن فيها أن تضر بيئتك بحزم LLMs المضبوطة بدقة من أجل أفعال خبيثة. على سبيل المثال إذا سمحت بحزمة غير ضارة مثل وسادة
لمعالجة الصور، يمكن لمحرك LLM أن يولد آلاف من الصور المحفوظة لتضخيم القرص الصلب الخاص بك. هذا بالتأكيد غير محتمل إذا كنت قد اخترت محرك LLM بنفسك، ولكن قد يحدث ذلك.
لذلك إذا كنت تريد أن تكون أكثر حذراً، يمكنك استخدام خيار تنفيذ التعليمات البرمجية عن بعد الموضح أدناه.
منفِّذ كود E2B #
لأقصى قدر من الأمان، يمكنك استخدام تكاملنا مع E2B لتشغيل الشيفرة البرمجية في بيئة رمل. هذه خدمة تنفيذ عن بُعد تقوم بتشغيل الشيفرة البرمجية الخاصة بك في حاوية معزولة، مما يجعل من المستحيل أن تؤثر الشيفرة البرمجية على بيئتك المحلية.
لهذا الغرض، ستحتاج إلى إعداد حساب E2B الخاص بك وتعيين E2B_API_KEY
في متغيرات بيئتك. توجه إلى وثائق البداية السريعة لـ E2B للمزيد من المعلومات
ثم يمكنك تثبيته باستخدام تثبيت برنامج e2b-Code-interterter python-dotenv
.
أنت الآن جاهز!
لتعيين منفذ التعليمات البرمجية على E2B، ما عليك سوى تمرير العلامة استخدام_e2b_executor=صحيح
عند تهيئة CodeAgent
. لاحظ أنه يجب عليك إضافة جميع تبعيات الأداة في واردات_مصرح بها_إضافية
بحيث يقوم المنفذ بتثبيتها.
تم النسخ
من smolagents smolagents استيراد CodeAgent, VisitWebpageTool, HfApiModel وكيل = CodeAgent( الأدوات = [VisitWebpageTool()], النموذج = HfApiModel(), إضافي_مصرح به_مستوردات=["الطلبات"، "markdownify"], use_e2b_executor=صحيح ) agent.run("ما هو الحيوان الأليف المفضل لدى أبراهام لينكولن؟")
تنفيذ الشيفرة البرمجية E2B غير متوافق مع الوكلاء المتعددين في الوقت الحالي - لأن وجود وكيل يستدعي في كتلة شيفرة ينبغي تنفيذها عن بُعد هو أمر فوضوي. لكننا نعمل على إضافتها!