مفاهیم پایه

تفاوت ایجنت با چت‌بات — کجا کدام‌یک انتخاب درست است

ایجنت و چت‌بات ممکن است روی یک مدل هوش مصنوعی اجرا شوند، اما در حالت، دسترسی به ابزار، خودگردانی، بازیابی از خطا و هزینه کاملاً فرق دارند.

· ۸ دقیقه مطالعه

یک درخواست ساده که مرز را نشان می‌دهد

کاربر می‌نویسد: «سفارش من هنوز نرسیده، پیگیری کنید.» یک چت‌بات خوب جواب می‌دهد که چطور سفارش را پیگیری کند و شماره‌ی پشتیبانی را می‌دهد. یک ایجنت شماره‌ی سفارش را از تاریخچه‌ی کاربر پیدا می‌کند، وضعیت را از سیستم لجستیک می‌خواند، می‌بیند مرسوله سه روز است در انبار مانده، و یا تیکت باز می‌کند یا زمان تحویل به‌روزشده را برمی‌گرداند.

تفاوت ایجنت با چت‌بات در «باهوش‌تر بودن مدل» نیست. هر دو می‌توانند روی یک مدل هوش مصنوعی یکسان اجرا شوند. تفاوت در چیزی است که دور مدل ساخته‌اید: چه چیزی نگه می‌دارد، به چه چیزی دسترسی دارد، چند گام اجازه دارد بردارد، و وقتی چیزی خراب شد چه می‌کند.

حالت: تاریخچه‌ی گفت‌وگو در برابر وضعیت کار

چت‌بات تاریخچه دارد. یعنی پیام‌های قبلی را در context نگه می‌دارد تا بتواند ضمیر «آن» را درست بفهمد. این حالت، خطی و فقط متنی است.

ایجنت علاوه بر تاریخچه، وضعیت کار دارد: چه ابزارهایی صدا زده شده، هر کدام چه برگردانده، چه چیزی هنوز تأیید نشده، چند گام باقی مانده. این وضعیت لزوماً متن نیست و لزوماً همه‌اش به مدل فرستاده نمی‌شود. بخشی از آن در کد شما زندگی می‌کند.

نتیجه‌ی عملی این تفاوت جایی معلوم می‌شود که کار نیمه‌تمام بماند. اگر گفت‌وگوی چت‌بات قطع شود، فقط یک مکالمه از دست می‌رود. اگر ایجنت وسط کار قطع شود، ممکن است دو ابزار اجرا شده و سومی نه — و باید بدانید سیستم در چه وضعیتی رها شده است. طراحی این وضعیت، و اینکه چه بخشی از آن بین جلسه‌ها باقی می‌ماند، خودش بحث حافظه است.

دسترسی به ابزار: حرف زدن در برابر کار کردن

چت‌بات خروجی‌اش متن است. حتی اگر به یک پایگاه دانش وصل باشد و پاسخ‌هایش بر پایه‌ی سند باشد، باز هم مصرف‌کننده‌ی داده است، نه تغییر‌دهنده‌ی آن.

ایجنت می‌تواند بنویسد: رکورد بسازد، ایمیل بفرستد، فایل جابه‌جا کند. همین یک قابلیت، کل تحلیل ریسک را عوض می‌کند. یک چت‌بات که اشتباه می‌گوید، اطلاعات غلط داده است — بد است ولی برگشت‌پذیر. یک ایجنت که اشتباه می‌کند، ممکن است رکورد اشتباه را حذف کرده باشد.

به همین دلیل مرز دسترسی ابزار، مهم‌ترین تصمیم طراحی است:

  • ابزارهای فقط‌خواندنی: تقریباً همیشه امن، بگذارید ایجنت آزادانه استفاده کند.
  • ابزارهای نویسنده‌ی برگشت‌پذیر (پیش‌نویس، تیکت، برچسب): معمولاً بدون تأیید هم قابل قبول‌اند.
  • ابزارهای برگشت‌ناپذیر (پرداخت، حذف، ارسال به مشتری): تأیید انسانی، یا اصلاً بیرون از دسترس ایجنت.

خودگردانی: چند گام بدون پرسیدن

چت‌بات یک‌گامی است. پیام می‌گیرد، پاسخ می‌دهد، منتظر پیام بعدی می‌ماند. کنترل بعد از هر پاسخ به کاربر برمی‌گردد.

ایجنت چندگامی است. می‌تواند پنج بار ابزار صدا بزند و تازه بعد از آن حرف بزند. این یعنی بین ورودی کاربر و خروجی نهایی، بازه‌ای وجود دارد که هیچ انسانی داخلش نیست. تمام ارزش و تمام خطر ایجنت در همین بازه است.

سطح خودگردانی یک دکمه‌ی روشن/خاموش نیست، یک طیف است:

