Configuration and API Key Handling
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Load configuration from environment variables and a local .env file.
- Separate secrets, model names, and application settings from source code.
- Validate missing configuration without exposing secret values.
چرا پیکربندی جداست؟
```mermaid
flowchart LR
A["Python application"] --> B["Environment variables"]
C[".env for local work"] --> B
B --> D["Configuration loader"]
D --> E["Model client"]
D --> F["Validation"]
F -->|valid| E
F --> G["Safe error"]
```
چه چیزی کجا قرار میگیرد؟
**سیاست هر مقدار**
- Secret: بدون مقدار پیشفرض؛ در صورت نبودن، خطای امن.
- Model name: قابل تغییر و بیرون از منطق برنامه.
- Application setting: معمولاً دارای مقدار پیشفرض معقول.
بارگذاری فایل .env
```mermaid
flowchart TD
A["شروع برنامه"] --> B["load_dotenv"]
B --> C["خواندن .env به محیط فرایند"]
C --> D["os.getenv"]
D --> E["ساخت configuration"]
```
یک پیکربندی کامل و امن
**دو اجرای متفاوت**
- اجرای اول: MODEL_NAME برابر gpt-4o-mini است؛ client با همین model ساخته میشود.
- اجرای دوم: MODEL_NAME برابر gpt-4.1-mini است؛ client با model تازه ساخته میشود.
- نتیجه: منطق برنامه تغییر نکرده است و secret نیز چاپ نشده است.
اعتبارسنجی بدون افشای راز
**ردیابی فهرست missing**
- شروع: missing برابر [] است.
- کلید موجود است؛ فهرست تغییر نمیکند.
- نام model موجود نیست؛ MODEL_NAME اضافه میشود.
- نتیجه: missing برابر [MODEL_NAME] و پیام خطا فقط نام متغیر است.
**راز را چاپ نکنید**
وجود secret را بررسی کنید، اما مقدار آن را در log، خطا یا traceback نمایش ندهید.
Back to course