Esta biblioteca PHP fornece um wrapper simples para a API OpenAI, permitindo integrar facilmente a API OpenAI em seus projetos PHP.
Você pode instalar a biblioteca via Composer:
composer require softcreatr/php-openai-sdkPrimeiro, inclua a biblioteca em seu projeto:
<?php
require_once ' vendor/autoload.php ' ; Em seguida, crie uma instância da classe OpenAI com sua chave de API, organização (opcional), um cliente HTTP, uma fábrica de solicitações HTTP e uma fábrica de fluxo HTTP:
use SoftCreatR OpenAI OpenAI ;
$ apiKey = ' your_api_key ' ;
$ organization = ' your_organization_id ' ; // optional
// Replace these lines with your chosen PSR-17 and PSR-18 compatible HTTP client and factories
$ httpClient = new YourChosenHttpClient ();
$ requestFactory = new YourChosenRequestFactory ();
$ streamFactory = new YourChosenStreamFactory ();
$ uriFactory = new YourChosenUriFactory ();
$ openAI = new OpenAI ( $ requestFactory , $ streamFactory , $ uriFactory , $ httpClient , $ apiKey , $ organization ); Agora você pode chamar qualquer endpoint de API OpenAI compatível usando o método mágico __call :
$ response = $ openAI -> createChatCompletion ([
' model ' => ' gpt-4 ' ,
' messages ' => [
[ ' role ' => ' system ' , ' content ' => ' You are a helpful assistant. ' ],
[ ' role ' => ' user ' , ' content ' => ' Hello! ' ],
],
]);
// Process the API response
if ( $ response -> getStatusCode () === 200 ) {
$ responseObj = json_decode ( $ response -> getBody ()-> getContents (), true );
print_r ( $ responseObj );
} else {
echo " Error: " . $ response -> getStatusCode ();
}Você pode ativar o streaming em tempo real para conclusões de bate-papo:
$ streamCallback = static function ( $ data ) {
if ( isset ( $ data [ ' choices ' ][ 0 ][ ' delta ' ][ ' content ' ])) {
echo $ data [ ' choices ' ][ 0 ][ ' delta ' ][ ' content ' ];
}
};
$ openAI -> createChatCompletion (
[
' model ' => ' gpt-4 ' ,
' messages ' => [
[
' role ' => ' user ' ,
' content ' => ' Tell me a story about a brave knight. ' ,
],
],
' stream ' => true ,
],
$ streamCallback
);Para obter mais detalhes sobre como usar cada endpoint, consulte a documentação da API OpenAI e os exemplos fornecidos no repositório.
Abaixo está uma lista de métodos suportados organizados por categoria. Cada método está vinculado à documentação correspondente da API OpenAI e inclui um link para um exemplo neste repositório.
createTranscription(array $options = [])createTranslation(array $options = [])createSpeech(array $options = [])createChatCompletion(array $options = [])createEmbedding(array $options = [])createFineTuningJob(array $options = [])listFineTuningJobs()retrieveFineTuningJob(array $parameters)cancelFineTuning(array $parameters)listFineTuningEvents(array $parameters, array $options = [])createBatch(array $options = [])retrieveBatch(array $parameters)cancelBatch(array $parameters)listBatches()listFiles()uploadFile(array $options = [])deleteFile(array $parameters)retrieveFile(array $parameters)retrieveFileContent(array $parameters)createUpload(array $options = [])addUploadPart(array $parameters, array $options = [])completeUpload(array $parameters)cancelUpload(array $parameters)createImage(array $options = [])createImageEdit(array $options = [])createImageVariation(array $options = [])listModels()retrieveModel(array $parameters)deleteModel(array $parameters)createModeration(array $options = [])createAssistant(array $options = [])listAssistants()retrieveAssistant(array $parameters)modifyAssistant(array $parameters, array $options = [])deleteAssistant(array $parameters)createThread(array $options = [])retrieveThread(array $parameters)modifyThread(array $parameters, array $options = [])deleteThread(array $parameters)createMessage(array $parameters, array $options = [])listMessages(array $parameters)retrieveMessage(array $parameters)modifyMessage(array $parameters, array $options = [])deleteMessage(array $parameters)createRun(array $parameters, array $options = [])createThreadAndRun(array $options = [])listRuns(array $parameters)retrieveRun(array $parameters)modifyRun(array $parameters, array $options = [])submitToolOutputsToRun(array $parameters, array $options = [])cancelRun(array $parameters)listRunSteps(array $parameters)retrieveRunStep(array $parameters)createVectorStore(array $options = [])listVectorStores()retrieveVectorStore(array $parameters)modifyVectorStore(array $parameters, array $options = [])deleteVectorStore(array $parameters)createVectorStoreFile(array $parameters, array $options = [])listVectorStoreFiles(array $parameters)retrieveVectorStoreFile(array $parameters)deleteVectorStoreFile(array $parameters)createVectorStoreFileBatch(array $parameters, array $options = [])retrieveVectorStoreFileBatch(array $parameters)cancelVectorStoreFileBatch(array $parameters)listVectorStoreFilesInBatch(array $parameters)listInvites()createInvite(array $options = [])retrieveInvite(array $parameters)deleteInvite(array $parameters)listUsers()modifyUser(array $parameters, array $options = [])retrieveUser(array $parameters)deleteUser(array $parameters)listProjects()createProject(array $options = [])retrieveProject(array $parameters)modifyProject(array $parameters, array $options = [])archiveProject(array $parameters)listProjectUsers(array $parameters)createProjectUser(array $parameters, array $options = [])retrieveProjectUser(array $parameters)modifyProjectUser(array $parameters, array $options = [])deleteProjectUser(array $parameters)listProjectServiceAccounts(array $parameters)createProjectServiceAccount(array $parameters, array $options = [])retrieveProjectServiceAccount(array $parameters)deleteProjectServiceAccount(array $parameters)listProjectApiKeys(array $parameters)retrieveProjectApiKey(array $parameters)deleteProjectApiKey(array $parameters)listAuditLogs(array $options = [])Para obter uma lista detalhada de alterações e atualizações, consulte o arquivo CHANGELOG.md. Aderimos ao controle de versão semântico e documentamos mudanças notáveis para cada versão.
O streaming agora é compatível com a geração de tokens em tempo real nas conclusões do chat. Certifique-se de lidar corretamente com os fluxos usando um retorno de chamada, conforme demonstrado nos exemplos.
Esta biblioteca está licenciada sob a licença ISC. Consulte o arquivo LICENSE para obter mais informações.
Sascha Greuel |