پاسخ کوتاه: برای ساخت یک عامل هوش مصنوعی که در عمل کار میکند، با آن به عنوان یک حلقه کنترلشده رفتار کنید: ورودی را بگیرید، اقدام بعدی را تعیین کنید، یک ابزار با دامنه محدود را فراخوانی کنید، نتیجه را مشاهده کنید و تا زمانی که یک بررسی «انجام شده» واضح انجام شود، تکرار کنید. وقتی کار چند مرحلهای و ابزارمحور باشد، دوام میآورد. اگر یک درخواست واحد آن را حل کرد، از عامل صرف نظر کنید. طرحهای ابزار دقیق، محدودیتهای مرحله، ثبت وقایع و یک اعتبارسنج/نقد را اضافه کنید تا وقتی ابزارها از کار میافتند یا ورودیها مبهم هستند، عامل به جای حلقه زدن، تشدید شود.
نکات کلیدی:
حلقه کنترلکننده : تکرار input→act→observe را با شرایط توقف صریح و حداکثر مراحل پیادهسازی کنید.
طراحی ابزار : ابزارها را محدود، تایپشده، دارای مجوز و معتبر نگه دارید تا از هرج و مرج «هر کاری انجام دهید» جلوگیری شود.
بهداشت حافظه : از حالت فشرده کوتاهمدت به همراه بازیابی بلندمدت استفاده کنید؛ از رها کردن رونوشتهای کامل خودداری کنید.
مقاومت در برابر سوءاستفاده : برای اقدامات پرخطر، فهرستهای مجاز، محدودیتهای نرخ، قابلیت اطمینان و «اجرای آزمایشی» اضافه کنید.
قابلیت آزمایش : مجموعهای از سناریوها (خرابیها، ابهام، تزریقها) را حفظ کنید و با هر تغییر، آنها را دوباره اجرا کنید.

