mathsgod / openai-client
A PHP client for OpenAI's API
2.0.5
2024-08-14 03:09 UTC
Requires
- guzzlehttp/guzzle: ^7.5
- psr/log: ^3.0
- react/http: ^1.10
- react/stream: ^1.4
Requires (Dev)
- monolog/monolog: ^2.9
- phpunit/phpunit: ^10.5
- vlucas/phpdotenv: ^5.6
README
A very simple client for the OpenAI API.
Installation
composer require mathsgod/openai-client
Usage
Create a client instance with your API key.
use OpenAI\Client; $client=new Client("OPEN_API_KEY");
Chat completion
$data = $client->chatCompletions()->create([ "model" => "gpt-4o-mini", "messages" => [ ["role" => "user", "content" => "Hi"] ] ]); print_r($data);
Array
(
[id] => chatcmpl-1234
[object] => chat.completion
[created] => 1722324090
[model] => gpt-4o-mini-2024-07-18
[choices] => Array
(
[0] => Array
(
[index] => 0
[message] => Array
(
[role] => assistant
[content] => Hello! How can I assist you today?
)
[logprobs] =>
[finish_reason] => stop
)
)
[usage] => Array
(
[prompt_tokens] => 8
[completion_tokens] => 9
[total_tokens] => 17
)
[system_fingerprint] => fp_1234
)
Function call
$data=$client->chatCompletions()->create([ "model" => "gpt-4o-mini", "messages" => [ ["role" => "user", "content" => "What is the price of iphone14?"] ], "functions" =>[ [ "name" => "get_iphone_price", "description" => "Get the price of iphone", "parameters" => [ "type" => "object", "properties" => [ "model" => [ "type" => "string", "description" => "The model of the iphone" ] ], "required" => ["model"] ], ] ] ]); print_r($data);
Array
(
[id] => chatcmpl-1234
[object] => chat.completion
[created] => 1722324296
[model] => gpt-4o-mini-2024-07-18
[choices] => Array
(
[0] => Array
(
[index] => 0
[message] => Array
(
[role] => assistant
[content] =>
[function_call] => Array
(
[name] => get_iphone_price
[arguments] => {"model":"iPhone 14"}
)
)
[logprobs] =>
[finish_reason] => function_call
)
)
[usage] => Array
(
[prompt_tokens] => 60
[completion_tokens] => 19
[total_tokens] => 79
)
[system_fingerprint] => fp_1234
)
Images
Create image
print_r($client->images()->generations([ "model" => "dall-e-3", "prompt" => "a white siamese cat", "n" => 1, "size" => "1024x1024" ]));
Embeddings
print_r($client->embeddings()->create([ "model" => "text-embedding-3-small", "input"=>"I feel great", ]));
Audio
Speech
print_r($client->audio()->speech([ "model"=>"tts-1", "input"=>"Hello, how are you?", "voice"=>"alloy" ]));
Transcriptions
print_r($client->audio()->transcriptions([ "model"=>"whisper-1", "file"=>fopen('/path/to/audio.mp3', 'r') ]));
Translation
print_r($client->audio()->translation([ "model"=>"whisper-1", "file"=>fopen('/path/to/audio.mp3', 'r') ]));
Assistants
Create
$client->assistants()->create([ "model" => "gpt-4o-mini", ]);
List
$client->assistants()->list();
Retrieve
$client->assistants()->retrieve("asst_1234");
Delete
$client->assistant("asst_1234")->delete();
Threads
Create
$client->threads()->create(); //return Thread object
Messages
Create
$client->thread("thread_1234")->messages()->create([ "role" => "user", "content" => "Hello" ]);
Create with stream
$stream = $thread->runs()->createStream([ "assistant_id" => "asst_1234", ]); $stream->on("thread.message.delta", function ($data) { echo $data; echo "\n"; }); $stream->on("thread.message.completed", function ($data) { echo $data; echo "\n"; }); $stream->on("done", function () use (&$thread) { echo "End\n"; });
Example
$thread = $client->threads()->create([ "messages" => [ [ "role" => "user", "content" => "Hi" ] ] ]); $data=$thread->runs()->create([ "assistant_id" => "asst_1234", //assistant_id ]); print_r($data);