Diese PHP-Bibliothek bietet einen einfachen Wrapper für die OpenAI-API, sodass Sie die OpenAI-API problemlos in Ihre PHP-Projekte integrieren können.
Sie können die Bibliothek über Composer installieren:
composer require softcreatr/php-openai-sdk
Binden Sie zunächst die Bibliothek in Ihr Projekt ein:
<?php
require_once ' vendor/autoload.php ' ;
Erstellen Sie dann eine Instanz der OpenAI
-Klasse mit Ihrem API-Schlüssel, Ihrer Organisation (optional), einem HTTP-Client, einer HTTP-Anfrage-Factory und einer HTTP-Stream-Factory:
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 );
Jetzt können Sie jeden unterstützten OpenAI-API-Endpunkt mit der magischen Methode __call
aufrufen:
$ 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 ();
}
Sie können Echtzeit-Streaming für Chat-Abschlüsse aktivieren:
$ 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
);
Weitere Einzelheiten zur Verwendung der einzelnen Endpunkte finden Sie in der OpenAI-API-Dokumentation und in den Beispielen im Repository.
Nachfolgend finden Sie eine nach Kategorien geordnete Liste der unterstützten Methoden. Jede Methode verlinkt auf die entsprechende OpenAI-API-Dokumentation und enthält einen Link zu einem Beispiel in diesem Repository.
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 = [])
Eine detaillierte Liste der Änderungen und Aktualisierungen finden Sie in der Datei CHANGELOG.md. Wir halten uns an die semantische Versionierung und dokumentieren wichtige Änderungen für jede Version.
Streaming wird jetzt für die Echtzeit-Token-Generierung bei Chat-Abschlüssen unterstützt. Bitte stellen Sie sicher, dass Sie Streams mithilfe eines Rückrufs korrekt verarbeiten, wie in den Beispielen gezeigt.
Diese Bibliothek ist unter der ISC-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.
Sascha Greuel |