Mastra - إطار عمل وكيل الذكاء الاصطناعي TypeScript
Mastra هو إطار عمل مفتوح المصدر لوكلاء الذكاء الاصطناعي وسير العمل لـ TypeScript، من فريق Gatsby. بينما معظم أطر عمل الوكلاء موجهة للـ Python أولاً، يستهدف Mastra نظام JavaScript/TypeScript بأمان النوع الكامل: وكلاء مكتوبة بأدوات وذاكرة، سير عمل دائم معبّر عنه كرسوم بيانية مع فروع وإيقاف/استئناف، RAG مبادئ، تقييمات مدمجة، وساحة لعب تطوير محلية لتكرار الوكلاء في المتصفح.
التثبيت
| الطريقة | الأمر |
|---|
| إنشاء مشروع | npm create mastra@latest |
| أضفها إلى موجود | npm install @mastra/core |
| خادم التطوير | npm run dev (ساحة اللعب في localhost:4111) |
| موفر النموذج | npm install @ai-sdk/openai (يستخدم Vercel AI SDK) |
| التحقق | افتح ساحة اللعب |
تحديد وكيل
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
export const supportAgent = new Agent({
name: "support",
instructions: "You are a concise support agent. Cite docs when possible.",
model: openai("gpt-4o"),
tools: { searchDocs },
});
const result = await supportAgent.generate("How do I rotate my API key?");
console.log(result.text);
| الطريقة | ماذا تفعل |
|---|
.generate(input) | تشغيل مرة واحدة والعودة بالنتيجة |
.stream(input) | بث الرموز/الخطوات |
tools | أدوات مكتوبة قد يستدعيها الوكيل |
memory | ذاكرة محادثة دائمة |
الأدوات
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const searchDocs = createTool({
id: "search-docs",
description: "Search the product documentation",
inputSchema: z.object({ query: z.string() }),
outputSchema: z.object({ results: z.array(z.string()) }),
execute: async ({ context }) => {
return { results: await search(context.query) };
},
});
مخططات Zod توفر سلامة النوع من النهاية إلى النهاية — استدعاءات أداة الوكيل يتم التحقق منها وكتابتها على كلا الجانبين.
سير العمل (الرسوم البيانية الدائمة)
import { createWorkflow, createStep } from "@mastra/core/workflows";
const fetchData = createStep({ id: "fetch", execute: async () => ({ ... }) });
const analyze = createStep({ id: "analyze", execute: async ({ inputData }) => ({ ... }) });
export const pipeline = createWorkflow({ id: "pipeline" })
.then(fetchData)
.then(analyze)
.commit();
| الميزة | الغرض |
|---|
.then() | خطوات متسلسلة |
.branch() | مسارات شرطية |
.parallel() | خطوات متزامنة |
.dowhile() / .foreach() | حلقات على البيانات |
| إيقاف/استئناف | توقف مؤقت لإدخال بشري، استئناف لاحقًا |
| تنفيذ دائم | البقاء عند إعادة التشغيل |
الذاكرة
| النوع | الاستخدام |
|---|
| سجل المحادثة | الأدوار الأخيرة في السياق |
| الاستدعاء الدلالي | بحث متجه على الرسائل السابقة |
| ذاكرة العمل | حقائق دائمة عن المستخدم |
| محولات التخزين | LibSQL, Postgres, Upstash |
مبادئ RAG
| القطعة | توفير |
|---|
| تقسيم الوثيقة | تقسيم الوثائق مع استراتيجيات قابلة للتكوين |
| التضمينات | عبر موفري SDK AI |
| متاجر المتجهات | pgvector, Pinecone, Qdrant, Chroma |
| أداة الاسترجاع | وكيل الاسترجاع السلكي كأداة |
التقييمات والمراقبة
| القدرة | ملاحظة |
|---|
| تقييمات مدمجة | صلة الإجابة، الأمانة، السمية، الانحياز |
| مصنفات مخصصة | حدد مقاييسك الخاصة |
| التتبع | آثار متوافقة مع OpenTelemetry |
| ساحة اللعب | افحص تشغيل الوكيل والأدوات والذاكرة محليًا |
النشر
| الهدف | ملاحظة |
|---|
| خادم Node | mastra build ينتج خادمًا قابلاً للنشر |
| Vercel / Cloudflare / Netlify | ناشرون رسميون |
| بدون خادم | سير العمل مصمم للمضيفين بدون حالة |
Mastra مقابل أطر عمل الوكلاء الأخرى
| الجانب | Mastra | LangGraph | CrewAI |
|---|
| اللغة | TypeScript | Python | Python |
| سير العمل | رسم بياني دائم + إيقاف/استئناف | رسم بياني ذو حالة | طاقم العمل القائم على الأدوار |
| سلامة النوع | قوية (Zod من النهاية إلى النهاية) | كتابة Python | كتابة Python |
| الأفضل لـ | فريق TS/JS، تطبيقات ويب | وكلاء ذو حالة معقدة | لعب دور متعدد الوكلاء |
المقابل TypeScript لـ LangGraph؛ قارن مع CrewAI و AutoGen لـ Python.
الموارد