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

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

على سبيل المثال، تُقدّم منصات مثل Reddit وTwitter وFacebook واجهات برمجة تطبيقات (APIs) لمساعدتك في استرجاع مجموعات بيانات مُحدّدة أو إجراء استعلامات مُتقدّمة. في هذا الدليل، سنستكشف كيفية استخدام واجهة برمجة تطبيقات (API) في بايثون، بدءًا من استرجاع البيانات من محطة الفضاء الدولية (ISS).

ما هي واجهة برمجة التطبيقات (API)؟

واجهة برمجة التطبيقات (API) هي خادم يتيح لك طلب البيانات وإرسالها باستخدام الشيفرة البرمجية. وهي بمثابة جسر بين تطبيقك والأنظمة الخارجية، مما يسمح لك بدمج البيانات والوظائف القيّمة دون الحاجة إلى الحصول عليها يدويًا.

كيف تعمل واجهات برمجة التطبيقات (APIs)

تعمل واجهات برمجة التطبيقات (APIs) بإرسال طلبات إلى خادم وتلقي ردود. على سبيل المثال، عند زيارة صفحة ويب، يُرسل متصفحك طلبًا إلى الخادم، الذي يُعيد بدوره محتوى الصفحة. تتبع واجهات برمجة التطبيقات المبدأ نفسه، حيث تتيح لك استرجاع البيانات، والوصول إلى الميزات، والتفاعل مع الخدمات برمجيًا.

الأدوات الشائعة التي تستخدم واجهات برمجة التطبيقات

فيما يلي بعض واجهات برمجة التطبيقات المستخدمة على نطاق واسع والتي تُظهر قوة دمج واجهة برمجة التطبيقات في Python:

  • OpenAI API: أداة متعددة الاستخدامات لإنشاء النصوص وتلخيصها وفهم اللغة الطبيعية.
  • واجهات برمجة تطبيقات Google Cloud AI: توفر خدمات الذكاء الاصطناعي للرؤية واللغة والمحادثة.
  • IBM Watson API: مجموعة من الأدوات لمهام مثل معالجة اللغة الطبيعية والتعرف البصري.

لماذا ومتى تستخدم واجهة برمجة التطبيقات في بايثون

يقدم استخدام واجهة برمجة التطبيقات في Python العديد من المزايا لمشاريع الذكاء الاصطناعي وعلوم البيانات:

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

عندما تكون واجهات برمجة التطبيقات (APIs) أفضل من مجموعات البيانات الثابتة

تعتبر واجهات برمجة التطبيقات فعالة بشكل خاص في المواقف التالية:

  • البيانات سريعة التطور: بالنسبة للمعلومات التي تتغير بشكل متكرر، تعمل واجهات برمجة التطبيقات على التخلص من متاعب تنزيل وتحديث مجموعات البيانات الثابتة بشكل متكرر.
  • استخراج البيانات المستهدفة: استرداد الجزء المحدد فقط من مجموعة البيانات التي تحتاجها، مثل تعليقات Reddit الأخيرة.
  • الوصول إلى الحسابات المتخصصة: توفر واجهات برمجة التطبيقات مثل تلك الخاصة بـ Spotify رؤى فريدة، مثل تصنيفات الأنواع، والاستفادة من البنية التحتية الحسابية الخاصة بها.

كيف تعمل واجهات برمجة التطبيقات على تعزيز مشاريع بايثون

يتيح العمل مع واجهة برمجة التطبيقات (API) في بايثون فرصًا لإنشاء تطبيقات أكثر ذكاءً وديناميكية. على سبيل المثال:

  • دمج نماذج الذكاء الاصطناعي المعدة مسبقًا: استخدم واجهات برمجة التطبيقات لدمج معالجة اللغة الطبيعية المتقدمة (NLP) أو نماذج الرؤية الحاسوبية في مشاريعك دون الحاجة إلى تطويرها من الصفر.
  • تبسيط عملية الحصول على البيانات: استرداد البيانات من منصات مثل Reddit أو Facebook أو Kaggle لتغذية مشاريع التحليل أو التعلم الآلي.
  • الاستفادة من خدمات الذكاء الاصطناعي: توفر واجهات برمجة التطبيقات إمكانية الوصول إلى ميزات مثل تحليل المشاعر أو ترجمة اللغة أو التعرف على الصور، مما يتيح لك إنشاء حلول قوية بسرعة.

إعداد بيئة Python الخاصة بك لواجهات برمجة التطبيقات

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

إذا كنت تستخدم pip لإدارة حزم Python الخاصة بك، فيمكنك تثبيت مكتبة Requests باستخدام الأمر التالي:

pip install requests

بمجرد التثبيت، قم باستيراد المكتبة إلى البرنامج النصي الخاص بك لبدء إنشاء طلبات API:

import requests

إنشاء طلب API الأول الخاص بك في Python

بعد أن أعددنا مكتبة requests، لنُنشئ أول طلب API. سنبدأ بطلب GET بسيط، ونُلقي نظرة فاحصة على رموز الحالة المرفقة باستجابة الخادم.

تستخدم واجهات برمجة التطبيقات (APIs) أنواعًا مختلفة من الطلبات، لكن طلب GET هو الأكثر شيوعًا عند الحاجة إلى استرجاع البيانات فقط. ولأننا نركز على جمع المعلومات، سنلتزم بطلبات GET حاليًا.

يتضمن طلب واجهة برمجة التطبيقات النموذجي إرسال استعلام إلى الخادم وتلقي استجابة.

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

لنحاول إرسال طلب GET إلى نقطة نهاية API غير موجودة، فقط لنرى كيف يبدو رمز حالة الخطأ. إليك كيفية القيام بذلك باستخدام الدالة ()requests.get:

response = requests.get("http://api.open-notify.org/this-api-doesnt-exist")
print(response.status_code)
404

قد يبدو رمز الحالة 404 مألوفًا، فهو ما يُعيده الخادم عندما يتعذر عليه العثور على المورد الذي نطلبه. في هذا المثال، طلبنا عمدًا رسالة الخطأ this-api-doesnt-exist، والتي (كما هو متوقع) غير موجودة. يساعدنا هذا في فهم كيفية ظهور استجابة الخطأ عمليًا.

فهم رموز حالة واجهة برمجة التطبيقات الشائعة

يُرجع كل طلب واجهة برمجة تطبيقات (API) إلى خادم ويب رمز حالة يُشير إلى نتيجة الطلب. إليك بعض الرموز الشائعة المتعلقة بطلبات GET:

  • 200: كل شيء سار على ما يرام، وتم إرجاع النتيجة (إن وجدت).
  • 301: يقوم الخادم بإعادة توجيهك إلى نقطة نهاية مختلفة. قد يحدث هذا عند تغيير الشركة لأسماء النطاقات أو تغيير اسم نقطة النهاية.
  • 400: يعتقد الخادم أنك أرسلت طلبًا خاطئًا. يحدث هذا عند إرسال بيانات غير صحيحة أو ارتكاب أخطاء أخرى على جانب العميل.
  • 401: يعتقد الخادم أنك غير مُصادق عليه. تتطلب العديد من واجهات برمجة التطبيقات بيانات اعتماد تسجيل الدخول، لذا يحدث هذا عند عدم إرسال بيانات الاعتماد الصحيحة.
  • 403: المورد الذي تحاول الوصول إليه محظور. ليس لديك الصلاحيات اللازمة لرؤيته.
  • 404: لم يتم العثور على المورد الذي حاولت الوصول إليه على الخادم.
  • 503: الخادم غير جاهز للتعامل مع الطلب.

تشير رموز الحالة التي تبدأ بالرقم 4 إلى أخطاء من جانب العميل، بينما تشير الرموز التي تبدأ بالرقم 5 إلى مشاكل من جانب الخادم. يساعدك الرقم الأول من رمز الحالة على تحديد ما إذا كان الطلب ناجحًا (2xx) أو ما إذا كان هناك خطأ (4xx أو 5xx). اقرأ المزيد عن رموز الحالة هنا لتعميق فهمك.

الآن بعد أن فهمت أساسيات طلبات واجهة برمجة التطبيقات وأكواد الحالة، فأنت جاهز لبدء إنشاء طلباتك الخاصة ومعالجة الردود!

في القسم التالي، سنلقي نظرة على بعض الأمثلة العملية للعمل مع واجهات برمجة التطبيقات في العالم الحقيقي في Python.

كيفية قراءة وثائق واجهة برمجة التطبيقات (ولماذا هذا مهم)

استشارة الوثائق اللازمة لطلبات API الناجحة

عند العمل مع واجهات برمجة التطبيقات، وخاصةً في سياق الذكاء الاصطناعي وعلوم البيانات، تُعدّ مراجعة الوثائق أمرًا بالغ الأهمية لتقديم طلبات فعّالة. تُوضّح وثائق مُزوّدي الخدمات، مثل OpenAI وGoogle Cloud AI وIBM Watson، كيفية استخدام خدماتهم بكفاءة.

العناصر الرئيسية لتوثيق واجهة برمجة التطبيقات (API)

تتضمن معظم وثائق واجهة برمجة التطبيقات (API) تفاصيل حول نقاط النهاية المتاحة، والمعلمات المطلوبة، وطرق المصادقة، وتنسيقات الاستجابة المتوقعة. على سبيل المثال، توفر وثائق واجهة برمجة تطبيقات OpenAI إرشادات شاملة حول استخدام نماذج لغاتها، مثل GPT-4، لمهام مثل معالجة اللغة الطبيعية.

استكشاف واجهة برمجة تطبيقات Open Notify

سنعمل هنا مع واجهة برمجة التطبيقات Open Notify، التي توفر بيانات حول محطة الفضاء الدولية. تُعد هذه الواجهة مثالية للمبتدئين بفضل تصميمها البسيط وعدم الحاجة إلى متطلبات مصادقة.

فهم نقاط نهاية واجهة برمجة التطبيقات (API)

غالبًا ما توفر واجهات برمجة التطبيقات (APIs) نقاط نهاية متعددة لأنواع مختلفة من البيانات. سنبدأ بنقطة النهاية http://api.open-notify.org/astros.json، التي تعرض معلومات حول رواد الفضاء الموجودين حاليًا في الفضاء. ووفقًا للوثائق، لا تتطلب هذه الواجهة أي مُدخلات، مما يجعلها سهلة الاستخدام.

إرسال طلب GET إلى واجهة برمجة التطبيقات

دعنا نجري طلب GET إلى هذه النقطة النهائية باستخدام مكتبة requests:

response = requests.get("http://api.open-notify.org/astros") 
print(response.status_code)
200

يشير رمز الحالة 200 إلى نجاح طلبنا. استجابة واجهة برمجة التطبيقات (API) بصيغة JSON. لعرض البيانات، سنستخدم دالة ()response.json:

print(response.json())
{'people': [{'craft': 'ISS', 'name': 'Oleg Kononenko'}, 
{'craft': 'ISS', 'name': 'Nikolai Chub'}, 
{'craft': 'ISS', 'name': 'Tracy Caldwell Dyson'}, 
{'craft': 'ISS', 'name': 'Matthew Dominick'}, 
{'craft': 'ISS', 'name': 'Michael Barratt'}, 
{'craft': 'ISS', 'name': 'Jeanette Epps'}, 
{'craft': 'ISS', 'name': 'Alexander Grebenkin'}, 
{'craft': 'ISS', 'name': 'Butch Wilmore'}, 
{'craft': 'ISS', 'name': 'Sunita Williams'}, 
{'craft': 'Tiangong', 'name': 'Li Guangsu'}, 
{'craft': 'Tiangong', 'name': 'Li Cong'}, 
{'craft': 'Tiangong', 'name': 'Ye Guangfu'}], 
'number': 12, 'message': 'success'}

أهمية توثيق واجهة برمجة التطبيقات (API)

يُعدّ الفهم الشامل لتوثيق واجهات برمجة التطبيقات (API) أمرًا أساسيًا للاستفادة من إمكانياتها في مجال الذكاء الاصطناعي وعلوم البيانات. بمراجعة الإرشادات بعناية، يمكنك ضمان جاهزيتك التامة للاستفادة القصوى من هذه الأدوات.

كيفية التعامل مع JSON من API في Python

ما هو JSON؟

يُستخدم JSON (ترميز كائنات جافا سكريبت) على نطاق واسع في واجهات برمجة التطبيقات (APIs) لترميز هياكل البيانات لتسهيل قراءتها آليًا. تتبادل واجهات برمجة التطبيقات البيانات بشكل أساسي بتنسيق JSON، مما يجعلها ركيزة أساسية للتطبيقات الحديثة المعتمدة على البيانات.

JSON في الذكاء الاصطناعي وعلوم البيانات

في مجال الذكاء الاصطناعي وعلوم البيانات، يُمكّن JSON من تبادل البيانات بسلاسة بين الأنظمة. تستخدم العديد من واجهات برمجة التطبيقات (APIs)، مثل واجهات OpenAI وGoogle Cloud AI وIBM Watson، كتنسيق قياسي للطلبات والاستجابات. هذا يُسهّل دمج إمكانيات واجهة برمجة التطبيقات (APIs) في تطبيقات Python.

يُشبه مُخرَج JSON الذي تلقيناه سابقًا من واجهة برمجة التطبيقات قواميس بايثون، وقوائمها، وسلاسلها، وأعدادها الصحيحة. يُمثِّل JSON هذه الكائنات المألوفة بشكل أساسي كسلاسل نصية:

العمل مع JSON في بايثون

توفر حزمة json المُدمجة في بايثون دعمًا قويًا لـ JSON. تتيح لك هذه المكتبة التحويل بين سلاسل JSON وكائنات بايثون، مثل القوائم والقواميس، بسهولة. على سبيل المثال، البيانات المتعلقة برواد الفضاء التي استخرجناها سابقًا هي سلسلة JSON يُمكن تحويلها إلى قاموس بايثون.