🔗 چگونه عملکرد هوش مصنوعی را اندازهگیری کنیم
معیارهای عملی برای سنجش سرعت، دقت و قابلیت اطمینان را بیاموزید.
🔗 چگونه با هوش مصنوعی صحبت کنیم
برای رسیدن به پاسخهای بهتر، از دستورالعملها، زمینه و پیگیریها استفاده کنید.
🔗 چگونه مدلهای هوش مصنوعی را ارزیابی کنیم
مدلها را با استفاده از آزمونها، روبریکها و نتایج وظایف دنیای واقعی مقایسه کنید.
🔗 چگونه مدلهای هوش مصنوعی را بهینه کنیم
با تنظیم، هرس و نظارت، کیفیت و هزینه را بهبود بخشید.
۱) یک عامل هوش مصنوعی، از نظر یک فرد عادی چیست؟ 🧠
یک عامل هوش مصنوعی یک حلقه است. اسناد «عاملها»ی LangChain
همین. یک حلقه با مغزی در وسط.
ورودی → فکر کردن → عمل کردن → مشاهده کردن → تکرار کردن . کاغذ واکنش (دلیل + عمل)
کجا:
-
ورودی میتواند یک درخواست کاربر یا یک رویداد (ایمیل جدید، تیکت پشتیبانی، پینگ سنسور) باشد.
-
فکر کردن یک مدل زبانی است که در مورد مرحله بعدی استدلال میکند.
-
عمل در حال فراخوانی یک ابزار است (جستجوی اسناد داخلی، اجرای کد، ایجاد تیکت، تهیه پیشنویس پاسخ). راهنمای فراخوانی تابع OpenAI
-
Observe در حال خواندن خروجی ابزار است.
-
تکرار بخشی است که باعث میشود به جای «پرحرفی» بودن، «عاملیت» به نظر برسد. اسناد «عاملها» در LangChain
بعضی از عاملها اساساً ماکروهای هوشمندی هستند. بعضی دیگر بیشتر شبیه یک اپراتور جوان عمل میکنند که میتواند وظایف را مدیریت کند و از خطاها جلوگیری کند. هر دو مهم هستند.
همچنین، شما به استقلال کامل نیاز ندارید. در واقع... احتمالاً آن را نمیخواهید 🙃
۲) چه زمانی باید یک عامل بسازید (و چه زمانی نباید) 🚦
یک عامل بسازید وقتی که:
-
این کار چند مرحلهای و بسته به اتفاقاتی که در میانه راه میافتد، تغییر میکند.
-
این کار نیاز به استفاده از ابزار (پایگاههای داده، CRMها، اجرای کد، تولید فایل، مرورگرها، APIهای داخلی). مستندات «ابزارها»ی LangChain
-
نتایج تکرارپذیر میخواهید ، نه فقط پاسخهای یکباره.
-
شما میتوانید «انجام شده» را به روشی تعریف کنید که یک کامپیوتر بتواند آن را بررسی کند، حتی به طور کلی.
در موارد زیر، عامل نسازید:
-
یک سوال ساده + پاسخ آن را حل میکند (زیاد مهندسی نکنید، بعداً از خودتان متنفر خواهید شد).
-
شما به جبرگرایی کامل نیاز دارید (عاملها میتوانند تقریباً ثابتقدم باشند، اما نه رباتیک).
-
شما هیچ ابزار یا دادهای برای اتصال ندارید - پس بیشترش فقط ارتعاشات است.
بیایید رک باشیم: نیمی از «پروژههای عامل هوش مصنوعی» میتوانند یک گردش کار با چند قانون شاخهبندی باشند. اما خب، گاهی اوقات حال و هوا هم مهم است 🤷♂️
۳) چه چیزی یک نسخه خوب از یک عامل هوش مصنوعی را میسازد؟
این بخش «ویژگیهای یک نسخه خوب» است که شما درخواست کردید، البته میخواهم کمی رک و صریح باشم:
یک نسخه خوب از یک عامل هوش مصنوعی، نیست که سختترین فکرها را میکند، بلکه آن نسخهای است که:
-
میداند چه کاری مجاز به انجام آن است (مرزهای دامنه)
-
از ابزارها به طور قابل اعتمادی استفاده میکند (فراخوانیهای ساختاریافته، تلاشهای مجدد، وقفهها) راهنمای فراخوانی توابع OpenAI در AWS «وقفهها، تلاشهای مجدد و قطع ارتباط با لرزش»
-
وضعیت را به طور تمیز نگه میدارد (حافظهای که نمیپوسد) LangChain «مرور کلی حافظه»
-
اقدامات خود را توضیح میدهد (ردیابیهای حسابرسی، نه افشای استدلالهای مخفی) NIST AI RMF 1.0 (قابلیت اعتماد و شفافیت)
-
به طور مناسب متوقف میشود (بررسیهای تکمیل، حداکثر مراحل، تشدید) اسناد «عوامل» LangChain
-
با خیال راحت شکست میخورد (درخواست کمک میکند، توهم قدرت ندارد) NIST AI RMF 1.0
-
قابل آزمایش است (میتوانید آن را روی سناریوهای از پیش تعیینشده اجرا کنید و نتایج را ارزیابی کنید)
اگر نتوان کارگزارتان را آزمایش کرد، اساساً یک دستگاه اسلات بسیار مطمئن است. در مهمانیها سرگرمکننده، در تولید وحشتناک 😬
۴) اجزای اصلی سازندهی یک عامل («آناتومی» 🧩)
بیشتر عوامل جامد این قطعات را دارند:
الف) حلقه کنترلر 🔁
این هم ارکستراتور:
-
هدف گرفتن
-
از مدل بخواهید که اقدام بعدی را انجام دهد
-
ابزار اجرا
-
اضافه کردن مشاهده
-
تکرار تا زمان اتمام اسناد «عاملها»ی LangChain
ب) ابزارها (معروف به قابلیتها) 🧰
ابزارها هستند که یک عامل را مؤثر میکنند: اسناد «ابزارها»ی LangChain
-
پرس و جوهای پایگاه داده
-
ارسال ایمیل
-
کشیدن فایلها
-
کد در حال اجرا
-
فراخوانی API های داخلی
-
نوشتن در صفحات گسترده یا CRMها
ج) حافظه 🗃️
دو نوع اهمیت دارد:
-
حافظه کوتاه مدت : زمینه اجرای فعلی، مراحل اخیر، برنامه فعلی
-
حافظه بلندمدت : ترجیحات کاربر، زمینه پروژه، دانش بازیابی شده (اغلب از طریق جاسازیها + یک فروشگاه بردار) کاغذ RAG
د) برنامهریزی و سیاست تصمیمگیری
حتی اگر آن را «برنامهریزی» ندانید، به یک روش نیاز دارید:
-
چک لیست ها
-
مقاله ReAct به سبک «فکر کن، بعد ابزار»
-
نمودارهای وظیفه
-
الگوهای سرپرست-کارگر
-
الگوهای سرپرست-کارگر Microsoft AutoGen (چارچوب چندعاملی)
ه) نردههای محافظ و ارزیابی 🧯
-
مجوزها
-
طرحوارههای ابزار ایمن خروجیهای ساختاریافته OpenAI
-
اعتبارسنجی خروجی
-
محدودیتهای گام
-
ورود به سیستم
-
آزمایشهای NIST AI RMF 1.0
بله، این بیشتر مهندسی است تا راهنمایی. که تا حدودی نکته همین است.
۵) جدول مقایسه: روشهای محبوب برای ساخت یک نماینده 🧾
در زیر یک «جدول مقایسه» واقعبینانه وجود دارد - با چند نکته عجیب و غریب، زیرا تیمهای واقعی عجیب و غریب هستند 😄
| ابزار / چارچوب | مخاطب | قیمت | چرا کار میکند؟ | یادداشتها (هرج و مرج کوچک) | |
|---|---|---|---|---|---|
| لانگچین | سازندگانی که اجزای سبک لگو را دوست دارند | رایگان + مادون قرمز | اکوسیستم بزرگ برای ابزارها، حافظه، زنجیرها | اگر چیزها را به وضوح نام نبرید، ممکن است سریع اسپاگتی شوید | |
| لاما ایندکس | تیمهای سنگین RAG | رایگان + مادون قرمز | الگوهای بازیابی قوی، نمایهسازی، رابطها | عالی است وقتی که نماینده شما اساساً «جستجو + اقدام» میکند... که رایج است | |
| رویکرد سبک دستیاران OpenAI | تیمهایی که خواهان راهاندازی سریعتر هستند | مبتنی بر استفاده | ابزار داخلی برای فراخوانی الگوها و وضعیت اجرا | در بعضی از گوشهها انعطافپذیری کمتری دارد، اما برای بسیاری از برنامهها مناسب است | OpenAI فراخوانی تابع API دستیاران OpenAI را |
| هسته معنایی | توسعهدهندگانی که خواهان هماهنگی ساختاریافته هستند | آزاد و رها | انتزاع مرتب برای مهارتها/عملکردها | حس «نظم و ترتیب سازمانی» داره - بعضی وقتا این یه جور تعریف و تمجیده 😉 | |
| اتوژن | آزمایشگران چند عاملی | آزاد و رها | الگوهای همکاری عامل با عامل | میتواند بیش از حد صحبت کند؛ قوانین سختگیرانهای برای خاتمه همکاری تعیین کند | |
| CrewAI | هواداران «تیمهای ماموران» | آزاد و رها | بیان نقشها + وظایف + تحویل کارها آسان است | وقتی کارها واضح و شفاف باشند، نه کسلکننده، بهترین نتیجه را میدهند | |
| انبار کاه | جستجو + افراد | آزاد و رها | خطوط لوله جامد، بازیابی، قطعات | کمتر «تئاتر عامل»، بیشتر «کارخانه عملی» | |
| حلقهی دلخواه (حلقهی سفارشی) | دیوانههای کنترلگر (مهربان) | وقت شما | حداقل جادو، حداکثر وضوح | معمولاً بهترین راه حل در درازمدت است... تا زمانی که همه چیز را از نو بسازید 😅 |
هیچ برنده واحدی وجود ندارد. بهترین انتخاب بستگی به این دارد که آیا وظیفه اصلی نماینده شما بازیابی ، اجرای ابزار ، هماهنگی چند نماینده یا اتوماسیون گردش کار .
۶) نحوه ساخت یک عامل هوش مصنوعی گام به گام (دستورالعمل واقعی) 🍳🤖
این بخشی است که اکثر مردم از آن صرف نظر میکنند، سپس تعجب میکنند که چرا نماینده مانند یک راکون در انباری رفتار میکند.
مرحله ۱: شغل را در یک جمله تعریف کنید 🎯
مثالها:
-
«با استفاده از سیاستها و متن تیکت، پاسخ مشتری را پیشنویس کنید، سپس درخواست تأیید دهید.»
-
«گزارش یک اشکال را بررسی کنید، آن را تکثیر کنید و یک راهحل ارائه دهید.»
-
«یادداشتهای ناقص جلسات را به وظایف، مالکان و مهلتها تبدیل کنید.»
اگر شما نتوانید آن را به سادگی تعریف کنید، نماینده شما هم نمیتواند. منظورم این است که میتواند، اما بداهه عمل میکند، و بداهه کاری جایی است که بودجهها به هدر میروند.
مرحله ۲: سطح استقلال (کم، متوسط، تند) را تعیین کنید 🌶️
-
استقلال کم : مراحلی را پیشنهاد میدهد، کلیکهای انسانی «تأیید» میکنند
-
متوسط : ابزارها را اجرا میکند، خروجی را پیشنویس میکند، عدم قطعیت را تشدید میکند
-
High : به صورت سرتاسری اجرا میشود و فقط در صورت بروز استثنائات، انسانها را پینگ میکند.
از کمتر از مقداری که میخواهید شروع کنید. همیشه میتوانید بعداً آن را افزایش دهید.
مرحله ۳: استراتژی مدل خود را انتخاب کنید 🧠
شما معمولاً انتخاب میکنید:
-
یک مدل قوی برای همه چیز (ساده)
-
یک مدل قوی + یک مدل کوچکتر برای مراحل ارزان (طبقهبندی، مسیریابی)
-
مدلهای تخصصی (بینش، کد، گفتار) در صورت نیاز
همچنین تصمیم بگیرید:
-
حداکثر توکنها
-
دما
-
اینکه آیا اجازه میدهید استدلالهای طولانی به صورت داخلی ردیابی شوند یا خیر (میتوانید، اما زنجیره فکری خام را در معرض کاربران نهایی قرار ندهید)
مرحله ۴: ابزارها را با طرحوارههای دقیق تعریف کنید 🔩
ابزارها باید:
-
باریک
-
تایپ شده
-
مجاز
به جای ابزاری به نام do_anything(input: string) ، از دستور make استفاده کنید:
-
search_kb(query: string) -> نتایج[] -
create_ticket(عنوان: رشته، بدنه: رشته، اولویت: شمارشی) -> ticket_id -
send_email(to: string, subject: string, body: string) ->راهنمای فراخوانی تابع OpenAI
اگر به مامور یک اره برقی دادید، وقتی دید با برداشتن حصار، پرچین را هرس میکند، شوکه نشوید.
مرحله ۵: حلقه کنترلر را بسازید 🔁
حداقل حلقه:
-
با هدف + زمینه اولیه شروع کنید
-
از مدل بپرسید: «اقدام بعدی؟»
-
اگر ابزار فراخوانی شود - ابزار را اجرا کنید
-
افزودن مشاهده
-
بررسی شرایط توقف
-
تکرار (با حداکثر مراحل) اسناد "عوامل" LangChain
اضافه کردن:
-
تایم اوتها
-
تکرار تلاشها (مراقب باشید - تکرار تلاشها میتواند منجر به حلقه شود) AWS «وقفههای زمانی، تکرار تلاشها و قطع ارتباط با لرزش»
-
قالببندی خطای ابزار (واضح، ساختاریافته)
مرحله ۶: حافظه را با دقت اضافه کنید 🗃️
کوتاهمدت: یک «خلاصه وضعیت» فشرده را در هر مرحله بهروز نگه دارید. «مرور کلی حافظه» LangChain
بلندمدت: حقایق پایدار (ترجیحات کاربر، قوانین سازمانی، اسناد پایدار) را ذخیره کنید.
قاعده کلی:
-
اگر اغلب تغییر میکند - آن را کوتاهمدت نگه دارید
-
اگر پایدار است - برای مدت طولانی نگهداری شود
-
اگر حساس است - به حداقل برسانید (یا اصلاً نگهداری نکنید)
مرحله ۷: اعتبارسنجی و مجوز «نقد» را اضافه کنید 🧪
یک الگوی ارزان و کاربردی:
-
عامل نتیجه را تولید میکند
-
اعتبارسنج ساختار و محدودیتها را بررسی میکند
-
نقد و بررسیهای مدل منتقد اختیاری برای مراحل از قلم افتاده یا نقض سیاستها NIST AI RMF 1.0
کامل نیست، اما مقدار تکاندهندهای از مزخرفات را به تصویر میکشد.
مرحله ۸: هر چیزی را که از ثبت نکردنش پشیمان خواهید شد، ثبت کنید 📜
گزارش:
-
فراخوانی ابزارها + ورودیها + خروجیها
-
تصمیمات اتخاذ شده
-
خطاها
-
خروجیهای نهایی
-
توکنها و تأخیر - مبانی مشاهدهپذیری OpenTelemetry
آینده- از خودت تشکر خواهی کرد. حال- فراموش خواهی کرد. زندگی همینه دیگه 😵💫
۷) ابزاری که روحت رو آزار نمیده 🧰😵
فراخوانی ابزار جایی است که «چگونه یک عامل هوش مصنوعی بسازیم» به مهندسی نرمافزار واقعی تبدیل میشود.
ابزارها را قابل اعتماد کنید (قابل اعتماد بودن خوب است)
ابزارهای قابل اعتماد عبارتند از:
-
قطعی
-
دامنه محدود
-
آسان برای آزمایش
-
اجرای مجدد Stripe با "درخواستهای خودتوان"
در لایه ابزار، گاردریل اضافه کنید، نه فقط اعلانها
درخواستها، پیشنهادهای مودبانهای هستند. اعتبارسنجی ابزار، دری قفل شده است. خروجیهای ساختاریافته OpenAI
انجام دهید:
-
لیستهای مجاز (کدام ابزارها میتوانند اجرا شوند)
-
اعتبارسنجی ورودی
-
راهنمای محدودیتهای نرخ OpenAI
-
بررسی مجوزها به ازای هر کاربر/سازمان
-
«حالت اجرای آزمایشی» برای اقدامات پرخطر
طراحی برای شکست جزئی
ابزارها از کار میافتند. شبکهها دچار مشکل میشوند. اعتبارسنجی منقضی میشود. یک عامل باید:
-
تفسیر خطاها
-
در صورت لزوم با backoff دوباره امتحان کنید. استراتژی امتحان مجدد Google Cloud (backoff + jitter)
-
ابزارهای جایگزین را انتخاب کنید
-
وقتی گیر میکنید، تشدید میشود
یک ترفند بیسروصدا و مؤثر: خطاهای ساختاری مانند زیر را برگردانید:
-
نوع: auth_error -
نوع: پیدا نشد -
type: rate_limited
بنابراین مدل میتواند به جای وحشتزده شدن، هوشمندانه پاسخ دهد.
۸) حافظهای که به جای اینکه شما را آزار دهد، کمکتان میکند 👻🗂️
حافظه قدرتمند است، اما میتواند به یک کشوی زباله هم تبدیل شود.
حافظه کوتاه مدت: آن را جمع و جور نگه دارید
استفاده:
-
آخرین N مرحله
-
خلاصهای از روند (در هر حلقه بهروزرسانی میشود)
-
طرح فعلی
-
محدودیتهای فعلی (بودجه، زمان، سیاستها)
اگر همه چیز را در متن قرار دهید، به این نتیجه میرسید:
-
هزینه بالاتر
-
تأخیر کمتر
-
سردرگمی بیشتر (بله، حتی در آن صورت)
حافظه بلندمدت: بازیابی به جای «پر کردن»
بیشتر «حافظه بلندمدت» بیشتر شبیه به موارد زیر است:
-
جاسازیها
-
فروشگاه وکتور
-
بازیابی نسل افزوده (RAG) مقاله RAG
عامل چیزی را به خاطر نمیسپارد. بلکه مرتبطترین قطعه کدها را در زمان اجرا بازیابی میکند. LlamaIndex «مقدمهای بر RAG»
قوانین کاربردی حافظه
-
«ترجیحات» را به عنوان حقایق صریح ذخیره کنید: «کاربر خلاصههای بولتدار را دوست دارد و از ایموجیها متنفر است» (خخخ، البته اینجا نه 😄)
-
«تصمیمات» را به همراه مهرهای زمانی یا نسخهها ذخیره کنید (در غیر این صورت تناقضات روی هم انباشته میشوند)
-
هرگز اسرار را ذخیره نکنید، مگر اینکه واقعاً مجبور باشید
و این هم استعاره ناقص من: حافظه مثل یخچال است. اگر هیچوقت تمیزش نکنی، در نهایت ساندویچت مزه پیاز و پشیمانی میدهد.
۹) الگوهای برنامهریزی (از ساده تا فانتزی) 🧭✨
برنامهریزی فقط تجزیهی کنترلشده است. آن را عرفانی نکنید.
الگوی الف: برنامهریز چکلیست ✅
-
مدل لیستی از مراحل را خروجی میدهد
-
مرحله به مرحله اجرا میشود
-
وضعیت چک لیست را بهروزرسانی میکند
عالی برای شروع به کار. ساده، قابل آزمایش.
الگوی B: حلقه ReAct (دلیل + عمل) 🧠→🧰
-
مدل، فراخوانی ابزار بعدی را تعیین میکند
-
خروجی را مشاهده میکند
-
کاغذ ReAct را تکرار میکند
این حس کلاسیکِ یک مامور است.
الگوی ج: سرپرست-کارگر 👥
-
سرپرست، هدف را به وظایف تقسیم میکند
-
کارگران وظایف تخصصی را انجام میدهند
-
سرپرست نتایج را ادغام میکند Microsoft AutoGen (چارچوب چندعاملی)
این زمانی ارزشمند است که وظایف قابل موازیسازی باشند، یا وقتی که «نقشهای» متفاوتی مانند موارد زیر میخواهید:
-
محقق
-
کدنویس
-
ویرایشگر
-
بررسیکنندهی کیفیت (QA)
الگوی D: برنامهریزی، سپس اجرا، همراه با برنامهریزی مجدد 🔄
-
ایجاد طرح
-
اجرا کردن
-
اگر نتایج ابزار واقعیت را تغییر میدهد، برنامهریزی را دوباره انجام دهید
این امر مانع از آن میشود که عامل سرسختانه از یک برنامه بد پیروی کند. انسانها نیز این کار را انجام میدهند، مگر اینکه خسته باشند، که در این صورت آنها نیز از برنامههای بد پیروی میکنند.
۱۰) ایمنی، قابلیت اطمینان، و اخراج نشدن 🔐😅
اگر نماینده شما میتواند اقداماتی انجام دهد، به طراحی ایمنی نیاز دارید. «داشتنش خوب نیست». نیاز. NIST AI RMF 1.0
محدودیتهای سخت
-
حداکثر گام در هر اجرا
-
حداکثر فراخوانی ابزار در هر دقیقه
-
حداکثر هزینه در هر جلسه (بودجه توکن)
-
ابزارهای محدود شده پشت تایید
پردازش دادهها
-
قبل از ورود به سیستم، ورودیهای حساس را ویرایش کنید
-
محیطهای جداگانه (توسعه در مقابل تولید)
-
مجوزهای ابزار با حداقل امتیاز
محدودیتهای رفتاری
-
عامل را مجبور کنید به شواهد داخلی استناد کند (نه لینکهای خارجی، فقط ارجاعات داخلی)
-
وقتی اطمینان کم است، به پرچمهای عدم قطعیت نیاز است
-
اگر ورودیها مبهم هستند، «پرسیدن سوال روشنکننده» را الزامی کنید
یک نماینده قابل اعتماد، مطمئنترین نماینده نیست. نمایندهای است که میداند چه زمانی حدس میزند... و این را میگوید.
۱۱) آزمایش و ارزیابی (بخشی که همه از آن اجتناب میکنند) 🧪📏
شما نمیتوانید چیزی را که نمیتوانید اندازهگیری کنید، بهبود بخشید. بله، این جمله کلیشهای است، اما به طرز آزاردهندهای درست است.
ساخت یک مجموعه سناریو
ایجاد 30 تا 100 مورد آزمایشی:
-
مسیرهای شاد
-
موارد لبهای
-
موارد «خرابی ابزار»
-
درخواستهای مبهم
-
دستورات خصمانه (تلاش برای تزریق سریع) 10 مورد برتر OWASP برای برنامههای LLM تزریق سریع OWASP LLM01
نتایج امتیازدهی
از معیارهایی مانند موارد زیر استفاده کنید:
-
نرخ موفقیت وظیفه
-
زمان تا تکمیل
-
نرخ بازیابی خطای ابزار
-
میزان توهم (ادعاهای بدون مدرک)
-
نرخ تایید انسانی (در حالت نظارتشده)
آزمونهای رگرسیون برای دستورالعملها و ابزارها
هر زمان که تغییر کنی:
-
طرحواره ابزار
-
دستورالعملهای سیستم
-
منطق بازیابی
-
فرمت حافظه.
مجموعه را دوباره اجرا کنید.
ماموران حیوانات حساسی هستند. مثل گیاهان آپارتمانی، اما گرانتر.
۱۲) الگوهای استقراری که بودجه شما را به هدر نمیدهند 💸🔥
با یک سرویس واحد شروع کنید
-
API کنترلکننده عامل
-
خدمات ابزاری پشت آن
-
ورود به سیستم + نظارت - مبانی مشاهدهپذیری OpenTelemetry
کنترل هزینهها را زودتر اضافه کنید
-
نتایج بازیابی ذخیره سازی
-
فشردهسازی وضعیت مکالمه با خلاصهها
-
استفاده از مدلهای کوچکتر برای مسیریابی و استخراج
-
محدود کردن «حالت تفکر عمیق» به سختترین مراحل
انتخاب معماری مشترک
-
کنترلر بدون وضعیت + مخزن وضعیت خارجی (DB/redis)
-
فراخوانیهای ابزار در صورت امکان خودتوان (Idempotent)
-
صف برای کارهای طولانی (بنابراین شما یک درخواست وب را برای همیشه باز نگه نمیدارید)
همچنین: یک «کلید قطع ارتباط» بسازید. تا زمانی که واقعاً به آن نیاز نداشته باشید، به آن نیازی نخواهید داشت 😬
۱۳) یادداشتهای پایانی - خلاصهای از نحوه ساخت یک عامل هوش مصنوعی 🎁🤖
اگر چیز دیگری یادتان نیست، این را به خاطر بسپارید:
-
نحوه ساخت یک عامل هوش مصنوعی عمدتاً در مورد ایجاد یک حلقه امن در اطراف یک مدل است. اسناد "عاملها" LangChain
-
با یک هدف مشخص، استقلال کم و ابزارهای دقیق شروع کنید. خروجیهای ساختاریافته OpenAI
-
از طریق بازیابی، حافظه را افزایش دهید، نه از طریق انباشتن بیپایان اطلاعات. کاغذ RAG
-
برنامهریزی میتواند ساده باشد - چک لیستها و برنامهریزی مجدد بسیار مفید هستند.
-
، آشوب عامل را به چیزی تبدیل میکند که میتوانید آن را به کار ببرید.
-
گاردریلها باید در کد باشند، نه فقط در اعلانها. ده اپلیکیشن برتر OWASP برای LLM
یک عامل جادو نیست. سیستمی است که تصمیمات خوب را به اندازه کافی ارزشمند میگیرد... و قبل از اینکه آسیبی برساند، شکست را میپذیرد. به نوعی آرامشبخش و بیسروصدا 😌
و بله، اگر آن را درست بسازید، مثل این است که یک کارآموز دیجیتال کوچک استخدام کنید که هرگز نمیخوابد، گاهی اوقات وحشت میکند و عاشق کاغذبازی است. بنابراین، اساساً یک کارآموز.
سوالات متداول
به زبان ساده، یک عامل هوش مصنوعی چیست؟
یک عامل هوش مصنوعی اساساً حلقهای است که تکرار میشود: ورودی میگیرد، مرحله بعدی را تعیین میکند، از ابزاری استفاده میکند، نتیجه را میخواند و تا زمانی که کار تمام شود، تکرار میکند. بخش «عاملی» از عمل و مشاهده ناشی میشود، نه فقط چت کردن. بسیاری از عاملها فقط اتوماسیون هوشمند با دسترسی به ابزار هستند، در حالی که برخی دیگر بیشتر مانند یک اپراتور جوان رفتار میکنند که میتواند از خطاها بازیابی کند.
چه زمانی باید به جای استفاده از یک اعلان، یک عامل هوش مصنوعی بسازم؟
وقتی کار چند مرحلهای است، تغییرات بر اساس نتایج میانی است و نیاز به استفاده از ابزارهای قابل اعتماد (APIها، پایگاههای داده، تیکتینگ، اجرای کد) دارد، یک عامل بسازید. عاملها همچنین زمانی مفید هستند که میخواهید نتایج تکرارپذیر با محافظ و راهی برای بررسی «انجام شده» داشته باشید. اگر یک پاسخ سریع ساده کار میکند، یک عامل معمولاً سربار غیرضروری و حالتهای خرابی اضافی است.
چگونه میتوانم یک عامل هوش مصنوعی بسازم که در حلقهها گیر نکند؟
از شرایط توقف سخت استفاده کنید: حداکثر مراحل، حداکثر فراخوانی ابزار و بررسیهای تکمیل واضح. طرحوارههای ابزار ساختاریافته، زمانهای پایان و تلاشهای مجدد را اضافه کنید که برای همیشه دوباره تلاش نکنند. تصمیمات و خروجیهای ابزار را ثبت کنید تا بتوانید ببینید کجا از مسیر خارج میشود. یک سوپاپ اطمینان رایج، تشدید است: اگر عامل مطمئن نیست یا خطاها را تکرار میکند، باید به جای بداههپردازی، درخواست کمک کند.
حداقل معماری برای «چگونه یک عامل هوش مصنوعی بسازیم» چیست؟
حداقل به یک حلقه کنترلکننده نیاز دارید که هدف و زمینه را به مدل بدهد، اقدام بعدی را درخواست کند، در صورت درخواست ابزاری را اجرا کند، مشاهده را ضمیمه کند و تکرار کند. همچنین به ابزارهایی با اشکال ورودی/خروجی دقیق و یک بررسی «انجام شده» نیاز دارید. حتی یک حلقه «خودت بساز» هم میتواند به خوبی کار کند اگر حالت را تمیز نگه دارید و محدودیتهای مرحله را اعمال کنید.
چگونه باید فراخوانی ابزار را طوری طراحی کنم که در محیط تولید قابل اعتماد باشد؟
ابزارها را محدود، تایپشده، دارای مجوز و معتبر نگه دارید - از یک ابزار عمومی «هر کاری انجام بده» اجتناب کنید. طرحهای دقیق (مانند خروجیهای ساختاریافته/فراخوانی تابع) را ترجیح دهید تا عامل نتواند ورودیها را با دست وارد کند. لیستهای مجاز، محدودیتهای سرعت و بررسیهای مجوز کاربر/سازمان را در لایه ابزار اضافه کنید. ابزارها را طوری طراحی کنید که در صورت امکان، با استفاده از الگوهای idempotency، برای اجرای مجدد ایمن باشند.
بهترین راه برای اضافه کردن حافظه بدون بدتر شدن عامل چیست؟
حافظه را به صورت دو بخش در نظر بگیرید: وضعیت اجرای کوتاهمدت (مراحل اخیر، برنامه فعلی، محدودیتها) و بازیابی بلندمدت (ترجیحات، قوانین پایدار، اسناد مرتبط). خلاصههای کوتاهمدت را با خلاصههای اجرایی حفظ کنید، نه رونوشتهای کامل. برای حافظه بلندمدت، بازیابی (جاسازیها + الگوهای ذخیره برداری/RAG) معمولاً بهتر از «پر کردن» همه چیز در متن و گیج کردن مدل است.
از کدام الگوی برنامهریزی باید استفاده کنم: چکلیست، ReAct یا سرپرست-کارگر؟
یک برنامهریز چکلیست زمانی عالی است که وظایف قابل پیشبینی باشند و شما چیزی را بخواهید که به راحتی قابل آزمایش باشد. حلقههای سبک ReAct زمانی میدرخشند که نتایج ابزار، آنچه را که در مرحله بعد انجام میدهید تغییر میدهد. الگوهای سرپرست-کارگر (مانند تفکیک نقش به سبک AutoGen) زمانی مفید هستند که وظایف میتوانند موازی شوند یا از نقشهای متمایز (محقق، کدنویس، تضمین کیفیت) بهرهمند شوند. برنامهریزی-سپس-اجرا با برنامهریزی مجدد، یک راه حل عملی برای جلوگیری از برنامههای بد سرسخت است.
چگونه میتوانم یک عامل را ایمن کنم اگر بتواند اقدامات واقعی انجام دهد؟
از مجوزهای با حداقل امتیاز استفاده کنید و ابزارهای پرخطر را پشت حالتهای تأیید یا «اجرای آزمایشی» محدود کنید. بودجهها و محدودیتها را اضافه کنید: حداکثر مراحل، حداکثر هزینه و محدودیتهای فراخوانی ابزار در هر دقیقه. دادههای حساس را قبل از ثبت، ویرایش کنید و محیطهای توسعه را از محیطهای تولید جدا کنید. در صورت مبهم بودن ورودیها، به جای اینکه اجازه دهید اطمینان جایگزین شواهد شود، پرچمهای عدم قطعیت یا سوالات شفافسازی را الزامی کنید.
چگونه میتوانم یک عامل هوش مصنوعی را آزمایش و ارزیابی کنم تا به مرور زمان بهبود یابد؟
یک مجموعه سناریو با مسیرهای شاد، موارد حاشیهای، خرابی ابزار، درخواستهای مبهم و تلاشهای تزریق سریع (به سبک OWASP) بسازید. به نتایجی مانند موفقیت کار، زمان تکمیل، بازیابی از خطاهای ابزار و ادعاهای بدون مدرک امتیاز دهید. هر زمان که طرحوارههای ابزار، اعلانها، بازیابی یا قالببندی حافظه را تغییر دادید، مجموعه را دوباره اجرا کنید. اگر نمیتوانید آن را آزمایش کنید، نمیتوانید آن را به طور قابل اعتمادی ارسال کنید.
چگونه میتوانم یک عامل (agent) را بدون افزایش تأخیر و هزینهها مستقر کنم؟
یک الگوی رایج، یک کنترلر بدون وضعیت با یک مخزن وضعیت خارجی (DB/Redis)، سرویسهای ابزار پشت آن و ثبت وقایع/نظارت قوی (اغلب OpenTelemetry) است. هزینهها را با ذخیرهسازی بازیابی، خلاصههای وضعیت فشرده، مدلهای کوچکتر برای مسیریابی/استخراج و محدود کردن «تفکر عمیق» به سختترین مراحل، کنترل کنید. از صفها برای کارهای طولانی استفاده کنید تا درخواستهای وب را باز نگه ندارید. همیشه یک کلید kill را در نظر بگیرید.
منابع
-
موسسه ملی استاندارد و فناوری (NIST) - NIST AI RMF 1.0 (قابلیت اعتماد و شفافیت) - nvlpubs.nist.gov
-
OpenAI - خروجیهای ساختاریافته - platform.openai.com
-
OpenAI - راهنمای فراخوانی تابع - platform.openai.com
-
راهنمای محدودیتهای نرخ بهره در OpenAI - platform.openai.com
-
OpenAI - اجرای API - platform.openai.com
-
OpenAI - فراخوانی تابع توسط دستیاران - platform.openai.com
-
LangChain - Agents (جاوااسکریپت) - docs.langchain.com
-
اسناد ابزارها در LangChain - docs.langchain.com
-
LangChain - مروری بر حافظه - docs.langchain.com
-
arXiv - مقاله واکنش (دلیل + عمل) - arxiv.org
-
arXiv - مقاله RAG - arxiv.org
-
کتابخانه سازندگان سرویسهای وب آمازون (AWS) - وقفهها، تلاشهای مجدد و قطع ارتباط با لرزش - aws.amazon.com
-
OpenTelemetry - مبانی مشاهدهپذیری - opentelemetry.io
-
Stripe - درخواستهای خودتوانمند - docs.stripe.com
-
گوگل کلود - استراتژی تلاش مجدد (backoff + jitter) - docs.cloud.google.com
-
OWASP - 10 مورد برتر برای برنامههای مدل زبان بزرگ - owasp.org
-
تزریق سریع OWASP - - genai.owasp.org
-
LlamaIndex - مقدمهای بر RAG - developers.llamaindex.ai
-
مایکروسافت - هسته معنایی - learn.microsoft.com
-
Microsoft AutoGen - چارچوب چندعاملی (مستندات) - microsoft.github.io
-
CrewAI - مفاهیم عاملها - docs.crewai.com
-
Haystack (deepset) - مستندات Retrievers - docs.haystack.deepset.ai