ورودیها و خروجیهای مدل زبانی
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Explain messages, roles, prompts, completions, tokens, and context windows.
- Construct system and user messages for a bounded task.
- Inspect model response content and metadata.
از درخواست تا پاسخ مدل
**ایدهٔ اصلی**
ورودی Chat Model معمولاً فهرستی از پیامهای دارای role و content است، نه یک رشتهٔ تنها.
**نمونهٔ کامل**
پیام system قرارداد «کوتاه پاسخ بده» را میدهد و پیام user درخواست «سه کاربرد Python» را. مدل هر دو را میخواند و completion تولید میکند.
```mermaid
flowchart LR
A["کاربر"] --> B["فهرست پیامها"]
B --> C["مدل زبانی"]
C --> D["پاسخ assistant"]
D --> E["متن و metadata"]
```
نقشها و ساخت پیام دقیق
**سه نقش اصلی**
- system: قرارداد و سبک کلی
- user: درخواست یا دادهٔ فعلی
- assistant: پاسخ قبلی یا پاسخ تازهٔ مدل
**خلاصهسازی دو نکتهای**
دادهٔ user دو کاربرد را بیان میکند: ابزارهای داده و ابزارهای وب. چون system سقف 2 نکته تعیین کرده است، خروجی نمونه دقیقاً همین دو نکته است.
```mermaid
flowchart TD
S["system: قرارداد کار"] --> M["مدل"]
U["user: داده و درخواست"] --> M
H["assistant: تاریخچهٔ پاسخ"] --> M
M --> O["assistant: پاسخ جدید"]
```
توکن و پنجرهٔ زمینه
**سقف مشترک**
تعداد tokenهای ورودی و خروجی با هم باید از ظرفیت context window بیشتر نشود.
**محاسبهٔ فضای پاسخ**
اگر ظرفیت 1000 و ورودی 760 token باشد، ابتدا 1000 − 760 را حساب میکنیم؛ نتیجه 240 است. بنابراین خروجی حداکثر 240 token خواهد بود.
```mermaid
flowchart LR
T["متن"] --> Z["tokenizer"]
Z --> K["توکنها"]
K --> W["context window"]
W --> M["مدل"]
```
فراخوانی و خواندن پاسخ
**از درخواست تا خروجی**
درخواست میگوید پاسخ یکواژهای دربارهٔ پایتخت France بده. مدل پاسخ `Paris` را در انتخاب اول قرار میدهد؛ مسیر `choices[0].message.content` همین متن را استخراج میکند و `usage` مصرف را جدا نگه میدارد.
```mermaid
sequenceDiagram
participant P as Python
participant L as Chat Model
P->>L: messages
L-->>P: response
P->>P: استخراج content
P->>P: بررسی metadata
```
بازرسی، محدودیت و مسیر بعدی
**بررسی یک پاسخ**
اگر `choices` خالی باشد، نباید به اندیس صفر دسترسی بگیریم؛ ابتدا خطا یا پاسخ ناقص را بررسی میکنیم. اگر انتخاب وجود داشته باشد، متن از مسیر `choices[0].message.content` و مصرف از `usage` خوانده میشود.
**پیام چندرسانهای**
در `HumanMessage`، بخش اول متن پرسش و بخش دوم تصویر است. نتیجهگیری: `content` میتواند فهرست بخشها باشد، اما مدل باید قالب تصویر را پشتیبانی کند.
```mermaid
flowchart TD
A["پیامهای ساختاریافته"] --> B["ارسال به مدل"]
B --> C{"پاسخ معتبر؟"}
C -- "بله" --> D["استخراج متن و usage"]
C -- "نه" --> E["بررسی خطا، اندازه و قالب"]
```
جمعبندی مسیر یادگیری
**بررسی نهایی**
با ظرفیت 500، ورودی 320 و خروجی 150 token، جمع برابر 470 است؛ چون 470 ≤ 500، درخواست معتبر است و 30 token فضای خالی میماند.
**اتصال به ادامهٔ دوره**
این قرارداد پیام، ورودی روشهای `invoke`، `batch` و فراخوانی ناهمگام در 2.2 است و usage برای تحلیل هزینه و latency در 2.5 به کار میرود.
بازگشت به دوره