سطحرفتارمناسب برای
پیشنهاددهندهابزار را پیشنهاد می‌کند، کاربر تأیید می‌کندعمل‌های حساس
نیمه‌خودگردانخواندن آزاد، نوشتن با تأییدبیشتر کاربردهای سازمانی
خودگردان با سقفتا N گام آزاد، بعد گزارش می‌دهدکارهای پرتکرار و کم‌ریسک

شروع از سطح پایین و بالا رفتن تدریجی، تقریباً همیشه از عکسش بهتر جواب می‌دهد.

بازیابی از خطا: نقطه‌ای که واقعاً جدا می‌شوند

اینجا جالب‌ترین تفاوت است. وقتی چت‌بات جواب بدی می‌دهد، تصحیح با کاربر است: کاربر می‌گوید «نه، منظورم این بود» و مدل دوباره تلاش می‌کند. حلقه‌ی تصحیح، انسان است.

در ایجنت، حلقه‌ی تصحیح خودِ سیستم است. کوئری خطا می‌دهد، مدل پیام خطا را می‌بیند، ورودی را اصلاح می‌کند و دوباره صدا می‌زند. برای اینکه این کار کند، سه شرط لازم است:

  1. خطاها باید به مدل برگردانده شوند، نه بلعیده شوند. null خالی چیزی به مدل نمی‌گوید؛ تاریخ باید به فرمت YYYY-MM-DD باشد می‌گوید.
  2. ابزارها باید تا حد ممکن idempotent باشند، چون تلاش دوباره اتفاق می‌افتد.
  3. باید سقفی وجود داشته باشد. ایجنتی که ده بار پشت‌سر هم یک ابزار خراب را صدا می‌زند، فقط دارد پول می‌سوزاند.

چت‌بات هیچ‌کدام از این سه را لازم ندارد. ایجنت بدون هر سه، در محیط واقعی دوام نمی‌آورد.

هزینه و تأخیر: صورت‌حساب خودگردانی

این بخش معمولاً دیر فهمیده می‌شود. در هر گام ایجنت، کل تاریخچه — شامل تعریف ابزارها و همه‌ی نتایج قبلی — دوباره به مدل فرستاده می‌شود. پس:

  • توکن ورودی به‌سرعت انباشته می‌شود. یک اجرای هشت‌گامی می‌تواند چند برابر هشت فراخوانی مستقل هزینه داشته باشد، چون گام هشتم همه‌ی هفت گام قبلی را هم می‌بیند.
  • تأخیر جمع می‌شود. هر گام یک رفت‌وبرگشت کامل مدل است، به‌علاوه‌ی زمان اجرای ابزار. پاسخ چت‌بات در چند ثانیه می‌آید؛ اجرای ایجنت ممکن است ده‌ها ثانیه طول بکشد.
  • پراکندگی هزینه زیاد است. یک درخواست ممکن است دو گام بگیرد و درخواست بعدی نُه گام. برخلاف چت‌بات، هزینه‌ی هر درخواست از قبل قابل پیش‌بینی نیست.

سه ابزار عملی برای مهار این وضع: prompt caching برای بخش ثابت ورودی، انتخاب مدل کوچک‌تر برای گام‌های ساده، و کوتاه کردن خروجی ابزارها. یک ابزار که ۵۰۰ رکورد JSON برمی‌گرداند، در گام‌های بعدی بارها هزینه‌ی خودش را تکرار می‌کند. جزئیات محاسبه در هزینه و توکن آمده است.

پس کدام یک را بسازیم؟

چت‌بات بسازید وقتی پرسش‌ها عمدتاً اطلاعاتی‌اند، پاسخ از روی اسناد قابل استخراج است، سرعت پاسخ مهم است، و هیچ عمل نوشتنی لازم نیست. پشتیبانی سطح یک، راهنمای محصول و پرسش‌وپاسخ داخلی معمولاً در همین دسته‌اند.

ایجنت بسازید وقتی پاسخ درست بدون خواندن از یک سیستم زنده ممکن نیست، تعداد و ترتیب گام‌ها از قبل معلوم نیست، و کار واقعی باید انجام شود نه فقط توضیح داده شود.

و حالت سومی هم هست که اغلب نادیده گرفته می‌شود: workflow ثابت. اگر مسیر همیشه یکسان است — بخوان، دسته‌بندی کن، ثبت کن — آن را در کد بنویسید و مدل را فقط برای گام‌هایی که واقعاً زبان لازم دارند صدا بزنید. ارزان‌تر، سریع‌تر و قابل تست‌تر است.

جمع‌بندی

چت‌بات یک واسط گفت‌وگو است؛ ایجنت یک اجراکننده‌ی چندگامی. یکی حرف می‌زند، دیگری کار می‌کند و بابت این کار با حالت پیچیده‌تر، ریسک بیشتر، تأخیر بالاتر و هزینه‌ی کمتر قابل پیش‌بینی هزینه می‌دهد. انتخاب درست معمولاً از یک پرسش ساده بیرون می‌آید: آیا پاسخ درست بدون دست زدن به یک سیستم بیرونی ممکن است؟ اگر بله، چت‌بات کافی است.