كيفية استخدام واجهة برمجة التطبيقات (API) ومجموعة أدوات البرمجيات (SDK) لخدمة أمازون نوفا

@apidog

@apidog

1 نوفمبر 2025

كيفية استخدام واجهة برمجة التطبيقات (API) ومجموعة أدوات البرمجيات (SDK) لخدمة أمازون نوفا

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

أمازون نوفا آكت هو معاينة بحثية أصدرتها أمازون للذكاء الاصطناعي العام (AGI) تتيح للمطورين بناء وكلاء قادرين على اتخاذ إجراءات ضمن متصفحات الويب. تجمع هذه التكنولوجيا بين تعليمات اللغة الطبيعية وبرمجة بايثون وأتمتة Playwright للتنقل في مواقع الويب، والنقر على الأزرار، وملء النماذج، واستخراج البيانات بشكل ديناميكي.

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

💡
هل تبحث عن تبسيط سير عمل تطوير واجهة برمجة التطبيقات (API) الخاصة بك؟ يبرز أبدونغ كبديل نهائي لبروتوكول بوستمان، حيث يقدم مجموعة شاملة من الأدوات لتصميم واجهات برمجة التطبيقات وتصحيح الأخطاء والاختبار والتوثيق - كل ذلك في منصة موحدة. 
زر

مع واجهته البديهية وميزاته التعاونية وقدرات الأتمتة القوية، يقلل أبدونغ بشكل كبير من وقت التطوير مع تحسين جودة واجهة برمجة التطبيقات.

\
زر

المتطلبات الأساسية

قبل البدء باستخدام أمازون نوفا آكت، تحتاج إلى:

الحصول على مفتاح واجهة برمجة التطبيقات الخاص بك من أمازون نوفا آكت

لاستخدام أمازون نوفا آكت:

  1. انتقل إلى nova.amazon.com/act وقم بتسجيل الدخول باستخدام حساب أمازون الخاص بك
  2. حدد "آكت" في قسم المعاملات في لوحة التنقل
  3. قم بتوليد مفتاح واجهة برمجة التطبيقات
  4. إذا لم يكن الوصول فوريًا، قد يتم وضعتك في قائمة الانتظار وسيتم إعلامك عبر البريد الإلكتروني عندما يتم منحك الوصول

التثبيت

بمجرد الحصول على مفتاح واجهة برمجة التطبيقات:

# تثبيت SDK
pip install nova-act

# تعيين مفتاح واجهة برمجة التطبيقات كمتغير بيئي
export NOVA_ACT_API_KEY="your_api_key"

ملاحظة: عند تشغيل نوفا آكت للمرة الأولى، قد يستغرق الأمر 1-2 دقيقة للبدء حيث يقوم بتثبيت وحدات Playwright. الجولات اللاحقة ستبدأ بشكل أسرع.

الاستخدام الأساسي

لنبدأ بمثال بسيط مباشرةً من الوثائق:

from nova_act import NovaAct

with NovaAct(starting_page="https://www.amazon.com") as nova:
    nova.act("ابحث عن ماكينة قهوة")
    nova.act("اختر النتيجة الأولى")
    nova.act("قم بالتمرير لأسفل أو لأعلى حتى ترى 'أضف إلى السلة' ثم انقر على 'أضف إلى السلة'")

سيقوم هذا النص بما يلي:

  1. فتح كروم والتنقل إلى أمازون
  2. البحث عن ماكينات القهوة
  3. اختيار النتيجة الأولى
  4. العثور على زر "أضف إلى السلة" والنقر عليه

الوضع التفاعلي

يمكن استخدام نوفا آكت بطريقة تفاعلية للتجريب:

# بدء وحدة بايثون
$ python
>>> from nova_act import NovaAct
>>> nova = NovaAct(starting_page="https://www.amazon.com")
>>> nova.start()
>>> nova.act("ابحث عن ماكينة قهوة")

بعد إتمام الإجراء الأول، استمر مع الخطوة التالية:

>>> nova.act("اختر النتيجة الأولى")

لاحظ أنه وفقًا للوثائق، لا يدعم نوفا آكت حاليًا iPython؛ استخدم وحدة بايثون القياسية بدلاً من ذلك.

استراتيجيات التوجيه الفعالة

تؤكد الوثائق الرسمية على تقسيم المهام إلى خطوات أصغر لضمان الاعتمادية:

