mathsgod/openai-client

A PHP client for OpenAI's API

2.0.5 2024-08-14 03:09 UTC

This package is auto-updated.

Last update: 2024-10-14 09:15:39 UTC


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);