1. Go to this page and download the library: Download xp-forge/openai library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xp-forge / openai example snippets
use com\openai\rest\OpenAIEndpoint;
use util\cmd\Console;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$payload= [
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => $prompt]],
];
Console::writeLine($ai->api('/chat/completions')->invoke($payload));
use com\openai\rest\OpenAIEndpoint;
use util\cmd\Console;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$payload= [
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => $prompt]],
];
$stream= $ai->api('/chat/completions')->stream($payload);
foreach ($stream->deltas('content') as $delta) {
Console::write($delta);
}
Console::writeLine();
use com\openai\{Encoding, TikTokenFilesIn};
$source= new TikTokenFilesIn('.');
// By name => [9906, 4435, 0]
$tokens= Encoding::named('cl100k_base')->load($source)->encode('Hello World!');
// By model => [13225, 5922, 0]
$tokens= Encoding::for('omni')->load($source)->encode('Hello World!');
use com\openai\rest\OpenAIEndpoint;
use util\cmd\Console;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
Console::writeLine($ai->api('/embeddings')->invoke([
'input' => $text,
'model' => 'text-embedding-3-small'],
));
use com\openai\rest\OpenAIEndpoint;
use util\cmd\Console;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$payload= [
'input' => $input,
'voice' => 'alloy', // or: echo, fable, onyx, nova, shimmer
'model' => 'tts-1',
];
$stream= $ai->api('/audio/speech')->transmit($payload)->stream();
while ($stream->available()) {
Console::write($stream->read());
}
use com\openai\rest\OpenAIEndpoint;
use io\File;
use util\cmd\Console;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$file= new File($argv[1]);
$response= $ai->api('/audio/transcriptions')
->open(['model', 'whisper-1'])
->transfer('file', $file->in(), $file->filename)
->finish()
;
Console::writeLine($response->value());
// ...setup code from above...
$upload= $ai->api('/audio/transcriptions')->open(['model', 'whisper-1']);
$stream= $upload->stream('file', 'audio.mp3');
while ($in->available()) {
$stream->write($in->read());
}
$response= $upload->finish();
Console::writeLine($response->value());
use com\openai\rest\OpenAIEndpoint;
use util\log\Logging;
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$ai->setTrace(Logging::all()->toConsole());
// ...perform API calls...
use com\openai\tools\Param;
use webservices\rest\Endpoint;
class Weather {
private $endpoint;
public function __construct(string $base= 'https://wttr.in/') {
$this->endpoint= new Endpoint($base);
}
public function in(#[Param] string $city): string {
return $this->endpoint->resource('/{0}?0mT', [$city])->get()->content();
}
}
use com\openai\rest\OpenAIEndpoint;
use com\openai\tools\{Tools, Functions};
$functions= (new Functions())->register('weather', new Weather());
$ai= new OpenAIEndpoint('https://'.getenv('OPENAI_API_KEY').'@api.openai.com/v1');
$payload= [
'model' => 'gpt-4o-mini',
'tools' => new Tools($functions),
'messages' => [['role' => 'user', 'content' => $prompt]],
];
use util\cmd\Console;
// ...setup code from above...
$calls= $functions->calls()->catching(fn($t) => $t->printStackTrace());
complete: $result= $ai->api('/chat/completions')->invoke($payload));
// If tool calls are requested, invoke them and return to next completion cycle
if ('tool_calls' === ($result['choices'][0]['finish_reason'] ?? null)) {
$payload['messages'][]= $result['choices'][0]['message'];
foreach ($result['choices'][0]['message']['tool_calls'] as $call) {
$return= $calls->call($call['function']['name'], $call['function']['arguments']);
$payload['messages'][]= [
'role' => 'tool',
'tool_call_id' => $call['id'],
'content' => $return,
];
}
goto complete;
}
// Print out final result
Console::writeLine($result);
use com\mongodb\{Collection, Document, ObjectId};
use com\openai\tools\{Context, Param};
// Declaration
class Memory {
public function __construct(private Collection $facts) { }
public function store(#[Context] Document $user, #[Param] string $fact): ObjectId {
return $this->facts->insert(new Document(['owner' => $user->id(), 'fact' => $fact]))->id();
}
}
// ...shortened for brevity...
$context= ['user' => $user];
$return= $calls->call($call['function']['name'], $call['function']['arguments'], $context);
use com\openai\rest\AzureAIEndpoint;
use util\cmd\Console;
$ai= new AzureAIEndpoint(
'https://'.getenv('AZUREAI_API_KEY').'@example.openai.azure.com/openai/deployments/mini',
'2024-02-01'
);
$payload= [
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => $prompt]],
];
Console::writeLine($ai->api('/chat/completions')->invoke($payload));
use com\openai\rest\{AzureAIEndpoint, Distributed, ByRemainingRequests};
use util\cmd\Console;
$endpoints= [
new AzureAIEndpoint('https://[email protected]/openai/deployments/mini', '2024-02-01'),
new AzureAIEndpoint('https://[email protected]/openai/deployments/mini', '2024-02-01'),
];
$ai= new Distributed($endpoints, new ByRemainingRequests());
$payload= [
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => $prompt]],
];
Console::writeLine($ai->api('/chat/completions')->invoke($payload));
foreach ($endpoints as $i => $endpoint) {
Console::writeLine('Endpoint #', $i, ': ', $endpoint->rateLimit());
}
use com\openai\realtime\RealtimeApi;
use util\cmd\Console;
$api= new RealtimeApi('wss://example.openai.azure.com/openai/realtime?'.
'?api-version=2024-10-01-preview'.
'&deployment=gpt-4o-realtime-preview'
);
$session= $api->connect(['api-key' => getenv('AZUREAI_API_KEY')]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.