مهندسی عامل (Agent Engineering)

اگر یک عامل (agent) ساخته‌اید، می‌دانید که فاصله بین «روی ماشین من کار می‌کند» و «در تولید (production) کار می‌کند» می‌تواند بسیار زیاد باشد. نرم‌افزار سنتی فرض می‌کند که عمدتاً ورودی‌ها (inputs) را می‌شناسید و می‌توانید خروجی‌ها (outputs) را تعریف کنید. عامل‌ها (agents) هیچ‌کدام از این‌ها را مشخص نمی کند

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

مهندسی عامل (agent engineering) چیست؟

مهندسی عامل (agent engineering) فرآیند تکرارشونده (iterative) پالایش سیستم‌های غیرقطعی (non-deterministic) مبتنی بر مدل‌های زبانی بزرگ (LLM) به تجربیات تولید (production) قابل اعتماد است. این یک فرآیند چرخه‌ای است: ساخت (build)، آزمایش (test)، ارسال (ship)، مشاهده (observe)، پالایش (refine)، تکرار (repeat)

ما مهندسی عامل (agent engineering) را به عنوان یک رشته جدید می‌بینیم که سه مجموعه مهارت را با هم ترکیب می‌کند:

  • تفکر محصول (product thinking) محدوده را تعریف می‌کند و رفتار عامل (agent) را شکل می‌دهد.

    • نوشتن پرامپت‌ها (prompts) که رفتار عامل (agent) را هدایت می‌کنند (اغلب صدها یا هزاران خط). مهارت‌های ارتباطی و نوشتاری خوب در اینجا کلیدی هستند.

    • درک عمیق «کاری که باید انجام شود» که عامل (agent) آن را تکرار می‌کند

    • تعریف ارزیابی‌ها (evaluations) که آزمایش می‌کنند آیا عامل (agent) طبق «کاری که باید انجام شود» عمل می‌کند

  • مهندسی (engineering) زیرساخت را می‌سازد که عامل‌ها (agents) را برای محیط عملیاتی آماده می‌کند.

    • نوشتن ابزارها (tools) برای استفاده توسط عامل‌ها (agents)

    • توسعه رابط کاربری/تجربه کاربری (UI/UX) برای تعاملات عامل (agent)

    • اجرای durable execution، توقف‌های انسانی در حلقه (human-in-the-loop pauses) و مدیریت حافظه را مدیریت می‌کنند.

  • علم داده (data science) عملکرد عامل (agent) را اندازه‌گیری و بهبود می‌بخشد.

    • ساخت سیستم‌ها (مانند ارزیابی‌ها ، آزمایش (A/B testing)، نظارت (monitoring) و غیره) برای اندازه‌گیری عملکرد و قابلیت اعتمادپذیری عامل (agent)

    • تحلیل الگوهای استفاده و تحلیل خطاها (error analysis) (زیرا عامل‌ها (agents) دامنه وسیع‌تری از نحوه استفاده کاربران نسبت به نرم‌افزار سنتی دارند)

مهندسی عامل (agent engineering) کجا ظاهر می‌شود

مهندسی عامل (agent engineering) مجموعه‌ای از مسئولیت‌هاست که وقتی سیستم‌هایی که استدلال می‌کنند، سازگار می‌شوند و به طور غیرقابل پیش‌بینی رفتار می‌کنند، ساخته می شود تیم ها می بایست انجام دهند. سازمان‌هایی که امروز عامل‌های (agents) قابل اعتماد ایجاد می‌کنند، مهارت‌های تیم‌های مهندسی ، محصول و داده را گسترش می‌دهند تا نیازهای سیستم‌های غیرقطعی (non-deterministic) را برآورده کنند

جایی که در عمل مهندسی عامل ظاهر می‌شود عبارتند از:

  • مهندسان نرم‌افزار و مهندسان یادگیری ماشین (ML engineers) که پرامپت‌ها می‌نویسند و ابزار برای استفاده توسط عامل‌ها (agents) می‌سازند

  • مهندسان پلتفرم (platform engineers) که زیرساخت عامل (agent infrastructure) را می‌سازند که اجرای پایدار (durable execution) و جریان‌های کاری انسانی در حلقه (human-in-the-loop workflows) را مدیریت می‌کند

  • مدیران محصول که پرامپت‌ها می‌نویسند، محدوده عامل را تعریف می‌کنند و اطمینان می‌دهند که عامل مشکل درست را حل می‌کند

  • دانشمندان داده (data scientists) که قابلیت اعتماد عامل را اندازه‌گیری می‌کنند و فرصت‌های بهبود را شناسایی می‌کنند

