التعامل مع AI APIs· الدرس 6 من 7
- 1أول Call — تنادي الموديل من كودّك7 دقيقة
- 2الـ Streaming — الرد بيوصل كلمة كلمة7 دقيقة
- 3الـ Structured Outputs — تطلّع JSON تقدر تعتمد عليه8 دقيقة
- 4الأخطاء والـ Retries — لمّا الـ call يقع9 دقيقة
- 5الـ Rate Limits — سقف الطلبات في الدقيقة6 دقيقة
- 6المفاتيح والـ Secrets — تأمين مفتاح الـ API6 دقيقة
- 7الـ Timeouts والـ Idempotency — طلبات ما تتكرّرش بالغلط8 دقيقة
المفاتيح والـ Secrets — تأمين مفتاح الـ API
في سطر واحد · مفتاح الـ API هو كلمة السرّ اللي بتثبت إنك إنت، وأي حد يحطّ إيده عليه يقدر يصرف من رصيدك — فبيتخزّن في متغيّرات البيئة، مش في الكود.
تسريب مفتاح واحد على GitHub ممكن يكلّفك فلوس كتير في ساعات. حماية الـ secrets مش رفاهية، دي أول درس في أمان أي تطبيق حقيقي.
زي مفتاح البيت: متعلّقهوش على الباب من برّه. بتحطّه في مكان آمن (env var / secrets manager) والكود بينده عليه وقت التشغيل بس، وميظهرش أبدًا في الـ repo.
المفتاح زي كارت الأوتيل: بيفتحلك الأوضة، وأي حد يلاقيه يدخل مكانك ويتحاسب على حسابك. عشان كده الريسبشن يقدر يلغيه في ثانية ويطبعلك كارت جديد — نفس فكرة إنك تلغي المفتاح وتطلّع بديل لو ضاع.
بدل ما تكتب المفتاح جوّه الكود، بتحطّه في .env (وتضيفه لـ .gitignore) وتقراه من process.env، وفي البرودكشن من secrets manager؛ ولو اتسرّب بالغلط، بتلغيه (revoke) وتطلّع واحد جديد على طول.
المزوّد بيطلّعلك مفتاح لكل حساب أو مشروع، وبتبعته في header الـ Authorization مع كل call. محليًا بيعيش في ملف .env متضاف للـ .gitignore، وفي البرودكشن في secrets manager أو env vars بتاعة المنصة — الكود بيقراه وقت التشغيل بس. ولو اتسرّب، بتعمل revoke فورًا وتطلّع بديل. والممارسة الصح إن كل بيئة وكل تطبيق ياخد مفتاح لوحده بأقل صلاحيات ممكنة (least privilege) — عشان لو مفتاح اتسرّب، الضرر يبقى محدود ومعروف مصدره.
🧪 جرّب بنفسك: هات سكريبت فيه مفتاح مكتوب جوّه الكود، وانقله لملف .env متضاف للـ .gitignore واقراه من process.env. وخلّي التطبيق يقع برسالة واضحة لو المفتاح مش موجود — بدل ما يبعت request بمفتاح undefined ويرجعلك 401 غامض.
(١) ترفع ملف .env أو تكتب المفتاح جوّه الكود — الـ bots بتمسح GitHub وبتلاقي المفاتيح في دقايق. (٢) تحطّ المفتاح في كود الـ frontend — أي حد يفتح DevTools ينسخه ويصرف من حسابك. (٣) مفتاح واحد مشترك لكل البيئات ومن غير rotation — لو اتسرّب مش هتعرف منين، وإلغاؤه هيوقّع كل حاجة مرة واحدة.
من أول سطر كود: env var محليًا وsecrets manager في البرودكشن، ومفتاح منفصل لكل بيئة (dev/staging/prod) من البداية — التعوّد أسهل من التصليح.
المفتاح عمره ما يظهر في: الـ repo، كود الـ frontend، الـ logs، رسايل الشات، أو أي خدمة طرف تالت مش محتاجاه. ولو مش متأكد اتسرّب ولا لأ — اعتبره اتسرّب واعمل revoke.