LangChain and LangGraph Version Compatibility
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Inspect installed package versions programmatically.
- Interpret compatibility constraints among LangChain, LangGraph, and provider packages.
- Upgrade dependencies deliberately and diagnose import changes.
چرا سازگاری نسخه مهم است؟
**ایده اصلی**
نصب بودن بسته با سازگار بودن نسخه آن یکی نیست.
```mermaid
flowchart LR
A["محیط Python"] --> B["نسخههای نصبشده"]
B --> C{"سازگار؟"}
C -->|بله| D["import و اجرا"]
C -->|خیر| E["بررسی قیدها و اصلاح"]
E --> B
```
نسخه را دقیق ببین
**مثال عددی**
در نسخه `0.3.28` داریم: `major=0`، `minor=3`، `patch=28`. اگر حداقل نسخه `0.3.20` باشد، آنگاه `0.3.28` شرط حداقل را برآورده میکند.
```mermaid
flowchart TD
A["اجرای Python در محیط هدف"] --> B["import بسته"]
B --> C["خواندن __version__"]
C --> D["ثبت خروجی"]
D --> E["مقایسه با قید dependency"]
```
قید نسخه را حل کن
**حل مرحلهبهمرحله**
برای `langgraph==0.2.40`:
`0.2.40 \geq 0.2.50` نادرست است.
`0.2.40 < 0.3.0` درست است.
چون یکی از دو شرط نادرست است، نسخه رد میشود. `0.2.50` هر دو شرط را برآورده میکند.
```mermaid
flowchart LR
A["مشخصات پروژه"] --> B["قید هر بسته"]
B --> C["نسخه نصبشده"]
C --> D{"تمام شرطها؟"}
D -->|بله| E["سازگار"]
D -->|خیر| F["نقض dependency"]
F --> G["انتخاب نسخه در بازه"]
```
ارتقا، اما با کنترل
**مثال ارتقای محدود**
وضعیت اولیه: `langgraph==0.2.40`؛ قید پروژه: `>=0.2.50,<0.3.0`.
۱. اجرای دستور نصب با همین بازه.
۲. بررسی نسخه جدید؛ نمونه: `0.2.50`.
۳. اجرای `pip check`.
۴. اجرای `import` و کد واقعی.
نتیجه فقط وقتی پذیرفتنی است که نسخه، dependencyها و رفتار برنامه همگی بررسی شوند.
```mermaid
flowchart TD
A["ثبت نسخههای فعلی"] --> B["ثبت خطا یا قید مورد نیاز"]
B --> C["انتخاب تغییر کوچک و آگاهانه"]
C --> D["ارتقا یا نصب"]
D --> E["بررسی نسخهها"]
E --> F["آزمون import"]
F --> G{"نتیجه؟"}
G -->|موفق| H["ثبت محیط"]
G -->|شکست| I["خواندن traceback و بررسی import"]
I --> C
```
از import تا قرارداد پایدار
**دو سطح آزمون**
- بارگذاری: مسیر و نام نماد پیدا میشود.
- اجرا: مدل ساخته میشود و پاسخ معتبر برمیگردد.
**ردیابی یک اجرای واقعی**
۱. اجرای `from langchain.chat_models import init_chat_model` و بررسی نبودن خطای import.
۲. ساخت `model` با `init_chat_model(...)`.
۳. اجرای `model.invoke(...)` با یک پیام نمونه.
۴. خواندن `response.content`.
نتیجه: تنها عبور موفق از هر چهار مرحله، سازگاری عملی مسیر استفادهشده را نشان میدهد.
Back to course