نمونه ۰۲: یکپارچه‌سازی SDK OpenAI

January 29, 2026 · View on GitHub

نمایش یکپارچه‌سازی پیشرفته با SDK پایتون OpenAI، پشتیبانی از Foundry Local مایکروسافت و Azure OpenAI با پاسخ‌های استریم و مدیریت صحیح خطا.

مرور کلی

این نمونه موارد زیر را نشان می‌دهد:

  • تغییر بدون مشکل بین Foundry Local و Azure OpenAI
  • تکمیل چت استریم برای تجربه بهتر کاربر
  • استفاده صحیح از SDK FoundryLocalManager
  • مدیریت خطاهای قوی و مکانیزم‌های جایگزین
  • الگوهای کدنویسی آماده برای تولید

پیش‌نیازها

  • Foundry Local: نصب شده و در حال اجرا (برای استنتاج محلی)
  • پایتون: نسخه ۳.۸ یا بالاتر با SDK OpenAI
  • Azure OpenAI: نقطه پایانی معتبر و کلید API (برای استنتاج ابری)

نصب

۱. راه‌اندازی محیط پایتون:

cd Module08
py -m venv .venv
.venv\Scripts\activate

۲. نصب وابستگی‌ها:

pip install -r requirements.txt

۳. شروع Foundry Local (برای حالت محلی):

foundry model run phi-4-mini

سناریوهای استفاده

Foundry Local (پیش‌فرض)

گزینه ۱: استفاده از FoundryLocalManager (توصیه‌شده)

# Automatic service discovery and model management
set MODEL=phi-4-mini
python samples\02\sdk_quickstart.py

گزینه ۲: پیکربندی دستی

# Manual endpoint configuration
set BASE_URL=http://localhost:8000
set MODEL=phi-4-mini
set API_KEY=
python samples\02\sdk_quickstart.py

Azure OpenAI

# Azure OpenAI configuration
set AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
set AZURE_OPENAI_API_KEY=your-api-key
set AZURE_OPENAI_API_VERSION=2024-08-01-preview
set MODEL=your-deployment-name
python samples\02\sdk_quickstart.py

معماری کد

الگوی کارخانه کلاینت

این نمونه از الگوی کارخانه برای ایجاد کلاینت‌های مناسب استفاده می‌کند:

def create_foundry_client():
    """Create Foundry Local client with SDK management."""
    manager = FoundryLocalManager(alias)
    client = OpenAI(
        base_url=manager.endpoint,
        api_key=manager.api_key
    )
    return client, manager.get_model_info(alias).id

def create_azure_client():
    """Create Azure OpenAI client."""
    client = OpenAI(
        base_url=f"{endpoint}/openai",
        api_key=api_key,
        default_query={"api-version": api_version}
    )
    return client, model

پاسخ‌های استریم

این نمونه استریم را برای تولید پاسخ‌های بلادرنگ نشان می‌دهد:

stream = client.chat.completions.create(
    model=model,
    messages=[{"role": "user", "content": prompt}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

متغیرهای محیطی

پیکربندی Foundry Local

متغیرتوضیحاتپیش‌فرضضروری
MODELنام مستعار مدل برای استفادهphi-4-miniخیر
BASE_URLنقطه پایانی Foundry Localhttp://localhost:8000خیر
API_KEYکلید API (اختیاری برای حالت محلی)""خیر

پیکربندی Azure OpenAI

متغیرتوضیحاتپیش‌فرضضروری
AZURE_OPENAI_ENDPOINTنقطه پایانی منبع Azure OpenAI-بله
AZURE_OPENAI_API_KEYکلید API Azure OpenAI-بله
AZURE_OPENAI_API_VERSIONنسخه API2024-08-01-previewخیر
MODELنام استقرار Azureyour-deployment-nameبله

ویژگی‌های پیشرفته

کشف خودکار سرویس

این نمونه به‌طور خودکار سرویس مناسب را بر اساس متغیرهای محیطی تشخیص می‌دهد:

۱. حالت Azure: اگر AZURE_OPENAI_ENDPOINT و AZURE_OPENAI_API_KEY تنظیم شده باشند ۲. حالت SDK Foundry: اگر SDK Foundry Local در دسترس باشد ۳. حالت دستی: بازگشت به پیکربندی دستی

مدیریت خطا

  • بازگشت بدون مشکل از SDK به پیکربندی دستی
  • پیام‌های خطای واضح برای رفع اشکال
  • مدیریت صحیح استثناها برای مشکلات شبکه
  • اعتبارسنجی متغیرهای محیطی ضروری

ملاحظات عملکرد

مزایا و معایب محلی در مقابل ابری

مزایای Foundry Local:

  • ✅ بدون هزینه API
  • ✅ حفظ حریم خصوصی داده‌ها (هیچ داده‌ای دستگاه را ترک نمی‌کند)
  • ✅ تأخیر کم برای مدل‌های پشتیبانی‌شده
  • ✅ کارکرد آفلاین

مزایای Azure OpenAI:

  • ✅ دسترسی به مدل‌های بزرگ جدید
  • ✅ توان عملیاتی بالاتر
  • ✅ بدون نیاز به محاسبات محلی
  • ✅ SLA در سطح سازمانی

رفع اشکال

مشکلات رایج

۱. هشدار "امکان استفاده از SDK Foundry وجود ندارد":

pip install foundry-local-sdk

۲. خطاهای احراز هویت Azure:

# Verify your endpoint format
echo %AZURE_OPENAI_ENDPOINT%
# Should be: https://your-resource.openai.azure.com

۳. مدل در دسترس نیست:

# For Foundry Local
foundry model list
foundry model run your-model-name

# For Azure OpenAI
# Check your deployment name in Azure Portal

بررسی سلامت

# Foundry Local
foundry service status
curl http://localhost:8000/v1/models

# Azure OpenAI
curl -H "api-key: %AZURE_OPENAI_API_KEY%" "%AZURE_OPENAI_ENDPOINT%/openai/deployments?api-version=2024-08-01-preview"

مراحل بعدی

  • نمونه ۰۳: کشف مدل و ارزیابی عملکرد
  • نمونه ۰۴: ساخت یک برنامه Chainlit RAG
  • نمونه ۰۵: هماهنگی چند عامل
  • نمونه ۰۶: مسیریابی مدل‌ها به‌عنوان ابزار

منابع