Skip to main content
كل مقتطف TypeScript في هذه الصفحة هو وحدة ES كاملة ومستقلة (.mts). تُفحص أنواع المقتطفات وتُنفَّذ على نسخة من SDK محزومة محليًا بواسطة npx tsx scripts/verify-docs-snippets.ts، فتبقى متوافقة مع الواجهة البرمجية الفعلية. وجميعها تعمل كما هي مع المزوّد الوهمي المضمَّن في SDK، دون حاجة إلى مفتاح API، ما عدا الأول، فهو يخاطب نموذجًا حقيقيًا ولذلك تُفحص أنواعه فقط.

ابدأ مشروعًا جديدًا

أسرع طريق للبدء أمر واحد ينشئ مشروعًا قابلًا للتشغيل (وكيل، وأداة نموذجية، واختبار يعمل دون اتصال، وملف .env.example لمزوّدك)، ويثبّت اعتمادياته وينفّذ git init:
الأمر npm create lousho-agent my-agent مكافئ له، وكذلك npx @lousho/build-ai-agent init my-agent حين لا تكون SDK مثبّتة بعد (فالأمر npx lousho المجرّد لا يجد الأمر lousho إلا بعد وجود SDK في node_modules لديك). ومن دون وسائط يسأل init عن المجلد والمزوّد والقالب؛ وفي السكربتات مرّر --yes (القيم الافتراضية: القالب minimal والمزوّد الذي ضُبط متغير مفتاح API الخاص به، وإلا OpenAI). رايات مفيدة: --provider openai|anthropic|openrouter|ollama، --template minimal|tools|yaml، --package-manager npm|pnpm|yarn|bun، --no-install، --no-git، --force (الكتابة في مجلد غير فارغ). ويسردها lousho init --help كلها. تفضّل إضافة SDK إلى مشروع قائم؟ ثبّتها يدويًا (راجع التثبيت):
هذا هو الإصدار الرئيسي الحالي من ai؛ ومع Ollama استخدم ai@^4.3.19 مع ollama-ai-provider@^1.2.0 (راجع أزواج الحزم المتوافقة).

1. «مرحبًا بالعالم» في خمسة أسطر

createAgent() هي نقطة الدخول التي لا تحتاج إلى إعداد: تعطيها سلسلة provider/model وتعليمات، فتعطيك وكيلًا بواجهة { send }. يُقرأ مفتاح API من متغير البيئة المتعارف عليه للمزوّد (OPENAI_API_KEY هنا؛ وANTHROPIC_API_KEY أو OPENROUTER_API_KEY أو OLLAMA_BASE_URL للمزوّدين الآخرين).
احذف model لتترك القرار للبيئة: LOUSHO_MODEL (سلسلة provider/model) إن كان مضبوطًا، وإلا أول الموجود من OPENAI_API_KEY وANTHROPIC_API_KEY وOPENROUTER_API_KEY وOLLAMA_BASE_URL. وإذا كان مفتاح ناقصًا أو كُتبت البادئة خطأً، يخبرك الخطأ بالضبط بما يجب ضبطه أو تصحيحه. instructions اختياري؛ ويُقبل prompt اسمًا بديلًا له.

2. عندما تحتاج إلى مزوّد مخصّص

مرّر كائن مزوّد بدلًا من model عندما يكون لديك LLMProvider خاص بك، أو تريد المزوّد الوهمي للاختبارات، أو تحتاج إلى إعدادات إضافية للمزوّد. وهذا المثال لا يحتاج إلى مفتاح API:
resolveProvider('<provider>/<model>') هي الدالة التي يستخدمها model داخليًا؛ استدعِها بنفسك عندما تريد كائن المزوّد، كما في هذا المقتطف الذي يستخدم OpenAI إذا كان OPENAI_API_KEY مضبوطًا ويرجع إلى المزوّد الوهمي في غير ذلك، وهو النمط نفسه الذي تتبعه الأمثلة القابلة للتشغيل.

3. إضافة الأدوات

عرّف الأداة بـ defineTool(): تُستمد أنواع وسائط execute وneedsApproval من مخطط zod في input، ويدخل الناتج مباشرة في createAgent({ tools: [...] }). يحاكي المزوّد الوهمي استدعاء أداة كلما ذكرت رسالة المستخدم اسم أداة، ولذلك يختبر هذا المقتطف دورة استدعاء أداة حقيقية كاملة، ذهابًا وإيابًا، دون LLM.
يجب أن تتكون الأسماء من 1 إلى 64 محرفًا من الحروف والأرقام و_ أو -. وتتضمن SDK أيضًا أدوات مضمَّنة (currentDateTool، dayNameTool، httpTool، …) تمرّرها في كائن مفاتيحه الأسماء: tools: { current_date: currentDateTool }. متقدّم: ToolRegistry. لمشاركة الأدوات بين الوكلاء أو لتسجيل واصفات ToolDescriptor خام، استخدم registry.register(tool) لأداة معرَّفة أو registry.register(name, descriptor) لواصف.

4. تحكّم كامل: AgentBuilder + AgentExecutor

createAgent() مغلِّف رقيق فوق AgentBuilder والدالة الساكنة AgentExecutor.execute(). استخدمهما مباشرة فقط لما لا يقبله createAgent(): temperature وmaxTokens، وTraceExporter للتتبّع (exporter وcaptureContent). أما createAgent() فيقبل بالفعل maxSteps وlimits وonEvent والموافقات وstore (نقاط الحفظ) وhooks وcompaction. AgentExecutor واجهة ساكنة (static)، فلا وجود لـ new AgentExecutor().

5. الوكلاء التصريحيون: ملفات المواصفات

يمكن أيضًا وصف الوكيل على هيئة بيانات مجرّدة، أي AgentSpec، ثم تحويله إلى وكيل حيّ بـ specToAgent(). ويمكن كتابة البنية نفسها في ملف YAML أو JSON وتحميلها بـ loadSpec().
وعند حفظه باسم agent.yaml:
يعمل ملف المواصفات نفسه في خادم التطوير المحلي (واجهة المحادثة على /، وPOST /chat، وإعادة تحميل فورية عند الحفظ) ويُبنى خادمًا قابلًا للنشر:

الخطوات التالية