خروجیهای ساختاریافته با Pydantic
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Define Pydantic schemas for model outputs.
- Request structured outputs from a compatible model.
- Validate, repair, and handle invalid structured responses.
چرا خروجی ساختیافته؟
**ایدهٔ اصلی**
برنامه باید به یک فیلد مشخص و معتبر تکیه کند، نه به شکل ظاهری متن مدل.
```mermaid
flowchart LR
A["درخواست کاربر"] --> B["مدل زبانی"]
B --> C["خروجی ساختیافته"]
C --> D{"اعتبارسنجی"}
D -->|"معتبر"| E["مسیریابی"]
D -->|"نامعتبر"| F["خطا یا ترمیم"]
```
تعریف Schema با Pydantic
**اعتبارسنجی مقدار**
`value = "poem"` در فهرست مجاز است، پس `Route(step=value)` ساخته میشود. برای `value = "email"`، آزمون عضویت `False` است و ساخت نمونه با `ValidationError` پایان مییابد.
بستن مدل به Schema
```mermaid
flowchart TD
A["llm"] --> B["with_structured_output(Route)"]
B --> C["router"]
C --> D["Route object"]
D --> E["decision.step"]
```
مثال کامل مسیریابی
**مسیریابی واقعی**
درخواست `Write a joke about rain` است. مقدار تصمیم `joke` میشود؛ دو شرط نخست نادرستاند و شرط سوم `joke_node(request)` را اجرا میکند.
خطا، ترمیم و مرز تضمین
```mermaid
flowchart TD
A["پاسخ مدل"] --> B{"Pydantic validation"}
B -->|"معتبر"| C["استفاده از model object"]
B -->|"نامعتبر"| D["ثبت خطا"]
D --> E["ترمیم یا retry"]
E --> A
```
جمعبندی و اتصال به گراف
```mermaid
flowchart LR
A["تعریف BaseModel"] --> B["اتصال با with_structured_output"]
B --> C["فراخوانی invoke"]
C --> D["دریافت model object"]
D --> E["بررسی مقدارها"]
E --> F["مسیریابی یا retry"]
```
**بررسی سریع**
برای `{"step": "story"}` شیء معتبر ساخته میشود؛ برای `{"step": "email"}` خطای اعتبارسنجی رخ میدهد و نباید تصمیم خام مصرف شود.
بازگشت به دوره