این تیم‌ها تکرار سریع (rapid iteration) را پذیرفته‌اند، و اغلب می‌بینید که مهندسان نرم‌افزار خطاها را ردیابی می‌کنند و به مدیران محصول (PMs) اعلام می کنند تا پرامپت‌ها را بر اساس آن بینش‌ها تنظیم کنند، یا مدیران محصول (PMs) مسائل محدوده را شناسایی می‌کنند که نیاز به ابزارهای جدید از مهندسان دارد.

چرا مهندسی عامل (agent engineering)، و چرا حالا؟

دو تغییر اساسی مهندسی عامل را ضروری کرده است.

  • اول، مدل‌های زبانی بزرگ (LLMs) به اندازه کافی قدرتمند هستند تا جریان‌های کاری پیچیده و چندمرحله‌ای را مدیریت کنند. بطور مثال LinkedIn از عامل‌ها برای اسکن منابع عظیم استعدادها (پروفایل ها) برای استخدام، رتبه‌بندی کاندیداها و نمایش فوری بهترین تطابق‌ها استفاده می‌کند. ما در حال عبور از آستانه‌ای هستیم که عامل‌ها ارزش تجاری معنادار در production ارائه می‌دهند.

  • دوم، این قدرت با عدم قطعیت همراه است. برنامه‌های ساده مبتنی بر مدل زبانی بزرگ (LLM)، هرچند غیرقطعی (non-deterministic) هستند اما تمایل به رفتارهای محدودتر دارند برعکس عامل‌ها .

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

    این معمولاً به معنای این است که:

    هر ورودی (input) یک مورد لبه (edge case) است. وقتی کاربران می‌توانند هر چیزی را به زبان طبیعی بپرسند، چیزی به عنوان ورودی «عادی» وجود ندارد. وقتی تایپ می‌کنید «آن را جذاب کن» یا «آنچه دفعه قبل کردی را انجام بده اما متفاوت»، عامل (درست مثل یک انسان) می‌تواند پرامپت‌ها را به شیوه‌های مختلف تفسیر کند. دیگر نمی‌توانید به روش قدیمی اشکال‌زدایی کنید. چون بسیاری از منطق داخل مدل زندگی می‌کند، باید هر تصمیم و فراخوانی ابزار را بررسی کنید.

    تنظیمات کوچک پرامپت یا پیکربندی می‌تواند تغییرات عظیمی در رفتار ایجاد کند. یک عامل می‌تواند ۹۹٫۹۹٪ uptime داشته باشد در حالی که عملکرد درست ندارد.

    همیشه پاسخ‌های ساده بله/خیر به سؤالاتی که اهمیت دارند وجود ندارد، مانند:

    • آیا عامل فراخوانی‌های درست انجام می‌دهد؟

    • هدف پشت دستورالعمل‌های شما را دنبال می‌کند؟

    • ابزارها (tools) را به شیوه درست استفاده می‌کند؟

    وقتی همه این‌ها را با هم ترکیب کنید فرصتی و نیازی برای یک رشته جدید وجود دارد. مهندسی عامل به شما اجازه می‌دهد قدرت مدل‌های زبانی بزرگ (LLMs) را مهار کنید تا سیستم‌هایی بسازید که واقعاً در production قابل اعتماد هستند.

مهندسی عامل (agent engineering) در عمل چگونه است؟

تیم‌های مهندسی موفق یک رویه برای توسعه عامل دنبال می‌کنند که چیزی شبیه به این است:

  • پایه عامل (agent) خود را بسازید. با طراحی پایه عامل (agent) شروع کنید، چه یک فراخوانی ساده مدل زبانی بزرگ (LLM) با ابزارها باشد یا یک سیستم چندعاملی (multi-agent system) پیچیده.

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

  • هر تعامل را ردیابی کنید ، هر ابزار فراخوانی‌شده و زمینه دقیق که دلیل هر تصمیم عامل (agent) است بررسی نمایید. ارزیابی‌ها را روی داده‌های عملیاتی اجرا کنید تا کیفیت عامل را اندازه‌گیری کنید.

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

  • تکرار کنید. بهبودهای خود را ارسال کنید و ببینید چه چیزی در محیط عملیاتی تغییر می‌کند. هر چرخه چیزی جدید در مورد نحوه تعامل کاربران با عامل شما و معنای واقعی قابلیت اعتماد پذیری در زمینه را به شما می‌آموزد.

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