0Pricing
AI Agents · درس

تقديم الوكلاء خلف API

غلّف وكيلك باستخدام FastAPI مع المصادقة والتحقق من الطلبات والبث عبر SSE أو WebSockets.

تقديم الوكلاء خلف API درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

من الدفتر إلى الخدمة

الوكيل العامل داخل دفتر ملاحظات هو البداية. ولإطلاقه، غلّفه في واجهة API عبر HTTP يمكن للخدمات الأخرى استدعاؤها.

FastAPI Skeleton

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class AgentRequest(BaseModel):
    query: str
    user_id: str

class AgentResponse(BaseModel):
    answer: str
    trace_id: str

@app.post('/agents/qa', response_model=AgentResponse)
def qa(req: AgentRequest):
    trace_id = run_agent(req.query, req.user_id)
    return AgentResponse(answer=result.answer, trace_id=trace_id)

المصادقة

يجب أن تتم مصادقة كل نقطة نهاية للوكيل. استخدم مفاتيح API أو OAuth، وفقًا لنوع المستدعي:

from fastapi import Header, HTTPException

def require_api_key(api_key: str = Header(alias='X-API-Key')):
    if not is_valid(api_key):
        raise HTTPException(401, 'Invalid API key')
    return api_key

@app.post('/agents/qa')
def qa(req: AgentRequest, key=Depends(require_api_key)):
    ...

الاستجابات المتدفقة

بالنسبة إلى واجهات الدردشة، أرسل الرموز تدريجيًا باستخدام SSE:

from fastapi.responses import StreamingResponse

@app.post('/agents/qa/stream')
def qa_stream(req: AgentRequest):
    def gen():
        for chunk in stream_agent(req.query):
            yield f'data: {chunk}\n\n'
        yield 'data: [DONE]\n\n'
    return StreamingResponse(gen(), media_type='text/event-stream')

التحقق من الطلبات

يفرض Pydantic الأنواع وعمليات التحقق الأساسية. أضف عمليات تحقق مخصصة عند الحاجة:

from pydantic import Field

class AgentRequest(BaseModel):
    query: str = Field(min_length=1, max_length=10_000)
    user_id: str
    options: dict = {}

معالجة الأخطاء

حوّل الاستثناءات إلى استجابات HTTP واضحة:

from fastapi import HTTPException

@app.exception_handler(BudgetExceeded)
def budget_handler(req, exc):
    return JSONResponse({'error': 'budget-exceeded'}, status_code=429)

@app.exception_handler(Exception)
def catch_all(req, exc):
    log.exception('Unhandled')
    return JSONResponse({'error': 'internal', 'trace_id': get_trace_id()}, status_code=500)

التزامن

يستخدم FastAPI البرمجة غير المتزامنة افتراضيًا. وبالنسبة إلى الوكلاء المرتبطين بوحدة المعالجة المركزية (وهو أمر نادر) أو حزم SDK الحاجبة، استخدم العملاء غير المتزامنين:

from openai import AsyncOpenAI
client = AsyncOpenAI()

async def run_agent_async(query):
    return await client.chat.completions.create(...)

Health and Readiness Endpoints

@app.get('/healthz')
def healthz():
    return {'status': 'ok'}

@app.get('/readyz')
def readyz():
    if not vector_db.is_healthy():
        raise HTTPException(503)
    return {'status': 'ready'}

Containerise

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ['uvicorn', 'main:app', '--host', '0.0.0.0', '--port', '8080']

شغّله باستخدام عدة عمال

استخدم Uvicorn + Gunicorn في الإنتاج:

gunicorn -k uvicorn.workers.UvicornWorker -w 4 main:app

الوكيل العكسي

ضعوا Nginx أو Caddy أمام الخدمة لتوفير TLS وgzip والسماح بعناوين IP محددة.

Logging Structured Output

import structlog
log = structlog.get_logger()

@app.middleware('http')
async def log_requests(request, call_next):
    response = await call_next(request)
    log.info('http', method=request.method, path=request.url.path, status=response.status_code)
    return response

CORS for Browser Clients

from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=['https://app.example.com'],
    allow_methods=['*'], allow_headers=['*']
)

عنصر في قائمة التحقق للإنتاج

ما الأمر الأساسي لأي واجهة API لوكيل قيد التشغيل في بيئة الإنتاج؟

مراجعة

FastAPI + Pydantic + عميل غير متزامن + البث + المصادقة + السجلات المهيكلة + فحوصات الصحة. هذا هو الحد الأدنى لبيئة الإنتاج.

الأسئلة الشائعة

هل درس «تقديم الوكلاء خلف API» مجاني؟

نعم — نص درس «تقديم الوكلاء خلف API» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «تقديم الوكلاء خلف API»؟

غلّف وكيلك باستخدام FastAPI مع المصادقة والتحقق من الطلبات والبث عبر SSE أو WebSockets. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تقديم الوكلاء خلف API»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تقديم الوكلاء خلف API
  2. سير العمل غير المتزامن والمهام الخلفية
  3. تحديد معدل الطلبات وإدارة الحصص
  4. عمليات النشر Blue-Green وCanary للوكلاء
← العودة إلى AI Agents