1. كن محددًا وواضحًا

لا تفعل

nova.act("من سجل الطلبات الخاص بي، ابحث عن أحدث طلب لي من India Palace وأعد طلبه")

افعل

nova.act("انقر على أيقونة قائمة الهامبورغر، انتقل إلى سجل الطلبات، ابحث عن أحدث طلب لي من India Palace وأعد طلبه")

2. قسم المهام المعقدة إلى خطوات أصغر

لا تفعل

nova.act("احجز لي فندقًا يكلف أقل من 100 دولار مع أعلى تصنيف نجمي")

افعل

nova.act(f"ابحث عن فنادق في هيوستن بين {startdate} و {enddate}")
nova.act("ترتيب حسب متوسط تقييم العملاء")
nova.act("اضغط على حجز أول فندق يكلف 100 دولار أو أقل")
nova.act(f"املأ اسمي، عنواني، وتاريخ ميلادي وفقًا لـ {blob}")

استخراج البيانات من صفحات الويب

يدعم نوفا آكت استخراج البيانات الهيكلية باستخدام نماذج Pydantic:

from pydantic import BaseModel
from nova_act import NovaAct, BOOL_SCHEMA

class Book(BaseModel):
    title: str
    author: str

class BookList(BaseModel):
    books: list[Book]

def get_books(year: int) -> BookList | None:
    """احصل على أفضل الكتب من NYT في السنة وأعدها كقائمة كتب."""
    with NovaAct(starting_page=f"https://en.wikipedia.org/wiki/List_of_The_New_York_Times_number-one_books_of_{year}#Fiction") as nova:
        result = nova.act(
            "أعد الكتب في قائمة الخيال",
            schema=BookList.model_json_schema()
        )
        
        if not result.matches_schema:
            # لم يتطابق استجابة الفعل مع المخطط
            return None
            
        # تحليل JSON إلى النموذج pydantic
        book_list = BookList.model_validate(result.parsed_response)
        return book_list

للحصول على استجابات بسيطة من نوع boolean، استخدم BOOL_SCHEMA المدمج:

result = nova.act("هل أنا مسجل الدخول؟"، schema=BOOL_SCHEMA)
if result.matches_schema:
    if result.parsed_response:
        print("أنت مسجل الدخول")
    else:
        print("أنت لست مسجل الدخول")

المعالجة المتوازية مع جلسات المتصفح المتعددة

تؤكد الوثائق على GitHub أن نوفا آكت يدعم المعالجة المتوازية مع جلسات المتصفح المتعددة:

from concurrent.futures import ThreadPoolExecutor, as_completed
from nova_act import NovaAct, ActError

# اجمع النتائج هنا
all_books = []

# تعيين الحد الأقصى لجلسات المتصفح المتزامنة
with ThreadPoolExecutor(max_workers=10) as executor:
    # احصل على الكتب من عدة سنوات بشكل متوازي
    future_to_books = {
        executor.submit(get_books, year): year
        for year in range(2010, 2025)
    }
    
    # جمع النتائج
    for future in as_completed(future_to_books.keys()):
        try:
            year = future_to_books[future]
            book_list = future.result()
            if book_list is not None:
                all_books.extend(book_list.books)
        except ActError as exc:
            print(f"تخطي السنة {year} بسبب الخطأ: {exc}")

المصادقة وحالة المتصفح

بالنسبة لمواقع الويب التي تتطلب مصادقة، يوفر نوفا آكت خيارات لاستخدام ملفات تعريف كروم الحالية:

import os
from nova_act import NovaAct

user_data_dir = "path/to/my/chrome_profile"
os.makedirs(user_data_dir, exist_ok=True)

with NovaAct(
    starting_page="https://amazon.com/", 
    user_data_dir=user_data_dir,
    clone_user_data_dir=False
) as nova:
    input("قم بتسجيل الدخول إلى مواقع الويب الخاصة بك، ثم اضغط على enter...")

هناك أيضًا نص مساعد مدمج لهذا الغرض:

python -m nova_act.samples.setup_chrome_user_data_dir

التعامل مع المعلومات الحساسة

تحذر الوثائق بشكل محدد من التعامل مع البيانات الحساسة:

# قم بتسجيل الدخول بشكل صحيح
nova.act("أدخل اسم المستخدم janedoe وانقر على حقل كلمة المرور")

