انسان در حلق: پیشنهاد و سپس تعهد
interrupt()+ چک پوائنٹنگ PostgreSQL، Microsoft Agent Framework RequestInfoEvent، و CloudflarewaitForApproval()همه شکل های مشابه را اجرا می کنند. حالت شکست قانونی تأیید مهر لاستیکی است: " تأیید کنید؟" بدون بررسی کلیک می شود. کاهش مستند شده چالش و پاسخ با یک لیست چک صریح است.Type: Learn
Languages: Python (stdlib, propose-then-commit state machine with idempotency)
Prerequisites: Phase 15 · 12 (Durable execution), Phase 15 · 14 (Tripwires)
Time: ~60 minutes
مشکل
یک عامل اقدام می کند. کاربر باید تصمیم بگیرد: تایید یا نه. اگر تصمیم فوری باشد، احتمالاً بازبینی نیست. اگر تصمیم ساختار یافته باشد، آهسته اما قابل اعتماد است. سوال مهندسی این است که چگونه بازبینی ساختار یافته را مسیر کمترین مقاومت قرار دهیم.
مدل HITL عصر 2023 یک پیام هم وقتی بود: "رئیس می خواهد ایمیل را به X با بدن Y تایید کند؟" کاربر کلیک بر روی تایید می کند. همه احساس می کنند که سیستم امن است. در عمل این سطح به شدت با طلای مسموم است: کاربران سریع تأیید می کنند، تأییدات پیش بینی کمی دارند و وقتی نماینده اشتباه می کند، مسیر حسابرسی یک تاریخچه طولانی از تأییدات را نشان می دهد که کاربر نمی تواند به یاد آورد.
مدل 2026 پیشنهاد سپس تعهد HITL را به یک زیربنای پایدار منتقل می کند، متاداتا ساختاری را متصل می کند و تعهد مثبت را نیاز دارد. هر SDK عامل مدیریت شده نسخه ای را ارسال می کند: LangGraph interrupt(), Microsoft Agent Framework RequestInfoEvent, CloudflarewaitForApproval(). نام API ها متفاوت هستند، شکل ها متفاوت نیستند.
مفهوم
ماشین دولت پیشنهاد و سپس تعهد
- Propose.عامل یک اقدام پیشنهادی را تولید می کند. به یک ذخیره پایدار (PostgreSQL، Redis، Durable Object) ادامه می دهد. شامل:
- قصد (چرا مامور این کار را می کند)
- نسب داده ها (چه منبع به این پیشنهاد منجر شد)
- مجوزهای لمس شده (که دامنه / فایل ها / نقاط پایان)
- شعاع انفجار (چیزی که بدترین مورد است)
- برنامه برگشت (اگر انجام شده باشد، چگونه آن را رد کنیم)
- کلید افتخاری (وحده در هر پیشنهاد؛ ارسال مجدد به همان رقم باز می گردد)
- Surface.بازرس پیشنهاد را با تمام متاداتا می بیند. بازرس یک فرد است (نه نماینده خود را بررسی می کند).
- Commit.تایید مثبت، عمل اجرا شده
- Verify.بعد از اجرا، اثر جانبی دوباره خوانده و تایید می شود. اگر مرحله تایید شکست یابد، سیستم در وضعیت بد شناخته شده است و هشدار فعال می شود.
کلید بی اختیار
بدون کلید idempotency، یک تلاش مجدد پس از شکست موقت می تواند یک عمل تایید شده را دو برابر اجرا کند. مثال مشخص: کاربر "تحويل 100 دلار از A به B. " بلیپ های شبکه را تأیید می کند. جریان کار دوباره انجام می شود. کاربر یک بار تأیید کرده است اما انتقال دو بار اجرا می شود. کلید idempotency تأیید را به یک اثر جانبی منحصر به فرد مرتبط می کند؛ اجرای دوم بدون عمل است.
این همان الگوی بی اختیار است که Stripe و AWS API ها استفاده می کنند. استفاده مجدد آن برای تاییدات آژانس در اسناد Microsoft Agent Framework صریح است.
دوام: چرا پروسه های تایید زمان بیشتری دارند
اتاق انتظار تایید یک قطعه از دولت است که نماینده مالک نیست. جریان کار متوقف می شود (درس 12). هنگامی که تأیید می رسد، جریان کار دقیقا از آن نقطه شروع می شود. به همین دلیل LangGraph جفت می کند interrupt()با چک پوائنٹنگ PostgreSQL و نه فقط حالت حافظه یک تایید دو روز بعد هنوز جریان کار را سالم می یابد.
تأیید مهر لوله و کاهش چالش و پاسخ
UI پیش فرض برای HITL ("پذیرش" / "پذیرش" دکمه ها) مجوزهای سریع را بدون بررسی واقعی تولید می کند. کاهش مستند: یک لیست چک چالش و پاسخ که قبل از فعال شدن دکمه تایید پاسخ مثبت به سوالات خاص را نیاز دارد. شکل خاص:
- "تو می دونی این چه منبع ای رو میخواد؟ "
- "آیا قطر انفجار را تایید کرده اید که قابل قبول است؟"
- "آیا برنامه ای برای بازپسین این کار وجود داره؟ "
در این تحقیق، HITL به طور صریح به عنوان یک کاهش برای الگوهای تأیید مهر لاستیک اشاره می کند. در این تحقیق، HITL به طور صریح به عنوان یک کاهش برای الگوهای تأیید مهر لاستیک اشاره می کند.
چه چیزی به عنوان نتیجه ای حساب می شود
نه هر عمل به پیشنهاد و بعد به تعهد نیاز داره.
- Consequential actions(همیشه HITL): نوشته های غیر قابل برگشت، معاملات مالی، ارتباطات خارج، تغییرات پایگاه داده تولید، عملیات سیستم فایل های مخرب.
- Reversible actions(گاهی اوقات HITL): ویرایش به فایل های محلی، تغییر مرحله بندی، نوشته های برگشت پذیر با بازگشت واضح.
- Reads and inspections(هیچوقت HITL): خواندن یک فایل، فهرست منابع، تماس با یک API فقط برای خواندن.
بررسی پس از اقدام
"Commit ran" با "the side effect happened" یکسان نیست. "شرایط پارتیشن شبکه و مسابقه می توانند یک جریان کار را تولید کنند که فکر می کند موفق شده است در حالی که پس زمینه باقی مانده است. مرحله تایید منبع هدف را پس از تعهد به تأیید دوباره می خواند. این الگوی مشابه معاملات پایگاه داده با RETURNINGبند ها یا AWS GetObjectبعد ازPutObject. .
قانون هوش مصنوعی اتحادیه اروپا ماده 14
ماده 14 نظارت موثر انسانی برای سیستم های هوش مصنوعی با ریسک بالا در اتحادیه اروپا را اجباری می کند. "فعال" تزئینی نیست. زبان تنظیم کننده به طور خاص الگوهای طومار را خارج می کند. پیشنهاد پس از تعهد با چالش و پاسخ شکل است که از بررسی ماده 14 در اسناد سازنده سازنده مدیریت عامل مایکروسافت زنده می ماند.
ازش استفاده کن
code/main.pyدر stdlib Python یک ماشین پیش بینی پس از انجام انجام را اجرا می کند. ذخیره پایدار یک فایل JSON است. کلید Idempotency یک هش از (thread_id، action_signature) است. راننده سه مورد را شبیه سازی می کند: جریان تایید تمیز، یک تلاش مجدد پس از شکست موقت (که نباید دو بار اجرا شود) و یک طومار طومار پیش فرض در مقابل جریان چالش و پاسخ.
-باده
outputs/skill-hitl-design.mdبررسی یک جریان کار HITL پیشنهادی برای شکل پیشنهاد و سپس تعهد و نشان دادن پرت های متاداتا، بی اختیار، تأیید یا چالش و پاسخ گمشده.
تمرینات
- فرار کن
code/main.py. تایید کنید که یک تلاش مجدد از یک پیشنهاد تایید شده از رکورد ماندگار استفاده می کند و دوباره اجرا نمی شود. حالا کلید idempotency را برای شامل کردن یک مهر زمان تغییر دهید و تکرار تکرار را نشان دهید.
- ثبت پیشنهادات را با یک
rollbackفیلدی. شبیه سازی اجرای که مرحله تاییدش شکست خورده است. نشان دادن بازپرداخت به طور خودکار.
- دانلود کتاب Microsoft Agent Framework را بخوانید
RequestInfoEventدوکس. شناسایی یک میدان متاداتا API شامل این است که موتور اسباب بازی گم شده است. اضافه کنید و توضیح دهید که از چه محافظت می کند.
- یک لیست چک چالش و پاسخ برای یک عمل خاص (به عنوان مثال "پسته به یک حساب عمومی توییتر") طراحی کنید. نظرسنجی باید به کدام سه سوال پاسخ دهد؟ چرا این سه سوال؟
- یک مورد را انتخاب کنید که یک درخواست هم زمان "مقرر کنید؟" کافی باشد (هیچ فروشگاه پایدار مورد نیاز نیست). دلیل آن را توضیح دهید و کلاس خطر را که شما قبول می کنید نام دهید.
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| Propose-then-commit | "Two-phase approval" | Persisted proposal + positive commit + verify |
| Idempotency key | "Retry-safe token" | Unique per proposal; second execution no-ops |
| Data lineage | "Where it came from" | The specific source content that led to the proposal |
| Blast radius | "Worst case" | Scope of effect if the action goes wrong |
| Rubber-stamp | "Fast approval" | "Approve" clicked without genuine review |
| Challenge-and-response | "Forcing checklist" | Reviewer must positively acknowledge specific questions |
| RequestInfoEvent | "MS Agent Framework primitive" | Durable HITL request with structured metadata |
interrupt() / waitForApproval() | "Framework primitives" | LangGraph / Cloudflare equivalents of the same shape |
خواندن بیشتر
- Microsoft Agent Framework — Human in the loop
RequestInfoEvent، تاییدات دوامدار - Cloudflare Agents — Human in the loop
waitForApproval()و اجسام دوامدار - Anthropic — Measuring agent autonomy in practice HITL به عنوان کاهش خطر بلند مدت.
- EU AI Act — Article 14: Human oversight پایه های نظارتی برای سیستم های با ریسک بالا
- Anthropic — Claude's Constitution (January 2026) چارچوبی اساسی در مورد نظارت
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.