ابحث عن مصدر أفضل ممارسات أمان GPT عن التحديثات قبل استخدام هذه النصائح إذا كانت متشعبة!
باعتباري أحد المتحمسين لنماذج لغة الذكاء الاصطناعي، كثيرًا ما أجد نفسي منزعجًا من الطريقة التي يتم بها التعامل مع البيانات الحساسة بلا مبالاة في التطبيقات المختلفة. على الرغم من أن الإثارة حول GPT أمر مفهوم، إلا أن التعامل غير السليم مع المعلومات الحساسة يشكل تحديات كبيرة للمسؤولين ومحترفي الأمان الذين يديرون الخوادم التي يستأجرها العملاء. تهدف هذه الوثيقة إلى توفير أفضل الممارسات لتنفيذ GPT بشكل آمن في تطبيقات الويب لمنع الثغرات الأمنية وحماية البيانات الحساسة.
الغرض من هذه الوثيقة هو تحديد المخاطر الأمنية ونقاط الضعف التي قد تنشأ عند تطبيق GPT في تطبيقات الويب وتوفير أفضل الممارسات للتخفيف من هذه المخاطر.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
الواجهة الأمامية (جافا سكريبت مع jQuery)
function sendRequest ( inputText ) {
$ . ajax ( {
url : 'backend.php' ,
type : 'POST' ,
data : { input : inputText } ,
success : function ( response ) {
// Process and display the response from GPT
} ,
error : function ( ) {
// Handle error cases
}
} ) ;
}
الواجهة الخلفية (PHP)
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
$ inputText = $ _POST [ ' input ' ];
// Process the input and send a request to GPT
// Return the response to the front-end
يمكنك تخزين مفتاح API الخاص بك كمتغير بيئة عن طريق إضافته إلى تكوين بيئة الخادم الخاص بك أو باستخدام ملف .env (بمساعدة مكتبة مثل PHP dotenv).
قم بإنشاء ملف .env في الدليل الجذر لمشروعك:
GPT_API_KEY=your_api_key_here
قم بتثبيت حزمة vlucas/phpdotenv باستخدام Composer:
composer require vlucas/phpdotenv
قم بتحميل متغيرات البيئة من ملف .env في برنامج PHP النصي الخاص بك:
<?php
require_once ' vendor/autoload.php ' ;
use Dotenv Dotenv ;
$ dotenv = Dotenv:: createImmutable ( __DIR__ );
$ dotenv -> load ();
الوصول إلى مفتاح API من متغيرات البيئة:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
باستخدام متغيرات البيئة، سيتم الحفاظ على مفتاح API الخاص بك آمنًا ومنفصلاً عن كود المصدر الخاص بك. تذكر إضافة ملف .env إلى ملف .gitignore الخاص بك لمنعه من الالتزام عن طريق الخطأ بمستودعك العام.
الواجهة الخلفية (PHP)
<?php
// Sanitize user input before processing
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
استخدم HTTPS للاتصال الآمن عند نشر تطبيق الويب الخاص بك، تأكد من استخدام HTTPS لتشفير الاتصال بين العميل والخادم، مما يمنع هجمات الوسيط.
الحد من معدل طلب واجهة برمجة التطبيقات (API) لمنع إساءة استخدام مفتاح GPT API والتحكم في التكاليف، قم بتنفيذ تحديد المعدل على التعليمات البرمجية من جانب الخادم. سيؤدي هذا إلى الحد من عدد الطلبات المقدمة إلى GPT API خلال إطار زمني محدد.
الواجهة الخلفية (PHP)
<?php
// Implement rate-limiting logic here
// ...
// Only proceed with the request if the rate limit is not exceeded
if ( $ is_rate_limit_ok ) {
// Send a request to GPT API
}
استخدم سياسة أمان المحتوى (CSP) قم بتنفيذ رؤوس CSP لمنع هجمات XSS ونقاط الضعف الأخرى من خلال التحكم في الموارد التي يُسمح لوكيل المستخدم بتحميلها لصفحة معينة.
استخدام رؤوس الأمان قم بتنفيذ رؤوس الأمان مثل X-Frame-Options وX-Content-Type-Options وغيرها لحماية تطبيقك من الثغرات الأمنية الشائعة.
عند تنفيذ GPT، من الضروري تحديد نقطة نهاية واجهة برمجة التطبيقات (API) المناسبة بناءً على حالة الاستخدام المحددة لديك. يوفر OpenAI نقاط نهاية مختلفة لأغراض مختلفة. فيما يلي نقاط نهاية OpenAI الحالية:
نقطة النهاية | اسم النموذج |
---|---|
/v1/chat/completions | gpt-4، gpt-4-0314، gpt-4-0613، gpt-4-32k، gpt-4-32k-0314، gpt-3.5-turbo، gpt-3.5-turbo-0301، gpt-3.5-turbo- 0613، جي بي تي-3.5-تيربو-16ك، gpt-3.5-turbo-16k-0613. |
/v1/الإكمال | ada، ada-رمز البحث عن النص، ada-code-search-text، ada-search-document، ada-search-query، ada-similarity، babbage، babbage-code-search-code، babbage-code-search- نص، مستند بحث باباج، استعلام بحث باباج، تشابه باباج، كود دافينشي، تحرير 001، Code-search-ada-code-001، code-search-ada-text-001، code-search-babbage-code-001، code-search-babbage-text-001، curie، curie-instruct-beta، curie- مستند بحث، استعلام بحث كوري، تشابه كوري، دافينشي، تعليمات دافينشي بيتا، مستند بحث دافينشي، استعلام بحث دافينشي، تشابه دافينشي، نص-ada-001، نص-babbage-001، نص-كوري-001، نص-davinci-001، نص-davinci-002، نص-davinci-003، نص-davinci- تحرير-001، تضمين النص-ada-002، البحث عن النص-ada-doc-001، text-search-ada-query-001، text-search-babbage-doc-001، text-search-babbage-query-001، text-search-curie-doc-001، text-search-curie-query-001، البحث عن النص-davinci-doc-001، البحث عن النص-davinci-الاستعلام-001، تشابه النص-ada-001، تشابه النص باباج-001، تشابه النص-كوري-001، تشابه النص-دافينشي-001 |
/v1/edits | نص-دافينشي-تحرير-001، كود-دافينشي-تحرير-001 |
/v1/audio/transcriptions | الهمس-1 |
/v1/audio/translations | الهمس-1 |
/v1/الإيقاعات الدقيقة | دافينشي، كوري، باباج، آدا |
/v1/embeddings | تضمين النص-ada-002، البحث عن النص-ada-doc-001، البحث عن النص-ada-query-001، البحث عن النص-babbage-doc-001، البحث عن النص-babbage-query-001، النص- البحث-كوري-doc-001، البحث عن النص-كوري-الاستعلام-001، البحث عن النص-دافينشي-doc-001، البحث عن النص-davinci-الاستعلام-001 |
/v1/اعتدال | تعديل النص-أحدث، تعديل النص-مستقر |
نقاط النهاية المختلفة لها تكاليف مختلفة لكل رمز مميز أو لكل طلب. اختر نقطة النهاية التي تناسب ميزانيتك.
توفر بعض نقاط النهاية أوقات استجابة أسرع، بينما تكون نقاط النهاية الأخرى أكثر ملاءمة للمهام الثقيلة. ضع في اعتبارك احتياجات أداء تطبيقك عند تحديد نقطة النهاية.
كل نقطة نهاية لها نقاط القوة والضعف الخاصة بها. قم بتقييم المتطلبات الفريدة لتطبيقك واختر نقطة النهاية التي تلبي تلك الاحتياجات على أفضل وجه.
مثال لكيفية استخدام نقطة النهاية /v1/chat/completions مع نموذج gpt-3.5-turbo في تطبيق ويب.
قم بتحديث $request_url في البرنامج النصي PHP الخلفي الخاص بك:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/chat/completions " ;
قم بإنشاء وظيفة لإرسال طلب إلى GPT API:
<?php
function send_chat_completion_request ( $ api_key , $ request_url , $ messages ) {
$ ch = curl_init ();
$ data = array (
' model ' => ' gpt-3.5-turbo ' ,
' messages ' => $ messages
);
curl_setopt ( $ ch , CURLOPT_URL , $ request_url );
curl_setopt ( $ ch , CURLOPT_POST , 1 );
curl_setopt ( $ ch , CURLOPT_POSTFIELDS , json_encode ( $ data ));
curl_setopt ( $ ch , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $ ch , CURLOPT_HTTPHEADER , array (
" Content-Type: application/json " ,
" Authorization: Bearer $ api_key "
));
$ response = curl_exec ( $ ch );
$ httpcode = curl_getinfo ( $ ch , CURLINFO_HTTP_CODE );
curl_close ( $ ch );
return array ( ' response ' => $ response , ' httpcode ' => $ httpcode );
}
اتصل بالوظيفة send_chat_completion_request() وقم بمعالجة استجابة GPT API:
<?php
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
$ messages = array (
array ( ' role ' => ' system ' , ' content ' => ' You are talking to a helpful assistant. ' ),
array ( ' role ' => ' user ' , ' content ' => $ inputText )
);
$ result = send_chat_completion_request ( $ api_key , $ request_url , $ messages );
if ( $ result [ ' httpcode ' ] == 200 ) {
$ json_response = json_decode ( $ result [ ' response ' ], true );
$ assistant_reply = $ json_response [ ' choices ' ][ 0 ][ ' message ' ][ ' content ' ];
// Return the response to the front-end
echo $ assistant_reply ;
} else {
// Handle error cases
echo " Error: " . $ result [ ' response ' ];
}
يوضح هذا المثال كيفية استخدام نقطة النهاية /v1/chat/completions مع نموذج gpt-3.5-turbo. ترسل وظيفة send_chat_completion_request() طلبًا إلى واجهة برمجة التطبيقات (API) مع نص الإدخال وتستقبل الاستجابة التي تم إنشاؤها. يتم بعد ذلك إرجاع رد المساعد إلى الواجهة الأمامية.
موارد وملاحظات إضافية قد تكون مفيدة لفهم وتنفيذ أفضل الممارسات المذكورة في هذه الوثيقة.
إس فولكان كوكوكبوداك
إذا وجدت هذا المشروع مفيدًا وترغب في دعمه، فهناك عدة طرق للقيام بذلك:
شكرا لدعمكم! ❤️