# استخدم Playwright مباشرة للبيانات الحساسة
nova.page.keyboard.type(getpass())  # getpass() يجمع كلمة المرور بشكل آمن

# استمر بعد إدخال بيانات الاعتماد
nova.act("تسجيل الدخول")

تحذير أمني: تلاحظ الوثائق أن لقطات الشاشة المأخوذة أثناء التنفيذ ستلتقط أي معلومات حساسة مرئية.

ميزات إضافية

العمل مع رموز التحقق (Captchas)

result = nova.act("هل هناك رمز تحقق على الشاشة؟"، schema=BOOL_SCHEMA)
if result.matches_schema and result.parsed_response:
    input("يرجى حل رمز التحقق والضغط على return عند الانتهاء")

تنزيل الملفات

with nova.page.expect_download() as download_info:
    nova.act("انقر على زر التنزيل")
    
# احفظ بشكل دائم
download_info.value.save_as("file_downloaded_my")

تسجيل الجلسات

nova = NovaAct(
    starting_page="https://example.com",
    logs_directory="/path/to/logs",
    record_video=True
)

مثال من العالم الحقيقي: البحث عن شقة

يوضح مقال dev.to مثالًا من العالم الحقيقي للعثور على شقق بالقرب من محطة قطار. ها هي البنية الأساسية لذلك المثال:

from concurrent.futures import ThreadPoolExecutor, as_completed
import pandas as pd
from pydantic import BaseModel
from nova_act import NovaAct

class Apartment(BaseModel):
    address: str
    price: str
    beds: str
    baths: str

class ApartmentList(BaseModel):
    apartments: list[Apartment]

class CaltrainBiking(BaseModel):
    biking_time_hours: int
    biking_time_minutes: int
    biking_distance_miles: float

# أولاً ابحث عن شقق
with NovaAct(starting_page="https://zumper.com/", headless=headless) as client:
    client.act(
        "أغلق أي لافتات ملفات تعريف الارتباط. "
        f"ابحث عن شقق بالقرب من {caltrain_city}، كاليفورنيا، "
        f"ثم قم بتصفية {bedrooms} غرفة نوم و {baths} حمامات."
    )
    
    # استخراج قوائم الشقق مع المخطط
    result = client.act(
        "أعد قائمة الشقق المرئية حاليًا",
        schema=ApartmentList.model_json_schema()
    )
    
# ثم تحقق من المسافات باستخدام الدراجات بشكل متوازي
with ThreadPoolExecutor() as executor:
    # إرسال مهام متوازية للتحقق من مسافة القيادة إلى محطة القطار
    future_to_apartment = {
        executor.submit(add_biking_distance, apartment, caltrain_city, headless): apartment 
        for apartment in all_apartments
    }
    
    # عملية النتائج
    for future in as_completed(future_to_apartment.keys()):
        # جمع ومعالجة النتائج
        pass

# فرز وعرض النتائج
apartments_df = pd.DataFrame(apartments_with_biking)

هذا المثال يوضح كيف يمكن لنوفا آكت:

القيود المعروفة

وفقًا للوثائق، فإن نوفا آكت له هذه القيود:

خيارات باني NovaAct

تدرج الوثائق هذه المعلمات لتهيئة NovaAct:

NovaAct(
    starting_page="https://example.com",  # مطلوب: URL للتبدأ عنده
    headless=False,                       # ما إذا كنت تريد تشغيل المتصفح بشكل مرئي أم لا
    quiet=False,                          # ما إذا كنت تريد كتم السجلات
    user_data_dir=None,                   # مسار ملف تعريف كروم
    nova_act_api_key=None,                # مفتاح واجهة برمجة التطبيقات (يمكن استخدام المتغير البيئي بدلاً من ذلك)
    logs_directory=None,                  # حيث يتم تخزين السجلات
    record_video=False,                   # ما إذا كنت تريد تسجيل الجلسة
    # خيارات أخرى كما هو موثق
)

الخاتمة

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

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

نظرًا لأن هذه معاينة بحثية متاحة فقط في الولايات المتحدة، توقع تغييرات وتحسينات مستمرة. للحصول على أحدث المعلومات، يُرجى دائمًا الرجوع إلى الوثائق الرسمية على GitHub وnova.amazon.com/act.

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات