ایمنی ابزار و تایید انسانی
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Classify tools by read-only, reversible, and consequential behavior.
- Add approval interrupts before selected actions.
- Resume interrupted execution with approval, rejection, or edited arguments.
چرا تأیید انسانی؟
**قاعده اصلی**
تأیید را بر اساس اثر واقعی ابزار قرار بده، نه بر اساس اینکه هر ابزار صرفاً یک ابزار است.
```mermaid
flowchart LR
A["Agent تصمیم میگیرد"] --> B{"ریسک ابزار؟"}
B -->|Read-only| C["اجرای خودکار"]
B -->|Reversible| D["ثبت و کنترل"]
B -->|Consequential| E["مکث و تأیید"]
E --> F["Approve / Edit / Reject"]
```
تنظیم نقطه مکث
**سه سیاست متفاوت**
برای `read_data` مقدار `False` است، پس `read_data(query="logs")` بدون مکث اجرا میشود. برای `write_file` مقدار `True` است، پس `write_file(path="/workspace/a.txt")` متوقف میشود. برای `execute_sql` فقط دو تصمیم `approve` و `reject` مجازند.
```mermaid
flowchart TD
A["فراخوانی read_data"] --> B{"interrupt_on"}
B -->|False| C["اجرا"]
D["فراخوانی write_file"] --> E{"interrupt_on"}
E -->|True| F["Interrupt"]
F --> G["تصمیم انسان"]
```
شرطگذاری با آرگومانها
**مقایسه مسیرها و پرسوجوها**
`/workspace/report.txt` با پیشوند مجاز شروع میشود: `True` سپس `not True` برابر `False` است، پس مکث نمیکند. `/shared/report.txt` با آن پیشوند شروع نمیشود: `False` سپس `not False` برابر `True` است، پس مکث میکند. به همین شکل، `SELECT` خواندنی و `UPDATE` تغییردهنده تشخیص داده میشود.
تأیید، ویرایش، یا رد
**یک فراخوانی، چهار نتیجه**
فراخوانی اولیه مسیر `/shared/report.txt` و محتوای `draft` دارد. `approve` همان مسیر را اجرا میکند. `edit` مسیر را به `/workspace/report.txt` تغییر میدهد و سپس اجرا میکند. `reject` ابزار را اجرا نمیکند. `respond` پیام انسان را به عامل میفرستد و ابزار همچنان اجرا نمیشود.
```mermaid
flowchart TD
A["فراخوانی ابزار ساخته شد"] --> B["ذخیره وضعیت"]
B --> C["Interrupt"]
C --> D{"تصمیم انسان"}
D -->|approve| E["اجرای همان آرگومانها"]
D -->|edit| F["اجرای آرگومانهای ویرایششده"]
D -->|reject| G["بدون اجرا"]
D -->|respond| H["پاسخ به عامل"]
```
ادامه امن با Checkpointer
**روند نهایی**
اول `read_data` بدون مکث اجرا میشود. سپس `write_file` با مسیر `/shared/report.txt` متوقف میشود. وضعیت ذخیره میشود. انسان مسیر را به `/workspace/report.txt` ویرایش میکند. وضعیت بازیابی میشود و `write_file` با مسیر جدید ادامه مییابد.
```mermaid
sequenceDiagram
participant A as Agent
participant C as Checkpointer
participant H as انسان
A->>C: ذخیره state و tool call
A->>H: interrupt
H->>A: approve یا edit یا reject
A->>C: بازیابی همان state
A->>A: ادامه از نقطه مکث
```
بازگشت به دوره