Источник этих рекомендаций по безопасности GPT. Если он разветвлен, прежде чем использовать эти советы, поищите обновления!
Как энтузиаст языковых моделей искусственного интеллекта, меня часто беспокоит то, как небрежно обращаются с конфиденциальными данными в различных приложениях. Хотя ажиотаж вокруг GPT понятен, ненадлежащее обращение с конфиденциальной информацией создает серьезные проблемы для администраторов и специалистов по безопасности, управляющих серверами, арендованными клиентами. Целью этого документа является предоставление рекомендаций по безопасному внедрению GPT в веб-приложениях для предотвращения уязвимостей безопасности и защиты конфиденциальных данных.
Цель этого документа — описать риски безопасности и уязвимости, которые могут возникнуть при внедрении GPT в веб-приложениях, а также предоставить рекомендации по снижению этих рисков.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Интерфейс (JavaScript с 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. Чтобы предотвратить злоупотребление ключом API GPT и контролировать расходы, внедрите ограничение скорости в коде на стороне сервера. Это ограничит количество запросов к 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/чат/завершения | гпт-4, гпт-4-0314, гпт-4-0613, гпт-4-32к, гпт-4-32к-0314, гпт-3,5-турбо, гпт-3,5-турбо-0301, гпт-3,5-турбо- 0613, гпт-3,5-турбо-16к, gpt-3.5-турбо-16к-0613. |
/v1/завершения | Ада, ада-код-поиск-код, ада-код-поиск-текст, ада-поиск-документ, ада-поиск-запрос, ада-сходство, Бэббидж, Бэббидж-код-поиск-код, Бэббидж-код-поиск- текст, документ поиска Бэббиджа, поисковый запрос Бэббиджа, сходство Бэббиджа, код-давинчи-редактировать-001, поиск кода-ада-код-001, поиск кода-ада-текст-001, поиск кода-баббидж-код-001, поиск кода-баббидж-текст-001, кюри, Кюри-инструкт-бета, Кюри-поиск-документ, Кюри-поиск-запрос, Кюри-сходство, Давинчи, davinci-instruct-beta, davinci-search-document, davinci-search-query, davinci-сходство, text-ada-001, text-babbage-001, text-curie-001, text-davinci-001, text-davinci- 002, текст-давинчи-003, текст-давинчи-редактировать-001, text-embedding-ada-002, text-search-ada-doc-001, text-search-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, text- поиск-кюри-док-001, текстовый поиск-кюри-запрос-001, текстовый поиск-давинчи-док-001, текстовый поиск-давинчи-запрос-001, текстовое сходство-ада-001, текстовое сходство-бэббидж-001, текстовое сходство-кюри-001, текстовое сходство-давинчи-001 |
/v1/редактирует | текст-давинчи-редактировать-001, код-давинчи-редактировать-001 |
/v1/аудио/транскрипции | шепот-1 |
/v1/аудио/переводы | шепот-1 |
/v1/тонкая настройка | Давинчи, Кюри, Бэббидж, Ада |
/v1/вложения | text-embedding-ada-002, text-search-ada-doc-001, text-search-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, text- поиск-кюри-док-001, текстовый поиск-кюри-запрос-001, текстовый поиск-давинчи-doc-001, текстовый поиск-давинчи-запрос-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 с входным текстом и получает сгенерированный ответ. Ответ помощника затем возвращается во внешний интерфейс.
Дополнительные ресурсы и примечания, которые могут быть полезны для понимания и внедрения лучших практик, упомянутых в этом документе.
С. Волкан Кючукбудак
Если вы считаете этот проект полезным и хотите его поддержать, есть несколько способов сделать это:
Спасибо за вашу поддержку! ❤️