Sumber Praktik Terbaik Keamanan GPT ini, carilah pembaruan sebelum Anda menggunakan kiat ini jika bercabang!
Sebagai penggemar model bahasa AI, saya sering merasa khawatir dengan penanganan data sensitif yang sembarangan di berbagai aplikasi. Meskipun kegembiraan seputar GPT dapat dimengerti, penanganan informasi sensitif yang tidak tepat menimbulkan tantangan besar bagi administrator dan profesional keamanan yang mengelola server yang disewa oleh klien. Dokumen ini bertujuan untuk memberikan praktik terbaik dalam menerapkan GPT dengan aman di aplikasi web guna mencegah kerentanan keamanan dan melindungi data sensitif.
Tujuan dari dokumen ini adalah untuk menguraikan risiko dan kerentanan keamanan yang mungkin timbul saat menerapkan GPT dalam aplikasi web dan memberikan praktik terbaik untuk memitigasi risiko ini.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Bagian depan (JavaScript dengan 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
}
} ) ;
}
Ujung Belakang (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
Anda dapat menyimpan kunci API sebagai variabel lingkungan dengan menambahkannya ke konfigurasi lingkungan server Anda atau dengan menggunakan file .env (dengan bantuan perpustakaan seperti PHP dotenv).
Buat file .env di direktori root proyek Anda:
GPT_API_KEY=your_api_key_here
Instal paket vlucas/phpdotenv menggunakan Composer:
composer require vlucas/phpdotenv
Muat variabel lingkungan dari file .env di skrip PHP Anda:
<?php
require_once ' vendor/autoload.php ' ;
use Dotenv Dotenv ;
$ dotenv = Dotenv:: createImmutable ( __DIR__ );
$ dotenv -> load ();
Akses kunci API dari variabel lingkungan:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Dengan menggunakan variabel lingkungan, kunci API Anda akan tetap aman dan terpisah dari kode sumber Anda. Ingatlah untuk menambahkan file .env ke file .gitignore Anda untuk mencegahnya dikomit secara tidak sengaja ke repositori publik Anda.
Ujung Belakang (PHP)
<?php
// Sanitize user input before processing
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
Gunakan HTTPS untuk komunikasi yang aman Saat menyebarkan aplikasi web Anda, pastikan Anda menggunakan HTTPS untuk mengenkripsi komunikasi antara klien dan server, sehingga mencegah serangan man-in-the-middle.
Batasi laju permintaan API Untuk mencegah penyalahgunaan kunci API GPT dan mengontrol biaya, terapkan pembatasan laju pada kode sisi server Anda. Ini akan membatasi jumlah permintaan yang dibuat ke GPT API dalam jangka waktu tertentu.
Ujung Belakang (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
}
Gunakan Kebijakan Keamanan Konten (CSP) Menerapkan header CSP untuk mencegah serangan XSS dan kerentanan lainnya dengan mengontrol sumber daya yang boleh dimuat oleh agen pengguna untuk halaman tertentu.
Gunakan Header Keamanan Terapkan header keamanan seperti X-Frame-Options, X-Content-Type-Options, dan lainnya untuk melindungi aplikasi Anda dari kerentanan keamanan umum.
Saat menerapkan GPT, penting untuk memilih titik akhir API yang sesuai berdasarkan kasus penggunaan spesifik Anda. OpenAI menyediakan berbagai titik akhir untuk tujuan berbeda. Berikut adalah titik akhir OpenAI saat ini:
TITIK AKHIR | NAMA MODEL |
---|---|
/v1/obrolan/penyelesaian | 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, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613. |
/v1/penyelesaian | ada, ada-kode-pencarian-kode, ada-kode-pencarian-teks, ada-pencarian-dokumen, ada-permintaan-pencarian, ada-kesamaan, babbage, kode-pencarian-babbage-kode, pencarian-kode-babbage- teks, dokumen-pencarian babbage, permintaan-pencarian babbage, kesamaan-babbage, kode-davinci-edit-001, pencarian-kode-ada-kode-001, pencarian kode-ada-teks-001, pencarian kode-babbage-kode-001, pencarian kode-babbage-teks-001, curie, curie-instruct-beta, curie-search-document, curie-search-query, kemiripan-curie, davinci, davinci-instruct-beta, davinci-search-document, davinci-search-query, kemiripan-davinci, teks-ada-001, teks-babbage-001, teks-curie-001, teks-davinci-001, teks-davinci-002, teks-davinci-003, teks-davinci-edit-001, teks- penyematan-ada-002, pencarian teks-ada-doc-001, pencarian teks-ada-query-001, pencarian teks-babbage-doc-001, pencarian teks-babbage-query-001, pencarian teks-curie-doc-001, pencarian teks-curie-query-001, pencarian teks-davinci-doc-001, pencarian-teks-davinci-query-001, kemiripan-teks-ada-001, kemiripan-teks-babbage-001, kemiripan-teks-curie-001, kemiripan-teks-davinci-001 |
/v1/edit | teks-davinci-edit-001, kode-davinci-edit-001 |
/v1/audio/transkripsi | bisikan-1 |
/v1/audio/translations | bisikan-1 |
/v1/menyempurnakan | davinci, curie, babbage, ada |
/v1/embeddings | teks-penyematan-ada-002, pencarian teks-ada-doc-001, pencarian teks-ada-query-001, pencarian teks-babbage-doc-001, pencarian teks-babbage-query-001, teks- pencarian-curie-doc-001, pencarian-teks-curie-query-001, pencarian-teks-davinci-doc-001, pencarian teks-davinci-query-001 |
/v1/moderations | teks-moderasi-terbaru, teks-moderasi-stabil |
Titik akhir yang berbeda memiliki biaya per token atau per permintaan yang berbeda-beda. Pilih titik akhir yang sesuai dengan anggaran Anda.
Beberapa titik akhir menawarkan waktu respons yang lebih cepat, sementara titik akhir lainnya lebih cocok untuk tugas berat. Pertimbangkan kebutuhan performa aplikasi Anda saat memilih titik akhir.
Setiap titik akhir memiliki kekuatan dan kelemahannya masing-masing. Evaluasi persyaratan unik aplikasi Anda dan pilih titik akhir yang paling memenuhi kebutuhan tersebut.
Contoh cara menggunakan endpoint /v1/chat/completions dengan model gpt-3.5-turbo di aplikasi web.
Perbarui $request_url di skrip PHP back-end Anda:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/chat/completions " ;
Buat fungsi untuk mengirim permintaan ke 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 );
}
Panggil fungsi send_chat_completion_request() dan proses respons 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 ' ];
}
Contoh ini menunjukkan cara menggunakan titik akhir /v1/chat/completions dengan model gpt-3.5-turbo. Fungsi send_chat_completion_request() mengirimkan permintaan ke API dengan teks masukan dan menerima respons yang dihasilkan. Balasan asisten kemudian dikembalikan ke front-end.
Sumber daya dan catatan tambahan yang mungkin berguna untuk memahami dan menerapkan praktik terbaik yang disebutkan dalam dokumen ini.
S. Volkan Kücükbudak
Jika Anda merasa proyek ini bermanfaat dan ingin mendukungnya, ada beberapa cara untuk melakukannya:
Terima kasih atas dukungan Anda! ❤️