defineSkill
عرّف مهارات وكلاء الذكاء الاصطناعي
defineSkill
عرّف مهارات وكلاء الذكاء الاصطناعي
تُحدِّد المهارات تعليمات وإمكانات قابلة لإعادة الاستخدام يمكن لوكلاء الذكاء الاصطناعي استخدامها داخل مساحة العمل لديك. استخدم النقاط الرئيسية:
defineSkill() لتعريف مهارات مع تحقّق مدمج:src/skills/example-skill.ts
nameهي سلسلة معرّف فريدة للمهارة (يُنصَح باستخدام kebab-case).labelهو اسم العرض المقروء للبشر الظاهر في واجهة المستخدم.contentيحتوي على تعليمات المهارة — وهو النص الذي يستخدمه وكيل الذكاء الاصطناعي.icon(اختياري) يحدّد الأيقونة المعروضة في واجهة المستخدم.description(اختياري) يوفّر سياقًا إضافيًا حول غرض المهارة.
defineAgent
عرِّف وكلاء الذكاء الاصطناعي باستخدام موجهات مخصّصة
defineAgent
عرِّف وكلاء الذكاء الاصطناعي باستخدام موجهات مخصّصة
الوكلاء هم مساعدون ذكاء اصطناعي يعيشون داخل مساحة العمل لديك. استخدم النقاط الرئيسية:ملاحظات حول المخطط:
defineAgent() لإنشاء وكلاء بموجه نظام مخصّص:src/agents/example-agent.ts
nameهي سلسلة معرّف فريدة للوكيل (يُنصح باستخدام kebab-case).labelهو اسم العرض الظاهر في واجهة المستخدم.promptهو موجه النظام الذي يحدّد سلوك الوكيل.description(اختياري) يوفّر سياقًا حول ما يفعله الوكيل.icon(اختياري) يحدّد الأيقونة المعروضة في واجهة المستخدم.modelId(اختياري) يتجاوز نموذج الذكاء الاصطناعي الافتراضي الذي يستخدمه الوكيل.responseFormat(اختياري) يتحكم في شكل مخرجات الوكيل. القيمة الافتراضية هي{ type: 'text' }للنص الحر. استخدم{ type: 'json', schema }لفرض مخرجات JSON منظمة.
responseFormat إلى { type: 'json' } ووفّر schema:src/agents/structured-agent.ts
- المخطط كائن مسطح: يجب أن يكون
typeلكل خاصية نوعًا بدائيًا (stringأوnumberأوboolean). الكائنات المتداخلة والمصفوفات غير مدعومة. description(اختياري) على كل خاصية يوجه النموذج لما يجب وضعه هناك.required(اختياري) يسرد الخصائص التي يجب على النموذج إرجاعها دائمًا.additionalProperties: false(اختياري) يمنع أي خاصية غير معرّفة فيproperties.
runAgent
تشغيل وكيل من دالة منطقية
runAgent
تشغيل وكيل من دالة منطقية
تتيح لبوتات المحادثة متعددة الجولات (Slack, Discord, Teams, …)، مرر سجل سلسلة المحادثة كـ
النقاط الرئيسية:ثم يعمل التنفيذ باستخدام دور العضو نفسه: يمكنه القيام بكل ما يمكن
لذلك العضو القيام به ولا أكثر، وتنسب إليه السجلات التي ينشئها، وتُطبَّق أذوناتُه على مستوى الصف. لا يشارك دور الوكيل — فهو الإعداد الافتراضي للتطبيق لعمليات التنفيذ التي لا يقف خلفها أي شخص. احذف الحقل في عمليات التنفيذ الذاتية (المهام المجدولة، مشغلات أحداث قاعدة البيانات): في هذه الحالة يحتفظ الوكيل بدوره الخاص. يبقى التطبيق الفاعل مرتبطًا بسياق التنفيذ لأغراض التتبّع وإثبات المصدر، دون تقييد أذونات العضو.تطبيقك مسؤول عن تعيين الشخص الذي شغّل التنفيذ إلى عضو في مساحة العمل. يتطلب تسمية عضو ما رمز وصول للتطبيق، وما يمكن للرمز تسميته يعتمد على ما إذا كان يتضمن مستخدمًا أم لا:
runAgent() لدالة منطقية تشغيل أحد وكلاء تطبيقك (مع مهاراته وأدواته). حدِّد الوكيل بواسطة universalIdentifier الذي مررته إلى defineAgent(). مرر إما سلسلة prompt أو سجل المحادثة messages
— وليس كليهما معًا:src/logic-functions/run-enricher.ts
messages بدلًا من استخدام prompt واحد فقط:src/logic-functions/reply-in-thread.ts
- قدِّم واحدًا فقط من
prompt(سلسلة نصية) أوmessages(من 1 إلى 100 عنصر من{ role: 'user' | 'assistant', content: string }). - يعمل الوكيل بشكل متزامن ويمكنه قراءة/تحديث السجلات بنفسه عبر أدواته الخاصة — يتم حل
runAgent()بمجرد اكتمال التشغيل. - لا يمكن للتطبيق تشغيل سوى وكلائه الخاصين.
- يجب أن يمنح الدور الافتراضي للتطبيق علامة الإذن
AI— أضِفSystemPermissionFlag.AIإلىpermissionFlagUniversalIdentifiersالخاصة به (أو عيِّنcanAccessAllTools: true). بدون ذلك، تفشلrunAgent()بخطأ في الأذونات. - اضبط قيمة كبيرة لـ
timeoutSecondsعلى الدالة المنطقية — قد يستغرق تشغيل الوكيل عدة ثوانٍ. - يكون
successبقيمةtrueوresultغير فارغ عند اكتمال التشغيل؛ في حال الفشل يكونsuccessبقيمةfalse، وresultبقيمةnull، وتحتويerrorعلى السبب (على سبيل المثال، عندما تنفد أرصدة الذكاء الاصطناعي الخاصة بمساحة العمل أثناء التشغيل).
src/roles/default-role.ts
التشغيل نيابةً عن أحد أعضاء مساحة العمل
مررrunAsWorkspaceMemberId عندما يتم تشغيل التنفيذ بواسطة شخص — مثل روبوت دردشة يجيب على رسالة، مثلاً — لكي يتصرف الوكيل بصفة ذلك العضو بدلًا من التطبيق:src/logic-functions/answer-question.ts
- يمكن لرمز بدون مستخدم مرفق أن يسمّي أي عضو. تعمل الدالة المنطقية بدون مستخدم، وكذلك الرموز المُنشأة عبر
client_credentialsأو من مفتاح API. - لا يمكن لرمز مُصدَر نيابةً عن مستخدم، كما يستقبله مكوّن الواجهة الأمامية، أن يسمّي إلا العضو الخاص بذلك المستخدم فقط.