توفر مكتبة json وظيفتين أساسيتين:

  • ()json.dumps: يحول كائن Python إلى سلسلة JSON.
  • ()json.loads: يحول سلسلة JSON إلى كائن Python.

باستخدام ()dumps، يمكننا تنسيق بيانات JSON لتحسين قابلية القراءة:

import json

# create a formatted string of the Python JSON object
def jprint(obj):  
    text = json.dumps(obj, sort_keys=True, indent=4) 
    print(text) 

jprint(response.json())

فحص استجابة API

{
    "message": "success",
    "number": 12,
    "people": [
        {
            "craft": "ISS",
            "name": "Oleg Kononenko"
        },
        {
            "craft": "ISS",
            "name": "Nikolai Chub"
        },
        {
            "craft": "ISS",
            "name": "Tracy Caldwell Dyson"
        },
        {
            "craft": "ISS",
            "name": "Matthew Dominick"
        },
        {
            "craft": "ISS",
            "name": "Michael Barratt"
        },
        {
            "craft": "ISS",
            "name": "Jeanette Epps"
        },
        {
            "craft": "ISS",
            "name": "Alexander Grebenkin"
        },
        {
            "craft": "ISS",
            "name": "Butch Wilmore"
        },
        {
            "craft": "ISS",
            "name": "Sunita Williams"
        },
        {
            "craft": "Tiangong",
            "name": "Li Guangsu"
        },
        {
            "craft": "Tiangong",
            "name": "Li Cong"
        },
        {
            "craft": "Tiangong",
            "name": "Ye Guangfu"
        }
    ]
}

يُظهر الناتج المُنسّق وجود ١٢ شخصًا في الفضاء حاليًا، وقد سُجِّلت أسماؤهم في قواميس داخل قائمة. هذا يُسهِّل التعامل مع البيانات باستخدام بايثون.

تؤكد مقارنة هذا الناتج مع الوثائق الخاصة بنقطة النهاية أنه يتطابق مع الهيكل المتوقع.

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

استخدام واجهة برمجة التطبيقات (API) مع معلمات الاستعلام

نقطة النهاية http://api.open-notify.org/astros.json التي استخدمناها سابقًا لا تتطلب أي معلمات. ما علينا سوى إرسال طلب GET، وستعرض واجهة برمجة التطبيقات بيانات حول عدد الأشخاص المتواجدين حاليًا في المساحة.

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

كيفية عمل معلمات الاستعلام

معلمات الاستعلام هي طريقة لتصفية البيانات المُعادة من خلال واجهة برمجة التطبيقات (API) وتخصيصها. على سبيل المثال، يمكنك استخدام معلمة filter_by لاسترجاع بيانات لمنطقة أو موضوع محدد. يضمن هذا النهج استلام المعلومات التي تحتاجها فقط، مما يُجنّبك نقل البيانات غير الضروري.

قبّلها وعضّها على طول جسدها، وتأكد من تذكر المناطق التي تثيرها أكثر من غيرها. هذا سيكون مفيدًا دائمًا في المرة القادمة التي ترغب فيها في إثارتها بشكل أسرع.

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

اختتام: استخدام واجهة برمجة التطبيقات في بايثون

تُوفر واجهات برمجة التطبيقات (APIs) طريقة فعّالة للوصول إلى البيانات الآنية ودمجها في مشاريع بايثون، بدءًا من تتبع موقع محطة الفضاء الدولية ووصولًا إلى بناء نماذج التعلم الآلي. من خلال إرسال طلبات واجهة برمجة التطبيقات (APIs) والعمل مع بيانات JSON، يُمكنك إضافة إمكانيات ديناميكية إلى تطبيقات علوم البيانات والذكاء الاصطناعي.

على سبيل المثال، يمكن استخدام بيانات وقت مرور محطة الفضاء الدولية (ISS) اللحظية لتدريب نموذج تعلّم آلي يتنبأ بأوقات المرور المستقبلية لأي موقع. قد يتضمن بناء مثل هذا المشروع إنشاء خط أنابيب بيانات لجلب بيانات واجهة برمجة التطبيقات (API) بانتظام، ومعالجتها مسبقًا، وإضافتها إلى النموذج.

إن معرفة كيفية التفاعل مع واجهات برمجة التطبيقات (APIs) في بايثون والقدرة على تحليل استجاباتها مهارات أساسية للعمل في علم البيانات والذكاء الاصطناعي. فهي تُمكّن من التكامل السلس لمصادر بيانات متعددة، مما يُوسّع بشكل كبير نطاق ما يمكنك تحقيقه باستخدام بايثون.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading