موجّه تذاكر Mistral باستخدام FastAPI: دليل آمن لدول الخليج

Share:

أنشئ أساسًا آمنًا لتوجيه التذاكر باستخدام FastAPI، مع تحقق صارم من الطلبات، وسياسات تصعيد حتمية، وسجلات تدقيق في SQLite، وحدّ تكامل آمن لتنفيذ موثّق لـ Mistral API.

ملاحظة مهمة حول الدقة قبل البدء

تؤكد المادة المصدرية المقدمة أن Mistral AI شركة ذكاء اصطناعي مقرها باريس، وتصفها بأنها منافس لـ OpenAI. لكنها لا توفر وثائق API رسمية، أو معرّفات النماذج المدعومة، أو تفاصيل حزمة Python SDK، أو تواقيع أساليب إكمال المحادثات، أو معلمات المخرجات المنظمة، أو الأسعار، أو التزامات الاستضافة الإقليمية، أو ضمانات النشر.

لذلك، لا يقدم هذا الدرس البرمجي كود Mistral SDK غير الموثق بوصفه حقيقة جاهزة للإنتاج. بدلًا من ذلك، ينشئ موجّه تذاكر كاملًا وقابلًا للتشغيل باستخدام FastAPI، مع مصنف محلي حتمي وحدّ مزود محدد بوضوح. بعد الرجوع إلى وثائق Mistral الرسمية الحالية وإتمام تقييمك الخاص، استبدل تنفيذ المصنف المحلي عند هذا الحد بتكامل Mistral موثق ومناسب لحسابك ونموذجك المعتمد.

يُعد هذا نهجًا هندسيًا أكثر أمانًا من نسخ اسم مستعار غير موثق لنموذج، أو أسلوب SDK، أو خيار وضع JSON إلى سير عمل موجه للعملاء. وتظل بقية الخدمة — عقود الإدخال، وتخزين التدقيق، والتفويض، وسياسة التوجيه، والاختبارات، والضوابط التشغيلية — مفيدة بغض النظر عن مزود الذكاء الاصطناعي أو النموذج المعتمد الذي ستتصل به لاحقًا.

ما الذي ستبنيه

ستبني خدمة FastAPI توفر نقطة النهاية POST /tickets/classify. يرسل العميل تذكرة دعم تتضمن معرّف التذكرة، والموضوع، والمحتوى، وفئة العميل، والمصدر. تتحقق الخدمة من صحة الطلب، وتصنفه ضمن تصنيف محدود، وتطبق قواعد تصعيد حتمية، وتسجل حدث تدقيق في SQLite، ثم تعيد استجابة JSON محددة الأنواع.

يستخدم الأساس العملي عمدًا قواعد كلمات مفتاحية شفافة بدلًا من الادعاء بتوفر استدعاء خارجي غير موثق لنموذج. وليس الهدف منه استبدال LLM خضع للتقييم. بل يهدف إلى منح فريقك أساسًا آمنًا وقابلًا للاختبار للتوجيه، وواجهة دقيقة لمصنف مستقبلي مدعوم من Mistral.

تُعد هذه البنية مفيدة لمكاتب الخدمات، وفرق دعم العملاء، وقوائم انتظار تقنية المعلومات الداخلية، واستقبال بلاغات الأمن، واستثناءات الخدمات اللوجستية، وسير عمل إدارة الحسابات. وهي ذات صلة خاصة بالمؤسسات في دول الخليج التي تتبنى الذكاء الاصطناعي في إطار برامج مثل رؤية السعودية ٢٠٣٠ والاستراتيجية الوطنية للذكاء الاصطناعي في الإمارات: ينبغي للأتمتة أن تحافظ على مسارات المراجعة، ووضوح الملكية، والقرارات القابلة للتدقيق عندما قد تحتوي التذاكر على معلومات العملاء أو الموظفين أو معلومات حساسة أمنيًا.

المتطلبات المسبقة والتثبيت

  • Python ٣.١٠ أو أحدث.
  • إلمام أساسي بالبيئات الافتراضية وHTTP APIs وJSON.
  • FastAPI وUvicorn وPydantic Settings وpytest.
  • حساب Mistral API مستقبلي فقط عندما تكون مستعدًا لتنفيذ محول المزود استنادًا إلى الوثائق الرسمية الحالية.

