Source de ces meilleures pratiques de sécurité GPT, recherchez les mises à jour avant d'utiliser ces conseils s'ils sont dupés !
En tant que passionné de modèles de langage d'IA, je suis souvent alarmé par la façon dont les données sensibles sont traitées avec négligence dans diverses applications. Même si l’engouement autour du GPT est compréhensible, le traitement inapproprié d’informations sensibles pose des défis importants aux administrateurs et aux professionnels de la sécurité gérant les serveurs loués par les clients. Ce document vise à fournir les meilleures pratiques pour implémenter en toute sécurité GPT dans les applications Web afin de prévenir les vulnérabilités de sécurité et de protéger les données sensibles.
L'objectif de ce document est de décrire les risques de sécurité et les vulnérabilités qui peuvent survenir lors de la mise en œuvre de GPT dans les applications Web et de fournir les meilleures pratiques pour atténuer ces risques.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Front-end (JavaScript avec 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
}
} ) ;
}
Back-end (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
Vous pouvez stocker votre clé API en tant que variable d'environnement en l'ajoutant à la configuration de l'environnement de votre serveur ou en utilisant un fichier .env (à l'aide d'une bibliothèque comme PHP dotenv).
Créez un fichier .env dans le répertoire racine de votre projet :
GPT_API_KEY=your_api_key_here
Installez le package vlucas/phpdotenv à l'aide de Composer :
composer require vlucas/phpdotenv
Chargez les variables d'environnement du fichier .env dans votre script PHP :
<?php
require_once ' vendor/autoload.php ' ;
use Dotenv Dotenv ;
$ dotenv = Dotenv:: createImmutable ( __DIR__ );
$ dotenv -> load ();
Accédez à la clé API depuis les variables d'environnement :
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
En utilisant des variables d'environnement, votre clé API sera sécurisée et séparée de votre code source. N'oubliez pas d'ajouter le fichier .env à votre fichier .gitignore pour éviter qu'il ne soit accidentellement validé dans votre référentiel public.
Back-end (PHP)
<?php
// Sanitize user input before processing
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
Utilisez HTTPS pour une communication sécurisée Lors du déploiement de votre application Web, assurez-vous d'utiliser HTTPS pour chiffrer la communication entre le client et le serveur, empêchant ainsi les attaques de l'homme du milieu.
Limiter le taux de requêtes API Pour éviter les abus de votre clé API GPT et contrôler les coûts, implémentez une limitation du débit sur votre code côté serveur. Cela limitera le nombre de requêtes adressées à l'API GPT dans un délai spécifié.
Back-end (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
}
Utiliser la politique de sécurité du contenu (CSP) Implémentez les en-têtes CSP pour empêcher les attaques XSS et autres vulnérabilités en contrôlant les ressources que l'agent utilisateur est autorisé à charger pour une page donnée.
Utiliser les en-têtes de sécurité Implémentez des en-têtes de sécurité tels que X-Frame-Options, X-Content-Type-Options et autres pour protéger votre application contre les vulnérabilités de sécurité courantes.
Lors de la mise en œuvre de GPT, il est crucial de sélectionner le point de terminaison d'API approprié en fonction de votre cas d'utilisation spécifique. OpenAI fournit divers points de terminaison à des fins différentes. Voici les points de terminaison OpenAI actuels :
POINT DE FIN | NOM DU MODÈLE |
---|---|
/v1/chat/achèvements | 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/achèvements | ada, ada-code-search-code, ada-code-search-text, ada-search-document, ada-search-query, ada-similarity, babbage, babbage-code-search-code, babbage-code-search- texte, document de recherche de babbage, requête de recherche de babbage, similarité de babbage, code-davinci-edit-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- document de recherche, requête de recherche curie, similarité curie, davinci, davinci-instruct-beta, davinci-search-document, requête de recherche davinci, similitude davinci, texte-ada-001, texte-babbage-001, texte-curie-001, texte-davinci-001, texte-davinci-002, texte-davinci-003, texte-davinci- edit-001, intégration de texte-ada-002, recherche de texte-ada-doc-001, recherche de texte-ada-query-001, recherche de texte-babbage-doc-001, recherche de texte-babbage-query-001, recherche de texte-curie-doc-001, recherche de texte-curie-query-001, recherche de texte-davinci-doc-001, recherche de texte-davinci-query-001, similarité de texte-ada-001, texte-similarité-babbage-001, texte-similarité-curie-001, texte-similarité-davinci-001 |
/v1/modifications | texte-davinci-edit-001, code-davinci-edit-001 |
/v1/audio/transcriptions | murmure-1 |
/v1/audio/traductions | murmure-1 |
/v1/ajustements fins | davinci, curie, babbage, ada |
/v1/intégrations | texte-embedding-ada-002, texte-recherche-ada-doc-001, texte-recherche-ada-query-001, texte-recherche-babbage-doc-001, texte-recherche-babbage-query-001, texte- recherche-curie-doc-001, recherche de texte-curie-query-001, recherche de texte-davinci-doc-001, recherche de texte-davinci-query-001 |
/v1/modérations | texte-modération-dernière, texte-modération-stable |
Différents points de terminaison ont des coûts variables par jeton ou par requête. Choisissez un point de terminaison qui correspond à votre budget.
Certains points de terminaison offrent des temps de réponse plus rapides, tandis que d'autres sont plus adaptés aux tâches lourdes. Tenez compte des besoins en performances de votre application lors de la sélection d'un point de terminaison.
Chaque point final a ses propres forces et faiblesses. Évaluez les exigences uniques de votre application et choisissez le point de terminaison qui répond le mieux à ces besoins.
Un exemple d'utilisation du point de terminaison /v1/chat/completions avec le modèle gpt-3.5-turbo dans une application Web.
Mettez à jour le $request_url dans votre script PHP back-end :
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/chat/completions " ;
Créez une fonction pour envoyer une requête à l'API GPT :
<?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 );
}
Appelez la fonction send_chat_completion_request() et traitez la réponse de l'API GPT :
<?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 ' ];
}
Cet exemple montre comment utiliser le point de terminaison /v1/chat/completions avec le modèle gpt-3.5-turbo. La fonction send_chat_completion_request() envoie une requête à l'API avec le texte d'entrée et reçoit la réponse générée. La réponse de l'assistant est ensuite renvoyée au front-end.
Ressources et notes supplémentaires qui pourraient être utiles pour comprendre et mettre en œuvre les meilleures pratiques mentionnées dans ce document.
S. Volkan Kücükbudak
Si vous trouvez ce projet utile et souhaitez le soutenir, il existe plusieurs manières de le faire :
Merci pour votre soutien ! ❤️