Course Roadmap and Agentic AI Systems
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Identify the progressive path from model calls to RAG and multi-step agents.
- Distinguish a chat application, workflow, RAG system, and autonomous agent.
- Describe the final local file-question-answering system and its major components.
نقشه راه دوره
**هدف کلی**
- حرکت از یک فراخوانی ساده مدل تا ساخت Agentic AI با Python، LangChain و LangGraph
- مسئله نهایی: پاسخگویی مستند به پرسشهای فایلهای محلی
**مسیر پیشرونده**
```mermaid
flowchart LR
A["Model call"] --> B["Prompt and output"]
B --> C["RAG"]
C --> D["Memory and tools"]
D --> E["LangGraph agent"]
E --> F["Evaluation"]
```
**نمونه مسیر برای یک پرسش فایلمحلی**
- فراخوانی مدل: «این متن را خلاصه کن.» → یک پاسخ مستقیم
- RAG: پیدا کردن بخش مرتبط از فایل → تولید پاسخ همراه شاهد
- Agent: انتخاب بین جستوجو، خواندن فایل و پاسخ نهایی
**Builds on ← Python و برنامهنویسی پایه**: هر مرحله بعداً به کد قابل اجرا تبدیل میشود.
**Where this leads → 2.1 Language Model Inputs and Outputs**: پیش از ساخت سیستم، پیام، نقش، prompt و context window را دقیق میشناسیم.
چه چیزی Agent نیست؟
**تعریفها با مثال عددی و اجرایی**
- **Chat application**: پرسش «۲ + ۳ چند است؟» را میگیرد و پاسخ مدل، یعنی «۵»، را نمایش میدهد.
- **Workflow**: همیشه این مسیر ثابت را اجرا میکند: دریافت فایل → خلاصهسازی → ذخیره نتیجه.
- **RAG system**: برای پرسش «حداکثر اندازه فایل چیست؟» ابتدا بخش مرتبط را بازیابی میکند، سپس پاسخ را با همان context میسازد.
- **Agent**: برای همان پرسش، با توجه به وضعیت تصمیم میگیرد فایل را جستوجو کند، نتیجه را بررسی کند، یا دوباره جستوجو را انجام دهد.
```mermaid
flowchart TD
Q["Question"] --> C["Chat application: answer"]
Q --> W["Workflow: fixed steps"]
Q --> R["RAG: retrieve then generate"]
Q --> A["Agent: decide, act, observe"]
A --> A
```
**نکته مرزی**: هر برنامهای که مدل را صدا میزند Agent نیست؛ انتخاب گام بعدی، عمل و امکان تکرار لازم است.
**Builds on ← Model call**: فراخوانی مدل فقط یک جزء از Agent است.
اجزای Agentic AI
**شش جزء اصلی**
```mermaid
flowchart LR
U["User question"] --> O["Orchestration"]
O --> M["Model"]
O --> R["Retrieval"]
O --> T["Tools"]
O --> S["Memory"]
M --> O
R --> O
T --> O
S --> O
O --> E["Evaluation"]
```
- **Model**: تولید متن یا تصمیم ساختیافته؛ مثال: انتخاب «جستوجو» بهجای «پاسخ مستقیم».
- **Retrieval**: آوردن اطلاعات مرتبط؛ مثال: انتخاب بخش سوم از میان ده بخش فایل.
- **Tools**: اجرای کار بیرونی؛ مثال: خواندن فایل یا اجرای جستوجو.
- **Memory**: نگهداری اطلاعات تعامل؛ مثال: حفظ اینکه قالب پاسخ باید کوتاه باشد.
- **Orchestration**: هماهنگی وضعیت و انتخاب مسیر؛ مثال: فرستادن نتیجه جستوجو به Model.
- **Evaluation**: سنجش کیفیت؛ مثال: بررسی پشتیبانی پاسخ با شاهد فایل.
**تفکیک مهم**: Retrieval پیدا میکند؛ Memory نگه میدارد؛ Tool عمل میکند.
**Where this leads → 7.1 LangGraph State and Reducers**: وضعیت و تغییر آن، پایه هماهنگی گرهها میشود.
مثال پرسش از فایل محلی
**مسئله**: «در این نمونه، مقدار `recursion_limit` چیست؟»
```mermaid
flowchart TD
Q["Question"] --> P["Plan"]
P --> L["Read local files"]
L --> R["Retrieve relevant chunk"]
R --> G["Generate answer with citation"]
G --> V["Verify answer"]
V -->|"Needs repair"| R
V -->|"Supported"| A["Final answer"]
```
**اجرای کامل**
1. **Question**: متن پرسش ثبت میشود.
2. **Retrieval**: قطعهای پیدا میشود که این خط را دارد: `graph.invoke(input_data, {"recursion_limit": 1000})`.
3. **Context**: همان قطعه همراه پرسش به Model داده میشود.
4. **Answer**: Model از شاهد استفاده میکند و میگوید مقدار نمونه `1000` است.
5. **Evaluation**: نام گزینه، مقدار و citation با فایل مقایسه میشوند.
6. اگر شاهد کافی نباشد، مسیر به Retrieval برمیگردد؛ در غیر این صورت پاسخ نهایی ثبت میشود.
**نتیجه**
- مقدار نمونه: `recursion_limit = 1000`
- شاهد: `graph.invoke(input_data, {"recursion_limit": 1000})`
**Builds on ← RAG**: بازیابی پیش از تولید، پاسخ را به سند وصل میکند.
معماری سیستم نهایی
**Local File Question-Answering Agent**
```mermaid
flowchart LR
F["Local files"] --> I["Loader and splitter"]
I --> V["Vector store"]
Q["User question"] --> G["LangGraph orchestrator"]
G --> M["Model"]
G --> R["Retriever"]
R --> V
G --> T["File and utility tools"]
G --> S["Short-term memory"]
M --> G
R --> G
T --> G
S --> G
G --> C["Cited answer"]
C --> E["Evaluation and tracing"]
```
**نمونه داده در مسیر**
- فایل: ۲۰ قطعه → `Vector store`
- پرسش: «کدام قطعه درباره `recursion_limit` است؟»
- Retriever: قطعه ۷ را برمیگرداند → Model پاسخ مستند میسازد.
**اجزای معماری**
- پردازش اسناد: loading، splitting، embeddings، vector store
- کنترل: LangGraph state، nodes، edges، conditional routing
- توانایی: Model، Retriever، Tools، Memory
- خروجی: پاسخ همراه citation
- کنترل کیفیت: tracing، test set، evaluation
**Where this leads → 10.1 Capstone**: همین دیاگرام به پروژه کامل تبدیل میشود.
چکلیست تشخیص و جمعبندی
**تشخیص با مثال**
| ویژگی | نام مناسب | نمونه |
|---|---|---|
| پاسخ مستقیم مدل | Chat application | «۲ + ۳» → «۵» |
| مراحل ثابت | Workflow | خواندن → خلاصهسازی → ذخیره |
| بازیابی context و تولید | RAG system | یافتن قطعه ۷ → پاسخ با citation |
| انتخاب گام و تکرار | Agent | جستوجوی دوباره پس از شاهد ناکافی |
```mermaid
flowchart TD
A["Goal"] --> B{"Can system choose next step?"}
B -->|"No"| C["Workflow or RAG"]
B -->|"Yes"| D["Agent"]
D --> E["Model + state + orchestration"]
E --> F["Retrieval + tools + memory"]
F --> G["Evaluation"]
```
- Agent فقط فراخوانی Model نیست؛ انتخاب گام، state، عمل و تکرار لازم است.
- RAG، Memory و Tools سه نقش متفاوت دارند.
- **Where this leads → 2.1**: پیامها و context ورودی مدل را دقیق میسازیم.
- **Where this leads → 10.1**: این اجزا را در Agent فایلمحلی یکپارچه میکنیم.
Back to course