أنشئ المشروع وثبّت التبعيات:

mkdir fastapi-ticket-router
cd fastapi-ticket-router

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip

cat > requirements.txt <<'EOF'
fastapi>=0.115.0
uvicorn[standard]>=0.30.0
pydantic>=2.8.0
pydantic-settings>=2.4.0
pytest>=8.3.0
EOF

pip install -r requirements.txt
mkdir -p app tests
touch app/__init__.py

أنشئ ملف بيئة محليًا. يحمي مفتاح API الخاص بالتطبيق نقطة النهاية الخاصة بك؛ وهو منفصل عن أي بيانات اعتماد مستقبلية لمزود الذكاء الاصطناعي. لا ترفع هذا الملف إلى نظام التحكم بالمصادر.

cat > .env <<'EOF'
APP_API_KEY=replace-with-a-long-random-secret
DATABASE_PATH=./ticket_router.db
MAX_TICKET_CHARACTERS=12000
EOF

cat > .gitignore <<'EOF'
.venv/
.env
__pycache__/
.pytest_cache/
*.pyc
ticket_router.db
EOF

في بيئة الإنتاج، ضع الأسرار في منشأة إدارة أسرار مشفرة ومعتمدة من فريق السحابة أو المنصة لديك. لا ترسل مفتاح API الخاص بمزود الذكاء الاصطناعي مطلقًا إلى JavaScript في المتصفح، أو عملاء الأجهزة المحمولة، أو المستودعات العامة، أو متغيرات البيئة من جانب العميل.

الخطوة ١: تحديد العقود الصارمة والإعدادات

ينبغي أن يستقر تكامل LLM خلف عقد API حتمي. يجب أن تتلقى الأنظمة اللاحقة مجموعة محدودة من الفئات، وقيم ثقة مقيدة، وعلامات مراجعة صريحة، لا نصًا حرًا اعتباطيًا. أنشئ app/config.py وapp/schemas.py:

cat > app/config.py <<'EOF'
from functools import lru_cache
from pydantic import Field, SecretStr
from pydantic_settings import BaseSettings, SettingsConfigDictclass Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
app_api_key: SecretStr
database_path: str = "./ticket_router.db"
max_ticket_characters: int = Field(default=12000, ge=500, le=50000)@lru_cache
def get_settings() -> Settings:
return Settings()
EOFcat > app/schemas.py <<'EOF'
from enum import Enum
from pydantic import BaseModel, Field, field_validatorclass CustomerTier(str, Enum):
free = "free"
standard = "standard"
business = "business"
enterprise = "enterprise"class TicketCategory(str, Enum):
billing = "billing"
account_access = "account_access"
technical_issue = "technical_issue"
security = "security"
sales = "sales"
feature_request = "feature_request"
cancellation = "cancellation"
abuse = "abuse"
other = "other"class Urgency(str, Enum):
low = "low"
normal = "normal"
high = "high"
critical = "critical"class TicketInput(BaseModel):
ticket_id: str = Field(min_length=3, max_length=100, pattern=r"^[A-Za-z0-9_-]+$")
subject: str = Field(min_length=3, max_length=300)
body: str = Field(min_length=10, max_length=12000)
customer_tier: CustomerTier = CustomerTier.standard
source: str = Field(default="api", max_length=50)@field_validator("subject", "body")
@classmethod
def reject_blank_text(cls, value: str) -> str:
value = value.strip()
if not value:
raise ValueError("must not be blank")
return valueclass ClassificationResult(BaseModel):
category: TicketCategory
urgency: Urgency
confidence: float = Field(ge=0.0, le=1.0)
recommended_team: str = Field(min_length=2, max_length=80)
customer_summary: str = Field(min_length=10, max_length=500)
...

تابع القراءة

سجل دخولك مجاناً لقراءة المقال كاملاً والوصول إلى أدوات الذكاء الاصطناعي.

تسجيل الدخول / إنشاء حساب

هل كان هذا الشرح مفيداً؟

مرشد بوابة الذكاء الاصطناعي
نشط للخدمة
مرحباً بك في بوابة الذكاء الاصطناعي! أنا مرشدك هنا لمساعدتك في فهم خدمات المنصة، باقات التشغيل وخطط الضمان المالي. كيف يمكنني إرشادك اليوم؟