logo
pub

كيف تستخدم FastAPI لتغليف API الخاص بـ Luma AI: دليل عملي

1. مقدمة عن Lumalabs و Dream Machine

Lumalabs شركة مبتكرة قاعدة بالأساس في عالم الذكاء الاصطناعي وتعلم الآلة. واحدة من مميزاتها الرائعة هي Dream Machine، اللي تخليك تولد فيديوهات من نصوص أو صور باستخدام ذكاء اصطناعي متطور. والحين، جبتلكم API غير رسمي عشان نستخدمه، وبوريكم كيف نغلفه باستخدام FastAPI. سواء كنت مطور تبغى تضيف توليد الفيديوهات في تطبيقك أو بس تبي تلعب بشيء من قدرات Luma، هالدليل بيساعدك تبدأ.

توثيق API: Luma API

2. إعداد FastAPI

2.1. تثبيت FastAPI

أول شيء، يحتاج نثبت FastAPI. إذا ما نصبتيه من قبل، تقدر بسرعة تشغله ب pip. بس اكتب:

pip install fastapi

وبعد تحتاج سيرفر ASGI عشان يخدم تطبيق FastAPI الخاص فيك، مثل uvicorn:

pip install uvicorn

2.2. إنشاء تطبيق FastAPI بسيط

خلونا نبدأ بتطبيق FastAPI بسيط عشان نتأكد كل شيء معد صح. أنشئ ملف بايثون جديد باسم main.py:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "مرحبا، Luma AI!"}

الحين، شغل السيرفر باستخدام uvicorn:

uvicorn main:app --reload

روح لع الرابط http://127.0.0.1:8000/ في المتصفح، ولازم تشوف رسالة "مرحبا، Luma AI!".

3. تغليف API Luma

3.1. إعداد نقطة النهاية POST

الحين، بنسوي نقطة نهاية POST في FastAPI تخدم API Luma لتوليد الفيديوهات. الفكرة إننا نبغى واجهة سهلة وبسيطة للاستخدام الداخلي.

وهنا كيف تقدر تسوي نقطة النهاية:

import requests
from fastapi import FastAPI, Form

app = FastAPI()

LUMA_API_URL = "https://api.lumaapi.com/api/v1/generation/add"
LUMA_API_TOKEN = "sk-xxx"  # استبدل هذا بالتوكن الفعلي حقك

@app.post("/generate-video/")
def generate_video(
    prompt: str = Form(...),
    callback_url: str = Form(...),
    image_url: str = Form(None),
    image_end_url: str = Form(None),
    aspect_ratio: str = Form("16:9")
):
    payload = {
        'arg_prompt': prompt,
        'callback': callback_url,
        'arg_image_url': image_url,
        'arg_image_end_url': image_end_url,
        'arg_aspect_ratio': aspect_ratio
    }
    headers = {
        'Authorization': f'Bearer {LUMA_API_TOKEN}'
    }

    response = requests.post(LUMA_API_URL, headers=headers, data=payload)

    return response.json()

3.2. تحليل نقطة النهاية

  • تجهيز البيانات: هنا نجمع البيانات المهمة مثل النص، رابط الـ callback، وروابط الصور باستخدام دالة Form من FastAPI. هذا يساعدنا نخلق الهيكل المطلوب.

  • التفويض: نضيف توكن Bearer في الهيدرز عشان نأمن الوصول لل API.

  • عمل طلب لـ API: بعدين نسوي طلب POST لـ API Luma ونرجع الاستجابة ك JSON.

4. اختبار API الخاص بك

4.1. استخدام وثائق FastAPI المدمجة

واحدة من المميزات الرائعة في FastAPI هي الوثائق المولدة تلقائياً. بعد ما تشغل التطبيق، روح لـ http://127.0.0.1:8000/docs، وبتشوف صفحة وثائق تفاعلية حلوة.

4.2. عمل طلب اختبار

تقدر بسهولة تختبر نقطة النهاية /generate-video/ الجديدة من الوثائق. حط في الخانات المطلوبة نص تجريبي، رابط callback، وخيارات الصور بعدين اضغط "Execute" عشان تشوف النتيجة.

5. التعامل مع الـ Callback

5.1. إعداد نقطة نهاية الـ Callback

بعد ما يتم توليد الفيديو، API Luma راح ترسل طلب POST لرابط الـ callback اللي قدمته. خلونا نضبط نقطة نهاية عشان نتعامل مع ذلك:

from fastapi import Request

@app.post("/api/cb_task/")
async def handle_callback(request: Request):
    callback_data = await request.json()
    # اعمل شيء مع بيانات callback، مثل حفظ رابط الفيديو في قاعدة البيانات
    return {"status": "تم استلام callback", "data": callback_data}

5.2. معالجة بيانات الـ Callback

في معالج callback، تقدر تعالج البيانات بأي شكل تريده. مثلاً، يمكن تبي تخزن رابط الفيديو في قاعدة بياناتك أو تشغل إجراء آخر بناءً على الاستجابة.

6. إنهاء

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