Fonte destas práticas recomendadas de segurança da GPT, procure atualizações antes de usar essas dicas se elas forem bifurcadas!
Como entusiasta do modelo de linguagem de IA, muitas vezes fico alarmado com a maneira como dados confidenciais são tratados de maneira descuidada em vários aplicativos. Embora o entusiasmo em torno da GPT seja compreensível, o tratamento inadequado de informações confidenciais representa desafios significativos para administradores e profissionais de segurança que gerenciam servidores alugados por clientes. Este documento tem como objetivo fornecer práticas recomendadas para implementar GPT com segurança em aplicativos da Web para evitar vulnerabilidades de segurança e proteger dados confidenciais.
O objetivo deste documento é descrever os riscos e vulnerabilidades de segurança que podem surgir durante a implementação da GPT em aplicativos da Web e fornecer práticas recomendadas para mitigar esses riscos.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Front-end (JavaScript com 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
Você pode armazenar sua chave de API como uma variável de ambiente adicionando-a à configuração do ambiente do seu servidor ou usando um arquivo .env (com a ajuda de uma biblioteca como PHP dotenv).
Crie um arquivo .env no diretório raiz do seu projeto:
GPT_API_KEY=your_api_key_here
Instale o pacote vlucas/phpdotenv usando o Composer:
composer require vlucas/phpdotenv
Carregue as variáveis de ambiente do arquivo .env em seu script PHP:
<?php
require_once ' vendor/autoload.php ' ;
use Dotenv Dotenv ;
$ dotenv = Dotenv:: createImmutable ( __DIR__ );
$ dotenv -> load ();
Acesse a chave API nas variáveis de ambiente:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Ao usar variáveis de ambiente, sua chave de API será mantida segura e separada de seu código-fonte. Lembre-se de adicionar o arquivo .env ao seu arquivo .gitignore para evitar que ele seja acidentalmente confirmado em seu repositório público.
Back-end (PHP)
<?php
// Sanitize user input before processing
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
Use HTTPS para comunicação segura Ao implantar seu aplicativo da web, certifique-se de usar HTTPS para criptografar a comunicação entre o cliente e o servidor, evitando ataques man-in-the-middle.
Limitar a taxa de solicitação da API Para evitar o abuso da sua chave de API da GPT e controlar os custos, implemente a limitação de taxa no seu código do lado do servidor. Isso limitará o número de solicitações feitas à API GPT dentro de um período especificado.
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
}
Use a Política de Segurança de Conteúdo (CSP) Implemente cabeçalhos CSP para evitar ataques XSS e outras vulnerabilidades, controlando os recursos que o agente do usuário pode carregar para uma determinada página.
Use cabeçalhos de segurança Implemente cabeçalhos de segurança como X-Frame-Options, X-Content-Type-Options e outros para proteger seu aplicativo contra vulnerabilidades de segurança comuns.
Ao implementar a GPT, é crucial selecionar o endpoint de API apropriado com base no seu caso de uso específico. OpenAI fornece vários endpoints para diferentes finalidades. Aqui estão os endpoints OpenAI atuais:
PONTO FINAL | NOME DO MODELO |
---|---|
/v1/chat/conclusões | 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/conclusões | ada, ada-código-pesquisa-código, ada-código-pesquisa-texto, ada-pesquisa-documento, ada-pesquisa-query, ada-similaridade, babbage, babbage-código-pesquisa-código, babbage-código-pesquisa- texto, documento de pesquisa de babage, consulta de pesquisa de babage, similaridade de babage, código-davinci-edit-001, código-pesquisa-ada-code-001, código-search-ada-text-001, code-search-babbage-code-001, code-search-babbage-text-001, curie, curie-instruct-beta, curie-search-document, curie-search-query, similaridade curie, davinci, davinci-instruct-beta, davinci-search-document, davinci-search-query, davinci-similarity, text-ada-001, text-babbage-001, text-curie-001, text-davinci-001, text-davinci-002, text-davinci-003, text-davinci-edit-001, text-embedding-ada- 002, pesquisa de texto-ada-doc-001, pesquisa de texto-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, text-search-curie-doc-001, text-search-curie-query-001, text-search-davinci-doc-001, pesquisa de texto-davinci-query-001, similaridade de texto-ada-001, similaridade de texto-babbage-001, similaridade de texto-curie-001, similaridade de texto-davinci-001 |
/v1/edições | texto-davinci-edit-001, código-davinci-edit-001 |
/v1/áudio/transcrições | sussurro-1 |
/v1/áudio/traduções | sussurro-1 |
/v1/ajustes finos | Davinci, Curie, Babbage, Ada |
/v1/embeddings | text-embedding-ada-002, text-search-ada-doc-001, text-search-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, texto- pesquisa-curie-doc-001, pesquisa de texto-curie-query-001, pesquisa de texto-davinci-doc-001, pesquisa de texto-davinci-query-001 |
/v1/moderações | moderação de texto mais recente, moderação de texto estável |
Diferentes endpoints têm custos variados por token ou por solicitação. Escolha um endpoint que caiba no seu orçamento.
Alguns endpoints oferecem tempos de resposta mais rápidos, enquanto outros são mais adequados para tarefas pesadas. Considere as necessidades de desempenho do seu aplicativo ao selecionar um endpoint.
Cada endpoint tem seus próprios pontos fortes e fracos. Avalie os requisitos exclusivos da sua aplicação e escolha o endpoint que melhor atenda a essas necessidades.
Um exemplo de como usar o endpoint /v1/chat/completions com o modelo gpt-3.5-turbo em um aplicativo web.
Atualize $request_url no seu script PHP de back-end:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/chat/completions " ;
Crie uma função para enviar uma solicitação à 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 );
}
Chame a função send_chat_completion_request() e processe a resposta da 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 ' ];
}
Este exemplo mostra como usar o endpoint /v1/chat/completions com o modelo gpt-3.5-turbo. A função send_chat_completion_request() envia uma solicitação à API com o texto de entrada e recebe a resposta gerada. A resposta do assistente é então devolvida ao front-end.
Recursos e notas adicionais que podem ser úteis para compreender e implementar as melhores práticas mencionadas neste documento.
S. Volkan Kücükbudak
Se você achar este projeto útil e quiser apoiá-lo, existem várias maneiras de fazer isso:
Obrigado pelo seu apoio! ❤️