پرش به محتوای اصلی

ارزیابی ایجنت‌ها همان بازپخش رخدادهاست: ساخت پیکره رگرسیون از ردهای تولید

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

Detailed view of a computer screen displaying code with a menu of AI actions, illustrating modern software development.

توهم بنچمارک تألیفی

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

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

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

یک بازپخش رخداد واقعاً چه چیزی در خود دارد

یک رد تولید غنی‌تر از یک جفت پرامپت-پاسخ است. یک رخداد قابل بازپخش حداقل چهار لایه دارد:

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

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

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

Detailed view of a trading chart analyzing cryptocurrency trends and market data.

یک هارنس رگرسیون حداقلی

هارنسی که اینجا توصیف می‌شود عمداً کوچک است. سه مؤلفه را فرض می‌کند: یک مخزن رد، یک اجراکننده بازپخش، و یک دروازه ادغام.

ردها را به عنوان مصنوعات نسخه‌دار ذخیره کنید

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

# trace-2025-03-14-001.yaml
trace_id: 2025-03-14-001
agent_config_hash: 9f2c...
model_version: gpt-4.1-2025-04-14
input_state:
  user_request: "reconcile invoice 8842"
  conversation: [...]
tool_sequence:
  - name: fetch_invoice
    args: {id: 8842}
    result: {status: 200, body: {...}}
  - name: post_ledger_entry
    args: {amount: 120.00, account: "AR"}
    result: {status: 500, error: "timeout"}
terminal_side_effects:
  - type: ledger_entry
    status: not_written

بر اساس ویژگی‌های مسیر امتیاز دهید، نه فقط پاسخ نهایی

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

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

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

A cybersecurity expert in a dimly lit room is typing on a colorful keyboard with multiple screens displaying data.

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

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

هزینه‌ها و محدودیت‌ها

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

برخی شکست‌ها به طور ساختاری غیرقابل بازتولید هستند. یک شرایط رقابتی که به وضعیت زنده یک شخص ثالث بستگی دارد، یک خرابی داده یک‌باره، یک رفتار مدل که نمی‌تواند پین شود چون ارائه‌دهنده اسنپ‌شات‌ها را افشا نمی‌کند. این‌ها نمی‌توانند وفادارانه بازپخش شوند. وسوسه این است که دور انداخته شوند. تمرین بهتر این است که به عنوان فیکسچرهای ناشناخته-شناخته‌شده ثبت شوند: یک رد با یک مالک، یک توصیف از مکانیزم مشکوک، و یک نشانگر که بخشی از دروازه قبولی/رد نیست. سپس پیکره بین آنچه آزمایش می‌شود و آنچه صرفاً به یاد آورده می‌شود تمایز قائل می‌شود.

محدودیت دوم این است که بازپخش وفاداری به گذشته را می‌سنجد، نه درستی برای آینده. پیکره‌ای که کاملاً از رخدادها ساخته شده باشد، بیش از حد بر حالت‌های شکستی که قبلاً رخ داده‌اند وزن می‌گذارد. این قابل قبول است زیرا جایگزین — پیکره‌ای که از وظایف خیالی ساخته شده — بیش از حد بر حالت‌های شکستی که هرگز رخ نخواهند داد وزن می‌گذارد. نظم این است که پیکره را به عنوان یک سند زنده ببینیم، نه یک مشخصات.

تغییر عملیاتی

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

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

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

اشتراک‌گذاریXLinkedInپیوند یکتا6 دقیقه مطالعه

خواندن مرتبط

پرسش‌هایی که این پاسخ می‌دهد

Why not just write more task-based benchmarks?

Authored benchmarks sample the tasks the team already imagined, which are the tasks the agent already handles. They miss the compositions that cause incidents: tool ordering, retry storms, partial writes. Incident replays sample the tail.

What makes a production trace replayable?

Determinism. External endpoints are stubbed with recorded responses, clocks are frozen or injected, and model versions are pinned. Without these, a replay is a re-enactment and its pass/fail signal is noise.

How do you score a replay without a judge model?

Score trajectory properties: tool set, ordering, egress targets, retry behaviour, and side-effect consistency. These are deterministic, fast, and explainable, and they catch security and reliability regressions that final-answer accuracy misses.

What about failures that cannot be reproduced?

Record them as known-unknown fixtures with an owner and a suspected mechanism, and keep them out of the pass/fail gate. The corpus then distinguishes between what is tested and what is merely remembered.

Doesn't the corpus grow without bound?

It grows monotonically, so it needs a pruning policy, not deletion. Tier traces into a fast subset for every commit, a full set for nightly runs, and an archive for forensics.