تمكين قدرات الذكاء الاصطناعي باستخدام Apache APISIX وOpenAI API
February 7, 2023
الذكاء الاصطناعي (AI) أحدث ثورة في طريقة تفاعلنا مع التكنولوجيا وأصبح جزءًا لا يتجزأ من التطبيقات الحديثة. توفر OpenAI API للمطورين إمكانات قوية للذكاء الاصطناعي، مما يسمح لهم ببناء تطبيقات ذكاء اصطناعي متقدمة بسهولة.
ومع ذلك، مع نمو استخدام الذكاء الاصطناعي، تزداد الحاجة إلى تكاملات API قابلة للتوسع، عالية الأداء، وآمنة. هنا يأتي دور Apache APISIX. Apache APISIX هو بوابة API مفتوحة المصدر عالية الأداء توفر ميزات متقدمة لإدارة وتوسيع تكاملات API.
في هذه المقالة، سنستكشف فوائد تكامل Apache APISIX مع OpenAI API وكيف يمكنك استخدام Apache APISIX لإنشاء تكامل ذكاء اصطناعي أكثر قابلية للتوسع، أداءً، وأمانًا. من التخزين المؤقت للوكيل إلى ميزات الأمان، سنغطي كل ما تحتاج لمعرفته للبدء في تكامل Apache APISIX وOpenAI API. سواء كنت مطور ذكاء اصطناعي أو محترف DevOps، هذه المقالة هي دليلك الشامل لإنشاء تكامل ذكاء اصطناعي قوي وفعال من حيث التكلفة.
أهداف التعلم
ستتعلم خلال المقالة ما يلي:
- ما هي OpenAI API وApache APISIX؟
- الفوائد من استخدام Apache APISIX مع OpenAI API.
- حالات استخدام عدة إضافات Apache APISIX لتعزيز OpenAI API.
- كيفية إنشاء Route جديد في APISIX لـ OpenAI API.
- كيفية إضافة نقطة نهاية OpenAI API كـ Upstream للـ Route.
- كيفية تكوين المصادقة، تحديد معدل الطلبات، والتخزين المؤقت للـ Route حسب الحاجة.
- كيفية اختبار الـ Route للتأكد من أن الطلبات يتم توجيهها بشكل صحيح إلى OpenAI API.
ما هي OpenAI API؟
OpenAI هي منصة متطورة لإنشاء ونشر نماذج الذكاء الاصطناعي المتقدمة. يمكن استخدام هذه النماذج لمجموعة متنوعة من المهام، مثل معالجة اللغة الطبيعية، التعرف على الصور، وتحليل المشاعر. أحد الفوائد الرئيسية لـ OpenAI هو أنها توفر API يمكن للمطورين استخدامها للوصول إلى هذه النماذج ودمجها في تطبيقاتهم.
OpenAI API هي منصة قائمة على السحابة توفر الوصول إلى نماذج الذكاء الاصطناعي الخاصة بـ OpenAI، بما في ذلك ChatGPT. تسمح API للمطورين بدمج إمكانات الذكاء الاصطناعي في تطبيقاتهم.
ChatGPT هو أحد نماذج الذكاء الاصطناعي المتاحة عبر OpenAI API، وهو مناسب بشكل خاص لحالات الاستخدام التي تتطلب معالجة اللغة الطبيعية وقدرات توليد النصوص. على سبيل المثال، يمكن استخدام ChatGPT لتوليد ردود نصية في روبوت الدردشة، أو تقديم اقتراحات إكمال النص، إكمال الكود، أو الإجابة على الأسئلة في واجهة محادثة.
ما هي Apache APISIX؟
Apache APISIX هو حل مفتوح المصدر لإدارة حركة مرور API السحابية الأصلية الذي يوفر ميزات بوابة API لإنشاء واجهات برمجة تطبيقات RESTful قابلة للتوسع، آمنة، وعالية التوفر.
باستخدام بوابة API مع OpenAI API، يمكنك بسهولة إنشاء ونشر واجهات برمجة تطبيقات قابلة للتوسع، آمنة، وعالية الأداء تصل إلى نماذج OpenAI. سيسمح لك ذلك بدمج قوة OpenAI في تطبيقاتك وتقديم تجربة رائعة للمستخدمين.
فوائد استخدام Apache APISIX مع OpenAI API
هناك عدة فوائد لاستخدام Apache APISIX مع OpenAI API:
-
القدرة على التوسع: يوفر Apache APISIX طريقة سهلة لإدارة وتوسيع OpenAI API، مما يسمح لك بالتعامل مع زيادة حركة المرور ومتطلبات الاستخدام.
-
الأداء: يمكن أن يساعد Apache APISIX في تحسين أداء طلبات OpenAI API عن طريق تخزين الردود المؤقتة وتقليل زمن الوصول. الأمان: يوفر Apache APISIX ميزات أمان مثل التشفير والمصادقة، مما يجعل من السهل تأمين الوصول إلى OpenAI API.
-
المرونة: يوفر Apache APISIX طريقة مرنة لإدارة والتحكم في الوصول إلى OpenAI API، مما يسمح لك بتخصيص وتكوين التكامل حسب الحاجة.
-
المراقبة والتحليلات: يوفر Apache APISIX مراقبة وتحليلات مفصلة، مما يسمح لك بتتبع وتحسين أداء تكامل OpenAI API.
إضافات Apache APISIX لتعزيز OpenAI API
هناك عدة إضافات Apache APISIX يمكن استخدامها لتعزيز التكامل مع OpenAI API. بعض الإضافات التي يمكنك استخدامها مع OpenAI API تشمل:
- تحديد معدل الطلبات: لتحديد عدد طلبات API ومنع الإفراط في استخدام OpenAI API.
- المصادقة: لتأمين الوصول إلى OpenAI API عن طريق تنفيذ آليات المصادقة والتفويض.
- التحكم في حركة المرور: للتحكم في تدفق حركة مرور API وضمان أداء واستقرار ثابت لـ OpenAI API.
- المراقبة: لمراقبة وتسجيل طلبات وردود API، مما يوفر رؤية حول استخدام وأداء OpenAI API.
- التخزين المؤقت: لتخزين ردود API مؤقتًا وتقليل عدد طلبات API، مما يحسن الأداء ويقلل من تكلفة استخدام OpenAI API.
- التحويل: لتعديل طلبات وردود API، وتحويل البيانات من تنسيق إلى آخر، مثل JSON إلى XML.
إدارة واجهات برمجة تطبيقات OpenAI باستخدام Apache APISIX Demo
مع وجود معرفة نظرية كافية، يمكننا الآن الانتقال إلى جلسة عملية. في هذا المثال، يتم استخدام Apache APISIX لإنشاء بوابة API بسيطة تصل إلى OpenAI API وتدير حركة المرور عن طريق إنشاء Route وUpstream وتمكين بعض الإضافات. سنتفاعل مع نقطة نهاية Completion endpoint لـ OpenAI API لإنشاء مولد وصف المنتج لتوليد وصف المنتج بكفاءة ودقة.
على سبيل المثال، سيبدو طلب نموذجي إلى بوابة API كما يلي:
curl http://127.0.0.1:9080/openai/product/desc -X POST -d
'{
"model":"text-davinci-003",
"prompt":"Write a brief product description for Apple 13 pro",
"temperature":0,
"max_tokens":256
}'
وسنحصل على الناتج التالي:
{
"object":"text_completion",
"model":"text-davinci-003",
"choices":[
{
"text":"\n\nThe Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.
It features a 13-inch Retina display with True Tone technology, a powerful 8th-generation Intel Core i5 processor, 8GB of RAM, and a 256GB SSD for storage.
It also has a Touch Bar and Touch ID for added security and convenience. With up to 10 hours of battery life, you can stay productive all day long.
The Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.",
"index":0,
"finish_reason":"stop"
}
],
"usage":{
"prompt_tokens":9,
"completion_tokens":109,
"total_tokens":118
}
}
المتطلبات الأساسية
- يجب أن تكون على دراية بالمفاهيم الأساسية لنموذج completion لـ OpenAI API.
- إنشاء OpenAI API Key: للوصول إلى OpenAI API، ستحتاج إلى إنشاء مفتاح API. يمكنك القيام بذلك عن طريق تسجيل الدخول إلى موقع OpenAI والانتقال إلى صفحة إدارة مفاتيح API.
- تثبيت Docker على جهازك لتشغيل APISIX.
- معرفة أساسية ببعض المفاهيم الأساسية لـ APISIX مثل Route، Upstream و Plugin.
إعداد المشروع
أول شيء تقوم به هو استنساخ مشروع apisix-docker من GitHub:
git clone https://github.com/apache/apisix-docker.git
افتح مجلد المشروع في محرر الأكواد المفضل لديك. يستخدم هذا البرنامج التعليمي VS Code.
تثبيت وتشغيل Apache APISIX
لتشغيل Apache APISIX، يمكنك اتباع هذه الخطوات:
افتح نافذة طرفية جديدة وقم بتشغيل الأمر docker compose up
من المجلد الجذر للمشروع:
docker compose up -d
سيقوم الأمر أعلاه بتشغيل Apache APISIX وetcd معًا باستخدام Docker.
قمنا بتثبيت APISIX باستخدام Docker في هذا العرض التوضيحي. ومع ذلك، هناك خيارات أخرى لتثبيته في دليل التثبيت.
إنشاء Upstream لـ OpenAI API
بمجرد اكتمال الإعداد، سنقوم بإنشاء كائن Upstream في APISIX باستخدام Admin API. يشير "Upstream" في APISIX إلى الخوادم الخلفية المسؤولة عن تقديم بيانات الطلب الفعلية.
في حالتنا، نحدد خادم Upstream API في api.openai.com
مع عقدة واحدة ومخطط https
يستخدم عند التواصل بشكل آمن مع Upstream:
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"name": "OpenAI API upstream",
"desc": "Add the OpenAI API domain as the upstream",
"type": "roundrobin",
"scheme": "https",
"nodes": {
"api.openai.com:443": 1
}
}'
إنشاء تكوين إضافة جديد
الآن نقوم بإنشاء تكوين إضافة جديد مع تمكين إضافة proxy-rewrite.
تُستخدم إضافة الوكيل لإعادة تعريف الطلبات إلى نقطة نهاية إكمال OpenAI API. يتضمن تكوين الإضافة خيارات لتعيين عنوان URL لنقطة نهاية API، وتمرير مفتاح OpenAI API كرأس، ومع رأس Content-Type
مضبوط على application/json
.
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"proxy-rewrite":{
"uri":"/v1/completions",
"host":"api.openai.com",
"headers":{
"Authorization":"OpenAI API Key",
"Content-Type":"application/json"
}
}
}
}'
إعداد Route لنقطة نهاية إكمال OpenAI
في الخطوة التالية، نقوم بإعداد Route جديد في APISIX للتعامل مع طلبات POST
مع مسار URI مخصص جديد لبوابة API /openai/product/desc
ونعطي مراجعًا لـ Upstream وتكوين الإضافة الذي تم إنشاؤه في الخطوات السابقة بواسطة معرفاتهم الفريدة.
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"name":"OpenAI API completion route",
"desc":"Create a new route in APISIX for the OpenAI API completion endpoint",
"methods":[
"POST"
],
"uri":"/openai/product/desc",
"upstream_id":"1",
"plugin_config_id":1
}'
بالإضافة إلى ذلك، يتم إعداد Route مع إعادة المحاولات، مهلة زمنية، ومهلة إبقاء الاتصال لضمان اتصال قوي ومرن مع OpenAI API.
الاختبار باستخدام طلب Curl
لاختبار API، يمكنك إجراء طلب POST إلى نقطة النهاية /openai/product/desc
باستخدام أداة مثل cURL أو Postman. ستقوم بوابة API بتوجيه الطلب إلى نقطة نهاية إكمال OpenAI API وإرجاع النتائج بنجاح.
curl http://127.0.0.1:9080/openai/product/desc -X POST -d
'{
"model":"text-davinci-003",
"prompt":"Write a brief product description for Apple 13 pro",
"temperature":0,
"max_tokens":256
}'
رائع! لقد حصلنا على استجابة من نقطة نهاية الإكمال الفعلية:
HTTP/1.1 200 OK
Content-Type: application/json
...
{
"object":"text_completion",
...
"choices":[
{
"text":"\n\nThe Apple 13 Pro is the perfect laptop...",
"index":0,
"logprobs":null,
"finish_reason":"stop"
}
],
...
}
إنشاء مستهلك جديد وإضافة المصادقة
حتى الآن، نقطة نهاية وصف المنتج في بوابة API /openai/product/desc
عامة ويمكن الوصول إليها من قبل المستخدمين غير المصرح لهم (على الرغم من أن الاتصال بين APISIX وOpenAI API مؤمن بمفتاح API في الرأس). في هذا القسم، سنقوم بتمكين ميزة المصادقة لمنع الطلبات غير المصرح بها إلى API الخاصة بنا.
للقيام بذلك، نحتاج إلى إنشاء مستهلك جديد لنقطة النهاية الخاصة بنا وإضافة إضافة basic-auth لتكوين الإضافة الحالي بحيث يمكن فقط للمستخدم المسموح له الوصول إليها.
سيقوم الأمر التالي بإنشاء مستهلكنا الجديد consumer1
مع بيانات الاعتماد الخاصة به مثل username1
و password1
:
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "consumer1",
"plugins": {
"basic-auth": {
"username": "username1",
"password": "password1"
}
}
}'
الآن نقوم بتحديث تكوين الإضافة الحالي وإضافة إضافة basic-auth
للسماح لـ Route في APISIX بفحص رأس الطلب مع بيانات اعتماد مستهلك API في كل مرة يتم فيها استدعاء APIs:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"proxy-rewrite":{
"uri":"/v1/completions",
"host":"api.openai.com",
"headers":{
"Authorization":"OpenAI API Key",
"Content-Type":"application/json"
}
},
"basic-auth":{}
}
}'
الآن فقط إذا قدمنا بيانات الاعتماد الصحيحة للمستخدم في الطلب ووصلنا إلى نفس نقطة النهاية، يمكننا الحصول على الاستجابة المتوقعة من OpenAI API:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \
'{
"model":"text-davinci-003",
"prompt":"Write a brief product description for Apple 13 pro",
"temperature":0,
"max_tokens":256
}'
تطبيق سياسات تحديد معدل الطلبات لـ APIs بدون خادم
في هذا القسم، سنحمي نقطة نهاية وصف المنتج من الإساءة عن طريق تطبيق سياسة تحديد معدل الطلبات. في بوابة Apache APISIX، يمكننا تطبيق تحديد معدل الطلبات لتقييد عدد الطلبات الواردة.
تطبيق واختبار سياسة تحديد معدل الطلبات
مع تكوين Route الحالي، يمكننا تطبيق سياسة تحديد معدل الطلبات باستخدام إضافة limit-count لحماية API من الاستخدام غير الطبيعي. سنقوم بتحديد عدد طلبات API إلى 2 لكل 60 ثانية لكل مستهلك API.
لتمكين إضافة limit-count
لـ Route الحالي، نحتاج إلى إضافة الإضافة إلى قائمة الإضافات في تكوين Json الخاص بنا:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"proxy-rewrite":{
"uri":"/v1/completions",
"host":"api.openai.com",
"headers":{
"Authorization":"OpenAI API Key",
"Content-Type":"application/json"
}
},
"basic-auth":{},
"limit-count":{
"count":2,
"time_window":60,
"rejected_code":403,
"rejected_msg":"Requests are too frequent, please try again later.",
"key_type":"var",
"key":"remote_addr"
}
}
}'
سيقوم Apache APISIX بالتعامل مع أول طلبين كالمعتاد. ومع ذلك، سيؤدي الطلب الثالث في نفس الفترة إلى إرجاع رمز 403 HTTP Forbidden
مع رسالة الخطأ المخصصة لدينا:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \
'{
"model":"text-davinci-003",
"prompt":"Write a brief product description for Apple 13 pro",
"temperature":0,
"max_tokens":256
}'
# بعد الطلب الأول
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 752
Connection: keep-alive
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
# بعد الطلب الثاني
HTTP/1.1 403 Forbidden
{"error_msg":"Requests are too frequent, please try again later."}
تكوين التخزين المؤقت لاستجابة OpenAI API
التخزين المؤقت للوكيل في Apache APISIX proxy caching هي ميزة في Apache APISIX تسمح لك بتخزين استجابات API مؤقتًا وتقديم الاستجابات المخزنة مؤقتًا للطلبات اللاحقة. يمكن أن يساعد ذلك في تقليل عدد طلبات API مما يعني تقليل تكلفة استخدام OpenAI API، وتحسين أداء تكامل API، وتقليل الحمل على خادم API.
يوفر Apache APISIX تحكمًا دقيقًا في سلوك التخزين المؤقت، مما يسمح لك بتحديد وقت انتهاء صلاحية التخزين المؤقت، وشروط إبطال التخزين المؤقت، وسياسات التخزين المؤقت الأخرى.
في التكوين أدناه، سنقوم بتعريف إضافة proxy-cache
مع الإضافات الأخرى التي نريد تخزين استجابات وصف المنتج الناجحة فقط من طريقة POST
لنقطة نهاية إكمال OpenAI API.
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"proxy-rewrite":{
"uri":"/v1/completions",
"host":"api.openai.com",
"headers":{
"Authorization":"OpenAI API Key",
"Content-Type":"application/json"
}
},
"basic-auth":{},
"proxy-cache":{
"cache_key":[
"$uri",
"-cache-id"
],
"cache_method":[
"POST"
],
"cache_http_status":[
200
],
"hide_cache_headers":true
}
}
}'
سنقوم بإرسال عدة طلبات إلى المسار /openai/product/desc
ويجب أن نحصل على استجابة HTTP 200 OK
في كل مرة. ومع ذلك، يظهر Apisix-Cache-Status
في الاستجابة MISS
مما يعني أن الاستجابة لم يتم تخزينها مؤقتًا بعد عندما يصل الطلب إلى Route لأول مرة. الآن، إذا قمت بإجراء طلب آخر، ستلاحظ أنك تحصل على استجابة مخزنة مؤقتًا مع مؤشر التخزين المؤقت كـ HIT
.
تبدو الاستجابة كما يلي:
HTTP/1.1 200 OK
…
Apisix-Cache-Status: MISS
عندما تقوم بالاتصال التالي بالخدمة، يستجيب Route للطلب باستجابة مخزنة مؤقتًا حيث تم تخزينها مؤقتًا في الطلب السابق:
HTTP/1.1 200 OK
…
Apisix-Cache-Status: HIT
ملخص
تكامل Apache APISIX وOpenAI API يتضمن الجمع بين ميزات Apache APISIX، وهي بوابة API مفتوحة المصدر عالية الأداء للخدمات الصغيرة، مع إمكانات الذكاء الاصطناعي المتقدمة لـ OpenAI API لتعزيز وظائف وأداء التطبيقات. مع هذا التكامل، يمكن للمطورين الاستفادة من قابلية التوسع والأداء لـ Apache APISIX لإدارة الخدمات الصغيرة مع الاستفادة من إمكانات الذكاء الاصطناعي المتطورة لـ OpenAI لتقديم ميزات متقدمة ومتطورة للمستخدمين.
في مراحل لاحقة، يمكنك نشر كل من APISIX وOpenAI إلى خادم تطبيقات أو أي سحابة عامة لجعلها متاحة في الإنتاج.
طوال المقالة، قمنا بتوضيح فقط بعض الأمثلة على إضافات Apache APISIX التي يمكن استخدامها مع OpenAI API. يمكنك اختيار الإضافات التي تلبي احتياجاتك بشكل أفضل وتخصيص تكامل Apache APISIX وOpenAI API لتلبية المتطلبات المحددة لتطبيقاتك.
الموارد ذات الصلة
المحتوى الموصى به
المجتمع
🙋 انضم إلى مجتمع Apache APISIX 🐦 تابعنا على Twitter 📝 ابحث عننا على Slack