آنچه در این مقاله میخوانید
ساخت یک دستیار شخصی (کدنویسی تنها با ۶ خط کد)
۲۹ بهمن ۱۴۰۴
فرض کنید یکی از کاربران شما در حال دیپلوی کردن بر روی یک اپلیکیشن بر روی زیرساخت ابری است و ناگهان خطای 502 مواجه میشو. او لاگ را کپی میکند، در یک پنل وارد میکند و در کمتر از چند ثانیه پاسخی دقیق را دریافت خواهد کرد. دلیل خطا چیست، کدام سرویس در دسترس نیست، چه دستوری باید اجرا شود و چرا این مشکل رخ داده است.
این یک شرح مسئله نبوده است. چنین سیستمی را میتوان با چند خط کد ساخت. نکته مهم این است که آن چند خط کد فقط سطح ماجرا هستند، پشت آن، معماری مدلهای زبانی بزرگ و دهها تصمیم مهندسی قرار دارد.
در این مقاله از بلاگ تخصصی لیارا قرار است دقیق، علمی و در عین حال کاربردی بررسی کنیم که چگونه میتوان با 6 خط کد یک دستیار شخصی ساخت، چه اجزایی دارد و چگونه آن را به یک سیستم واقعی در محیط Production تبدیل کنیم.
آنچه در ادامه خواهیم خواند:
- دستیار شخصی مبتنی بر LLM چیست؟
- ساخت دستیار در 6 خط کد (Node.js)
- پرسونا چرا مهمتر از کد است؟
- حافظه، تفاوت بین یک پاسخ ساده و یک دستیار واقعی
- یک مثال کاربردی نزدیک به فضای فنی
- وقتی ۶ خط کد کافی نیست
- اتصال به ابزارها، قدم بعدی در هوشمندسازی
- سوالات متداول
- جمعبندی
دستیار شخصی مبتنی بر LLM چیست؟
دستیار شخصی در این مطلب به سیستمی گفته میشود که با استفاده از یک مدل زبانی بزرگ (LLM) ورودی متنی کاربر را تحلیل میکند، آن را در بستر مشخصی تفسیر میکند و پاسخی متناسب با نقش تعریفشده تولید میکند. این سیستم میتواند نقشهای مختلفی داشته باشد: مشاور DevOps، تحلیلگر لاگ، دستیار تولید محتوا، پشتیبان فنی یا حتی ابزار داخلی تیم توسعه.
بسیاری از این سیستمها از API مدلهایی استفاده میکنند که توسط شرکتهایی مانند OpenAI ارائه میشود. در سادهترین حالت، شما فقط یک درخواست HTTP ارسال میکنید و پاسخ متنی دریافت میکنید. اما در سطح عمیقتر، مدل در حال پردازش توکنها، تحلیل وابستگیهای زبانی و پیشبینی آماری توکن بعدی است.
این مدلها بر پایه معماری Transformer ساخته شدهاند؛ معماریای که در مقاله معروف «Attention Is All You Nee در سال 2017 معرفی شد و مبنای خانواده GPT شد.

