Python Environment and Dependency Management
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Create an isolated Python project environment with uv or virtualenv.
- Install LangChain, LangGraph, provider integrations, and document-processing packages.
- Use a requirements file or pyproject file to reproduce an environment.
چرا محیط پروژه مهم است؟
**ایده اصلی**
هر پروژه باید Python و بستههای موردنیاز خودش را داشته باشد؛ فایل وابستگی این انتخابها را ثبت میکند.
**مثال نسخهها**
پروژه A از `langgraph==0.6.6` و پروژه B از نسخه دیگری استفاده میکند؛ دو محیط جدا مانع تداخل میشوند.
```mermaid
flowchart LR
A["پروژه Python"] --> B["محیط مجازی جدا"]
B --> C["LangChain"]
B --> D["LangGraph"]
B --> E["پردازش سند"]
C --> F["اجرای قابلبازتولید"]
D --> F
E --> F
```
ساخت محیط با uv یا virtualenv
**بررسی مرحلهبهمرحله**
۱. اجرای `uv venv .venv` پوشه را میسازد. ۲. اجرای دستور فعالسازی مسیر محلی را جلو میآورد. ۳. اجرای `python -c "import sys; print(sys.executable)"` باید مسیری شامل `.venv` نشان دهد.
```mermaid
flowchart TD
A["پوشه پروژه"] --> B["ساخت .venv"]
B --> C{"سیستمعامل"}
C -->|"macOS/Linux"| D["فعالسازی با source"]
C -->|"Windows"| E["فعالسازی از Scripts"]
D --> F["Python محلی"]
E --> F
```
نصب وابستگیهای پروژه
**تحلیل یک دستور**
در `python -m pip install langgraph`، مفسر فعال انتخاب میشود، ماژول pip اجرا میشود، عملیات نصب درخواست میشود و بسته `langgraph` در محیط فعال قرار میگیرد.
**کاربرد واقعی**
`langchain-text-splitters` متن بلند را برای جریانهای RAG به قطعههای مناسبتر تقسیم میکند؛ اتصالهای provider هم راه ارتباط با مدلها را فراهم میکنند.
ثبت نسخهها در requirements
**ثبت دقیق یک نسخه**
نسخه نصبشده `langgraph 0.6.6` است. آن را به صورت `langgraph==0.6.6` مینویسیم؛ بخش نام بسته مشخص است، عملگر برابری محدودیت را تعیین میکند و عدد نسخه همان نسخه مجاز است.
**مقایسه دو ثبت**
`langgraph==0.6.6` محدودیت دقیق دارد؛ `langgraph` بدون نسخه انتخاب نسخه را باز میگذارد.
```mermaid
flowchart LR
A["requirements.txt"] --> B["خواندن نام و نسخه"]
B --> C["حل وابستگیها"]
C --> D["نصب در .venv"]
D --> E["محیط مشابه"]
```
pyproject.toml و ساختار پروژه
**جای درست هر مورد**
نیاز به `langgraph` در `dependencies` ثبت میشود؛ یک مقدار تنظیماتی در `.env` قرار میگیرد؛ نقطه ورود graph در `langgraph.json` معرفی میشود.
```mermaid
flowchart TD
A["my-app"] --> B["کد برنامه"]
A --> C["فایل وابستگی"]
A --> D[".env"]
A --> E["langgraph.json"]
C --> F["نصب بستهها"]
E --> G["نقطه ورود graph"]
```
بازسازی کامل و بررسی نهایی
**آزمون نسخه**
فایل، `langgraph==0.6.6` را میخواهد. پس از نصب، دستور import نسخه را چاپ میکند. خروجی `0.6.6` یعنی مقدار واقعی با مقدار ثبتشده برابر است؛ خطای نبودن ماژول یعنی محیط یا نصب باید بررسی شود.
```mermaid
flowchart LR
A["پوشه پروژه"] --> B["ساخت .venv"]
B --> C["فایل وابستگی"]
C --> D["نصب دقیق"]
D --> E["بررسی نسخه"]
E --> F["آماده برای کدنویسی"]
```
**پرسش سریع**
- چون محیط فعال و نسخه دقیق ممکن است مشخص نباشد.
- چون باید فقط از نصب سراسری استفاده شود.
- چون فایل وابستگی هیچ نقشی ندارد.
Back to course