زمینه توسعه هوش مصنوعی به سرعت در حال تغییر است. ما از چتباتهای ساده و APIهای مبتنی بر پرامپت فراتر میرویم و به سمت جریانهای کاری عاملمحور (Agentic Workflows) پیچیده و خودمختار حرکت میکنیم. اگرچه فریمورکهای زیادی برای ساخت این سیستمها وجود دارد، اما تعداد کمی از آنها یکپارچگی ساختاری و تجربه توسعهدهنده مورد نیاز برای برنامههای درجه تولید را ارائه میدهند. Mastra به عنوان یک فریمورک نوظهور مبتنی بر TypeScript، که به طور خاص برای ساخت برنامههای هوش مصنوعی قابل اعتماد و آماده تولید طراحی شده است، وارد میدان میشود.
در این پست، بررسی خواهیم کرد که چرا Mastra در میان انبوه فریمورکهای عامل متمایز است، چگونه مفاهیم کلیدی آن مانند جریانهای کاری (Workflows) و حافظه (Memory) چالشهای رایج LLM را حل میکنند، و چگونه میتوانید با استفاده از مثالهای کد عملی، ساخت اولین عامل خود را آغاز کنید.
چه چیزی Mastra را متفاوت میکند؟
بیشتر فریمورکهای LLM موجود تمرکز زیادی بر روی «چه چیزی» — یعنی چه مدلی را استفاده کنیم و چگونه پاسخ را تجزیه کنیم — دارند. با این حال، ساخت عاملهای مستحکم نیازمند حل مسئله «چگونه» است — چگونه وضعیت را حفظ کنیم، چگونه وظایف طولانیمدت را مدیریت کنیم و چگونه ثبات را در فراخوانیهای متعدد تابع تضمین کنیم. Mastra با ادغام سه ستون فقرات حیاتی به این مسائل میپردازد:
- پشتیبانی بومی از TypeScript: با در نظر گرفتن ایمنی نوع (Type Safety) ساخته شده است، که تضمین میکند عاملهای شما دارای نوع ایمن باشند و عیبیابی آنها آسانتر باشد.
- جریانهای کاری اعلانی (Declarative): رویکردی بصری و کد-محور برای تعریف فرآیندهای چندمرحلهای.
- حافظه داخلی: یکپارچگی بینقص با پایگاههای داده برداری برای ارائه زمینه بلندمدت به عاملهای شما.
مفهوم کلیدی: جریانهای کاری
یکی از قدرتمندترین ویژگیهای Mastra موتور جریان کاری آن است. برخلاف پرامپتهای ساده زنجیرهای تفکر (Chain-of-thought)، جریانها به شما امکان میدهند جریانهای منطقی پیچیده، از جمله انشعابات شرطی، اجرای موازی و مدیریت خطا را تعریف کنید. این موضوع برای عاملهایی که نیاز به انجام وظایفی مانند «جستجو برای داده، تحلیل نتایج و اگر امتیاز اطمینان پایین است، پرسیدن توضیح از کاربر» دارند، حیاتی است.
بیایید به یک مثال عملی از تعریف یک جریان کاری ساده در Mastra نگاهی بیندازیم. این مثال نحوه ایجاد مرحلهای را نشان میدهد که ورودی کاربر را قبل از ارسال به LLM پردازش میکند.
import { Workflow, step } from '@mastra/core';
// تعریف مرحلهای که ورودی را اعتبارسنجی میکند
const validationStep = step('validate-input', async (input) => {
if (!input.query) {
throw new Error('Query is required');
}
return { isValid: true, data: input };
});
// تعریف مرحلهای که کوئری را پردازش میکند
const processingStep = step('process-query', async (context) => {
// منطق برای پردازش دادههای اعتبارسنجی شده
return { result: 'Processed Data' };
});
// ایجاد جریان کاری
const myWorkflow = new Workflow('data-processor')
.addStep(validationStep)
.addStep(processingStep)
.run();
پیادهسازی حافظه برای آگاهی زمینهای
برای اینکه یک عامل واقعاً مفید باشد، باید تعاملات گذشته را به خاطر بسپارد. Mastra یک سیستم حافظه داخلی ارائه میدهد که به راحتی با فروشگاههای برداری محبوب مانند Pinecone، Weaviate یا Supabase یکپارچه میشود. این امکان را به عامل شما میدهد تا هنگام پاسخگویی به سوالات، زمینه تاریخی مرتبط را بازیابی کند که این امر توهمات (Hallucinations) را کاهش داده و ارتباط موضوعی را بهبود میبخشد.
در اینجا نحوه پیکربندی حافظه در یک عامل Mastra آمده است:
import { Memory } from '@mastra/memory';
const memory = new Memory({
storage: {
type: 'sqlite', // یا 'pinecone', 'weaviate' و غیره
},
queries: {
topK: 3,
},
});
// ذخیره یک نوبت مکالمه
await memory.storeMessages([
{
role: 'user',
content: 'بهترین شیوهها برای TypeScript چیست؟',
id: 'msg-1'
},
{
role: 'assistant',
content: 'اینجا ۵ شیوه برتر هستند...',
id: 'msg-2'
}
]);
// بازیابی زمینه مرتبط
const context = await memory.recall('بهترین شیوهها برای TypeScript');
کاربرد عملی: ساخت یک عامل تحقیقاتی
با ترکیب جریانهای کاری و حافظه، میتوانید یک عامل تحقیقاتی پیچیده بسازید. تصور کنید عاملی که میتواند یک موضوع را دریافت کند، مقالات اخیر را جستجو کند، آنها را خلاصه کند و یافتهها را برای ارجاعات آینده در حافظه خود ذخیره کند. ساختار Mastra این کار را ماژولار و قابل نگهداری میکند.
با بهرهگیری از APIهای دارای نوع ایمن Mastra، میتوانید تضمین کنید که هر مرحله در خط لوله عامل شما در زمان کامپایل اعتبارسنجی میشود که این امر به طور قابل توجهی خطاهای زمان اجرا را کاهش میدهد. این موضوع به ویژه در محیطهای سازمانی که قابلیت اطمینان در اولویت اول است، بسیار مفید است.
نتیجهگیری
Mastra گام مهمی در تکامل فریمورکهای عامل محسوب میشود. با اولویت دادن به TypeScript، جریانهای کاری ساختاریافته و حافظه یکپارچه، این فریمورک ابزارهای لازم را برای توسعهدهندگان فراهم میکند تا برنامههای هوش مصنوعی را نه تنها کاربردی، بلکه مستحکم و قابل نگهداری بسازند. با حرکت صنعت به سمت سیستمهای هوش مصنوعی خودمختارتر و پیچیدهتر، فریمورکهایی مانند Mastra نقش حیاتی در استانداردسازی شیوههای توسعه ایفا خواهند کرد. برای توسعهدهندگان متوسط تا پیشرفتهای که به دنبال فراتر رفتن از یکپارچهسازیهای ساده LLM هستند، Mastra فریمورکی ارزش بررسی و پذیرش است.