ساخت دستیار در 6 خط کد (Node.js)
در سادهترین حالت، کد ما به شکل زیر است:
import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const response = await openai.responses.create({
model: "gpt-4.1-mini",
});
console.log(response.output_text);
در ظاهر، ما تنها یک متن ارسال کردهایم. اما در واقعیت، اتفاقات زیر رخ میدهد:
- متن ورودی به توکن تبدیل میشود
- مدل وابستگی بین کلمات را با مکانیزم Self-Attention تحلیل میکند
- احتمال توکن بعدی محاسبه میشود
- پاسخ به صورت توالیای از توکنها تولید میشود
تمام این فرآیند در چند صد میلیثانیه انجام میشود.
پرسونا چرا مهمتر از کد است؟
اگر همین مدل را بدون تعریف نقش صدا بزنید، خروجی عمومی دریافت میکنید. اما اگر از ابتدا مشخص کنید که مدل باید مانند یک مدرس لینوکس مرحلهبهمرحله پاسخ دهد، کیفیت خروجی به صورت محسوسی تغییر میکند.
در عمل، نقش به مدل میگوید:
- سطح فنی پاسخ چقدر باشد
- لحن رسمی یا آموزشی باشد
- پاسخ خلاصه باشد یا تحلیلی
این بخش ساده به نظر میرسد، اما در طراحی سیستمهای حرفهای، یکی از کلیدیترین نقاط کنترل رفتار مدل است.
حافظه، تفاوت بین یک پاسخ ساده و یک دستیار واقعی
مدل به صورت ذاتی حافظه پایدار ندارد. هر بار که درخواستی ارسال میکنید، اگر تاریخچه مکالمه را ضمیمه نکنید، مدل هیچ چیز قبلی را به خاطر نمیآورد.
در یک سیستم واقعی، معمولا:
- تاریخچه گفتگو در دیتابیس ذخیره میشود
- در هر درخواست بازیابی میشود
- همراه پیام جدید برای مدل ارسال میشود
- در صورت طولانی شدن، خلاصهسازی میشود
این کار باعث میشود دستیار بتواند مکالمه چندمرحلهای را مدیریت کند. به عنوان مثال اگر کاربر ابتدا بگوید سرورم اوبونتو 24.04 است و بعد بپرسد چطور فایروال را تنظیم کنم؟ مدل بتواند پاسخ را متناسب با همان سیستمعامل بدهد.
یک مثال کاربردی نزدیک به فضای فنی
فرض کنید کاربری این خطا را دارد:
Error: EADDRINUSE: address already in use :::3000
یک دستیار ساده تنها معنی خطا را توضیح میدهد. اما یک دستیار درست طراحیشده:
- توضیح میدهد پورت در حال استفاده است
- دستور بررسی پردازش را پیشنهاد میدهد
- راهحل آزادسازی پورت را ارائه میکند
- دلیل فنی رخدادن این خطا هنگام ریاستارت سریع را تحلیل میکند
در زیرساختهایی مانند لیارا چنین دستیارهایی میتوانند به کاهش فشار تیکتهای پشتیبانی و افزایش سرعت پاسخگویی کمک کنند.
وقتی ۶ خط کد کافی نیست
آنچه در مثال دیدیم، فقط هسته اولیه سیستم است. برای تبدیل آن به یک ابزار Production-ready باید به چند مسئله جدی توجه کرد:
- مدیریت هزینه و کنترل تعداد توکنها
- جلوگیری از hallucination و تولید پاسخ نادرست
- ماسک کردن دادههای حساس قبل از ارسال به مدل
- محدودسازی نرخ درخواستها (Rate Limiting)
این موارد در ظاهر سادهاند، اما در مقیاس بالا تعیینکننده کیفیت و پایداری سیستم هستند.
اتصال به ابزارها، قدم بعدی در هوشمندسازی
تا اینجا مدل فقط متن تولید میکرد. اما در معماریهای پیشرفتهتر، مدل میتواند تشخیص دهد که برای پاسخ به یک سؤال باید یک ابزار را اجرا کند.
برای مثال، اگر کاربر بپرسد مصرف RAM سرورم چقدر است؟ پاسخ صحیح باید از یک API مانیتورینگ بیاید، نه از حدس مدل. در اینجا مدل درخواست اجرای یک تابع را صادر میکند و پس از دریافت نتیجه واقعی، پاسخ نهایی را تولید میکند.
این همان مفهومی است که در طراحی سیستمهای مدرن با عنوان AI Agent شناخته میشود.
جمعبندی
ساخت یک دستیار شخصی با ۶ خط کد نشان میدهد که ورود به دنیای مدلهای زبانی پیچیده نیست. پیچیدگی واقعی در طراحی معماری پیرامونی آن قرار دارد: تعریف نقش، مدیریت حافظه، کنترل هزینه، امنیت داده و اتصال به ابزارهای واقعی.
اگر این اجزا بهدرستی طراحی شوند، خروجی شما یک چتبات ساده نخواهد بود، بلکه یک دستیار فنی هوشمند خواهد بود که میتواند در کنار تیم توسعه، پشتیبانی یا حتی کاربران نهایی فعالیت کند.
مهارت های تحلیلی یعنی اینکه بتونی مسائل رو از همه زاویه های مورد نظر ببینی، دادههارو دقیق بفهمی، الگوها رو توضیح بدی و تصمیم درست رو بگیری. این مهارت ها برای کارفرماها خیلی مهمه.