Cette bibliothèque PHP fournit un wrapper simple pour l'API OpenAI, vous permettant d'intégrer facilement l'API OpenAI dans vos projets PHP.
Vous pouvez installer la bibliothèque via Composer :
composer require softcreatr/php-openai-sdk
Tout d’abord, incluez la bibliothèque dans votre projet :
<?php
require_once ' vendor/autoload.php ' ;
Créez ensuite une instance de la classe OpenAI
avec votre clé API, votre organisation (facultatif), un client HTTP, une fabrique de requêtes HTTP et une fabrique de flux 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 );
Vous pouvez désormais appeler n'importe quel point de terminaison de l'API OpenAI pris en charge à l'aide de la méthode magique __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 ();
}
Vous pouvez activer la diffusion en temps réel pour les discussions terminées :
$ 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
);
Pour plus de détails sur la façon d'utiliser chaque point de terminaison, reportez-vous à la documentation de l'API OpenAI et aux exemples fournis dans le référentiel.
Vous trouverez ci-dessous une liste des méthodes prises en charge, organisées par catégorie. Chaque méthode est liée à sa documentation API OpenAI correspondante et inclut un lien vers un exemple dans ce référentiel.
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 = [])
Pour une liste détaillée des modifications et des mises à jour, veuillez vous référer au fichier CHANGELOG.md. Nous adhérons au versioning sémantique et documentons les changements notables pour chaque version.
Le streaming est désormais pris en charge pour la génération de jetons en temps réel lors des discussions terminées. Veuillez vous assurer que vous gérez correctement les flux à l'aide d'un rappel, comme démontré dans les exemples.
Cette bibliothèque est sous licence ISC. Voir le fichier LICENSE pour plus d'informations.
Sacha Greuel |