PHPOpenAI ist eine in der Gemeinde gepflegte Bibliothek, die die Verwendung der OpenAI -API in PHP ermöglicht.
Das Projekt ist in PHP geschrieben und kann verwendet werden, um die OpenAI API einfach in Ihr vorhandenes PHP -Projekt zu integrieren.
Dieses Projekt basiert auf PHP Version 8.1, um Funktionen wie Aufzählungen zu verwenden. Dieses Projekt erfordert keine externen Abhängigkeiten. Sie müssen jedoch die Curl -Erweiterung installieren, damit sie ordnungsgemäß funktioniert.
Das Projekt verwendet Komponist, um Abhängigkeiten zu verwalten. Wenn Sie Composer noch nicht installiert haben, können Sie dies tun, indem Sie den Anweisungen auf der offiziellen Komponisten -Website befolgen.
Um das Projekt zu installieren, können Sie das Paket von packagist.org mit dem folgenden Befehl installieren:
composer require easygithdev/php-openai Um die OpenAI API zu verwenden, müssen Sie sich auf ihrer Website anmelden und einen API -Schlüssel erhalten. Sobald Sie Ihren API -Schlüssel haben, können Sie sie in Ihrem PHP -Code verwenden, um Anforderungen an die OpenAI -API zu senden.
Um herauszufinden, wie Sie Ihren Schlüssel erhalten, besuchen Sie die folgende Adresse:
https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-y.
Hier ist ein Beispielcode, der Ihnen zeigt, wie Sie die OpenAI -API in PHP verwenden:
<?php
require_once __DIR__ . ' /vendor/autoload.php ' ;
use EasyGithDev PHPOpenAI Helpers ModelEnum ;
use EasyGithDev PHPOpenAI OpenAIClient ;
$ apiKey = getenv ( ' OPENAI_API_KEY ' );
$ response = ( new OpenAIClient ( $ apiKey ))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
)-> toObject ();
// Response as stClass object
echo ' <pre> ' , print_r ( $ response , true ), ' </pre> ' ; Dieser Code instanziiert ein neues OpenAIApi Objekt mit einem API-Schlüssel und erstellt dann ein neues Completion , um den von OpenAI bereitgestellten GPT-3-KI-Sprachmodell für die Textverschließung von Text auszuführen.
Die Methode create() wird nach dem Completion aufgerufen, um eine neue Textabschluss zu generieren. Es dauert zwei Parameter:
Das Ergebnis der Fertigstellung wird in der $response Antwortvariablen zurückgegeben. Das Ergebnis kann dann zur weiteren Verarbeitung verwendet werden, z. B. das Anzeigen des ausgefüllten Textes oder zum Füttern in einen anderen Teil des Programms zur zusätzlichen Verarbeitung.
Sie können eine Umgebungsvariable verwenden, um Ihren Schlüssel zu speichern. Sie können diese Variable dann wie im folgenden Beispiel verwenden:
export OPENAI_API_KEY= " sk-xxxxxxxxxxx "Sie können die Variable in Apache -Konfigurationsdatei einfügen:
<VirtualHost hostname:80>
...
SetEnv OPENAI_API_KEY sk-xxxxxxxxxxx
...
</VirtualHost>
Und starten Sie dann den Service neu.
Jetzt können Sie die Umgebungsvariable verwenden, indem Sie die getenv() -Funktion von PHP aufrufen.
<?php
$ response = ( new OpenAIApi ( getenv ( ' OPENAI_API_KEY ' )))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
);Wenn Sie Informationen über Ihre Organisation bereitstellen möchten, müssen Sie wie folgt fortfahren.
<?php
$ apiKey = getenv ( ' OPENAI_API_KEY ' );
$ org = getenv ( ' OPENAI_API_ORG ' );
// Passing the organization to the client
$ response = ( new OpenAIClient ( $ apiKey , $ org ))Wenn Sie die URL der API ändern müssen, können Sie wie folgt fortfahren:
<?php
$ apiKey = getenv ( ' OPENAI_API_KEY ' );
// Create a new router, with origine url and version
$ route = new OpenAIRoute (
' https://api.openai.com ' ,
' v1 '
);
// Get a specific Url
echo $ route -> completionCreate () , ' <br> ' ;
// Passing the router to the client
$ response = ( new OpenAIClient ( $ apiKey ))
-> setRoute ( $ route ); Um eine Route neu zu definieren, müssen Sie die OpenAIRoute -Klasse erweitern oder die Route implementieren.
Die API gibt Antworten im JSON -Format zurück. Um den Zugriff auf die verschiedenen Informationen zu erleichtern, können Sie toObject() oder toArray() -Methoden des Handler -Objekts aufrufen, um auf die Daten zuzugreifen.
<?php
$ response = ( new OpenAIClient ( $ apiKey ))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
)-> toObject ();
// Response as a stClass object
echo ' <pre> ' , print_r ( $ response , true ), ' </pre> ' ;
$ response = ( new OpenAIClient ( $ apiKey ))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
)-> toArray ();
// Response as an associative array
echo ' <pre> ' , print_r ( $ response , true ), ' </pre> ' ;Manchmal gibt die API Fehler zurück. Daher ist es notwendig, festzustellen, was das Problem verursacht hat. Um diese Schwierigkeit zu bewältigen, haben Sie viele Optionen.
Wenn Sie ein Handler-Objekt mit toObject() oder toArray() -Methoden verwenden, verwenden Sie einfach eine try-catch -Struktur.
try {
$ response = ( new OpenAIClient ( ' BAD KEY ' ))
-> Completion ()
-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
)
-> toObject ();
} catch ( Throwable $ t ) {
echo nl2br ( $ t -> getMessage ());
die;
} Wenn Sie das CurlResponse -Objekt verwenden, können Sie überprüfen, ob ein Fehler mit den Validatoren aufgetreten ist.
$ handler = ( new OpenAIClient ( ' BAD KEY ' ))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
);
$ response = $ handler -> getResponse ();
$ contentTypeValidator = $ handler -> getContentTypeValidator ();
if (!( new StatusValidator ( $ response ))-> validate () or
!( new $ contentTypeValidator ( $ response ))-> validate ()) {
echo $ response -> getBody ();
}Erfahren Sie mehr über Fehler.
Hier ist ein Video, das eine Anwendung zeigt, in der Sie Bilder mit einem vom Benutzer definierten Malstil erstellen können. Diese Anwendung wird mit dem Phpopenai -Projekt erstellt.
Hier finden Sie den Code:
https://github.com/easygithdev/phpopenai-playground.git.
Das Integrieren von OpenAI in Ihre Anwendung ist jetzt so einfach wie einige Codezeilen.
Hier finden Sie alle Codes:
https://github.com/easygithdev/phpopenai- examples.
$ response = ( new OpenAIClient ( $ apiKey ))-> Chat ()-> create (
ModelEnum:: GPT_3_5_TURBO ,
[
new ChatMessage (ChatMessage:: ROLE_SYSTEM , " You are a helpful assistant. " ),
new ChatMessage (ChatMessage:: ROLE_USER , " Who won the world series in 2020? " ),
new ChatMessage (ChatMessage:: ROLE_ASSISTANT , " The Los Angeles Dodgers won the World Series in 2020. " ),
new ChatMessage (ChatMessage:: ROLE_USER , " Where was it played? " ),
]
)-> toObject ();Erfahren Sie mehr über die CHAT -Vervollständigung.
$ response = ( new OpenAIClient ( $ apiKey ))-> Completion ()-> create (
ModelEnum:: TEXT_DAVINCI_003 ,
" Say this is a test " ,
)-> toObject ();Erfahren Sie mehr über die Abschluss des Textes.
Das Stream -Attribut in der OpenAI -API ist ein optionaler Parameter, mit dem Sie den von der API zurückgegebenen Datenfluss steuern können. Wenn Sie diese Option auf True festlegen, gibt die API eine Antwort als Streaming -Daten und nicht als einzelne Antwort zurück.
Dies bedeutet, dass Sie die Ergebnisse der API abrufen können, sobald sie verfügbar sind, anstatt auf die vollständige Antwort zu warten, bevor sie verarbeitet werden. Diese Option kann für Anwendungen nützlich sein, die eine Echtzeitverarbeitung großer Datenmengen erfordern.
<?php
header ( ' Content-Type: text/event-stream ' );
header ( ' Cache-Control: no-cache ' );
. . .
( new OpenAIClient ( $ apiKey ))-> Completion ()-> create (
model: " text-davinci-003 " ,
prompt: " Translate this into 1. French, 2. Spanish and 3. Japanese: nn What rooms do you have available? nn 1. " ,
temperature: 0.3 ,
max_tokens: 100 ,
top_p: 1.0 ,
frequency_penalty: 0.0 ,
presence_penalty: 0.0 ,
stream: true
)-> getResponse (); < html >
< body >
< div id =" result " > </ div >
< script >
function nl2br ( str , replaceMode , isXhtml ) {
var breakTag = ( isXhtml ) ? '<br />' : '<br>' ;
var replaceStr = ( replaceMode ) ? '$1' + breakTag : '$1' + breakTag + '$2' ;
return ( str + '' ) . replace ( / ([^>rn]?)(rn|nr|r|n) / g , replaceStr ) ;
}
if ( typeof ( EventSource ) !== 'undefined' ) {
console . info ( 'Starting connection...' ) ;
var source = new EventSource ( 'stream.php' ) ;
source . addEventListener ( 'open' , function ( e ) {
console . info ( 'Connection was opened.' ) ;
} , false ) ;
source . addEventListener ( 'error' , function ( e ) {
var txt ;
switch ( event . target . readyState ) {
// if reconnecting
case EventSource . CONNECTING :
txt = 'Reconnecting...' ;
break ;
// if error was fatal
case EventSource . CLOSED :
txt = 'Connection failed. Will not retry.' ;
break ;
}
console . error ( 'Connection error: ' + txt ) ;
} , false ) ;
source . addEventListener ( 'message' , function ( e ) {
if ( e . data == "[DONE]" ) {
source . close ( ) ;
return ;
}
document . getElementById ( 'result' ) . innerHTML += nl2br ( JSON . parse ( e . data ) . choices [ 0 ] . text ) ;
} , false ) ;
} else {
alert ( 'Your browser does not support Server-sent events! Please upgrade it!' ) ;
console . error ( 'Connection aborted' ) ;
}
</ script >
</ body >
</ html > $ response = ( new OpenAIClient ( $ apiKey ))-> Edit ()-> create (
" What day of the wek is it? " ,
ModelEnum:: TEXT_DAVINCI_EDIT_001 ,
" Fix the spelling mistakes " ,
)-> toObject ();Erfahren Sie mehr über die Textbearbeitung.
function displayUrl ( $ url )
{
return ' <img src=" ' . $ url . ' " /> ' ;
}
$ response = ( new OpenAIClient ( $ apiKey ))-> Image ()-> create (
" a rabbit inside a beautiful garden, 32 bit isometric " ,
n: 2 ,
size: ImageSizeEnum::is256,
)-> toObject (); < ?php foreach ($response- > data as $image) : ? >
< div > < ?= displayUrl($image- > url) ? > </ div >
< ?php endforeach; ? > 
Erfahren Sie mehr über die Bildgenerierung.
$ response = ( new OpenAIClient ( $ apiKey ))-> Image ()-> createVariation (
__DIR__ . ' /../../assets/image_variation_original.png ' ,
n: 2 ,
size: ImageSizeEnum::is256
)-> toObject ();
Erfahren Sie mehr über Bildvariationen.
$ response = ( new OpenAIClient ( $ apiKey ))-> Image ()-> createEdit (
image: __DIR__ . ' /../../assets/image_edit_original.png ' ,
mask: __DIR__ . ' /../../assets/image_edit_mask2.png ' ,
prompt: ' a sunlit indoor lounge area with a pool containing a flamingo ' ,
size: ImageSizeEnum::is512,
)-> toObject ();
Erfahren Sie mehr über die Bildbearbeitung.
$ response = ( new OpenAIClient ( $ apiKey ))-> Embedding ()-> create (
ModelEnum:: TEXT_EMBEDDING_ADA_002 ,
" The food was delicious and the waiter... " ,
)-> toObject ();Erfahren Sie mehr über ein Einbettung.
$ response = ( new OpenAIClient ( $ apiKey ))-> Audio ()
-> addCurlParam ( ' timeout ' , 30 )
-> transcription (
__DIR__ . ' /../../assets/openai.mp3 ' ,
ModelEnum:: WHISPER_1 ,
response_format: AudioResponseEnum:: SRT
)-> toObject ();Erfahren Sie mehr über Audio -Transkription.
$ response = ( new OpenAIClient ( $ apiKey ))-> Audio ()
-> addCurlParam ( ' timeout ' , 30 )
-> translation (
__DIR__ . ' /../../assets/openai_fr.mp3 ' ,
' whisper-1 ' ,
response_format: AudioResponseEnum:: TEXT
)-> toObject ();Erfahren Sie mehr über Audioübersetzung.
$ response = ( new OpenAIClient ( $ apiKey ))
-> Model ()
-> list ()
-> toObject ();Erfahren Sie mehr über das Modell.
$ response = ( new OpenAIClient ( $ apiKey ))
-> Model ()
-> retrieve ( ' text-davinci-001 ' )
-> toObject ();Erfahren Sie mehr über das Modell.
$ response = ( new OpenAIClient ( $ apiKey ))
-> Model ()
-> delete (
$ _POST [ ' model ' ]
)-> toObject ();Erfahren Sie mehr über das Modell.
$ response = ( new OpenAIApi ( $ apiKey ))
-> File ()
-> list ()
-> toObject ();Erfahren Sie mehr über Datei.
$ response = ( new OpenAIApi ( $ apiKey ))
-> File ()
-> create (
__DIR__ . ' /../../assets/mydata.jsonl ' ,
' fine-tune ' ,
)
-> toObject ();Erfahren Sie mehr über Datei.
$ response = ( new OpenAIApi ( $ apiKey ))
-> File ()
-> delete ( ' file-xxxx ' )
-> toObject ();Erfahren Sie mehr über Datei.
$ response = ( new OpenAIApi ( $ apiKey ))
-> File ()
-> retrieve ( ' file-xxxx ' )
-> toObject ();Erfahren Sie mehr über das Modell.
$ response = ( new OpenAIApi ( $ apiKey ))
-> File ()
-> download ( ' file-xxxx ' )
-> toObject ();Erfahren Sie mehr über das Modell.
$ response = ( new OpenAIApi ( $ apiKey ))
-> FineTune ()
-> list ()
-> toObject ();Erfahren Sie mehr über die Fein-Tune.
$ response = ( new OpenAIApi ( $ apiKey ))
-> FineTune ()
-> create (
' file-xxxx '
)
-> toObject ();Erfahren Sie mehr über die Fein-Tune.
$ response = ( new OpenAIApi ( $ apiKey ))
-> FineTune ()
-> retrieve ( ' ft-xxx ' )
-> toObject ();Erfahren Sie mehr über die Fein-Tune.
$ response = ( new OpenAIApi ( $ apiKey ))
-> FineTune ()
-> listEvents ( ' ft-xxx ' )
-> toObject ();Erfahren Sie mehr über die Fein-Tune.
$ response = ( new OpenAIApi ( $ apiKey ))
-> FineTune ()
-> Cancel ( ' ft-xxx ' )
-> toObject ();Erfahren Sie mehr über die Fein-Tune.
$ response = ( new OpenAIClient ( $ apiKey ))
-> Moderation ()
-> create ( ' I want to kill them. ' )
-> toObject ();Erfahren Sie mehr über Mäßigung.
Alle Tests durchführen:
composer test testsNur einen Test durchführen:
composer test tests/[NAME]Test.phpPHPOPENAI ist ein nützliches Projekt für PHP -Entwickler, die die OpenAI -API problemlos in ihre Projekte integrieren möchten. Mit einfacher Installation und Verwendung von Komponisten, Textklassifizierung, Bildgenerierung und benannter Entitätserkennung in Ihre PHP -Anwendung.