BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
www
/
app.imagivibe.com
/
vendor
/
openai-php
/
laravel
/
src
📤 Upload
📝 New File
📁 New Folder
Close
Editing: ServiceProvider.php
<?php declare(strict_types=1); namespace OpenAI\Laravel; use Illuminate\Contracts\Support\DeferrableProvider; use Illuminate\Support\ServiceProvider as BaseServiceProvider; use OpenAI; use OpenAI\Client; use OpenAI\Contracts\ClientContract; use OpenAI\Laravel\Commands\InstallCommand; use OpenAI\Laravel\Exceptions\ApiKeyIsMissing; /** * @internal */ final class ServiceProvider extends BaseServiceProvider implements DeferrableProvider { /** * Register any application services. */ public function register(): void { $this->app->singleton(ClientContract::class, static function (): Client { $apiKey = config('openai.api_key'); $organization = config('openai.organization'); $project = config('openai.project'); $baseUri = config('openai.base_uri'); if (! is_string($apiKey) || ($organization !== null && ! is_string($organization))) { throw ApiKeyIsMissing::create(); } $client = OpenAI::factory() ->withApiKey($apiKey) ->withOrganization($organization) ->withHttpHeader('OpenAI-Beta', 'assistants=v2') ->withHttpClient(new \GuzzleHttp\Client(['timeout' => config('openai.request_timeout', 30)])); if (is_string($project)) { $client->withProject($project); } if (is_string($baseUri)) { $client->withBaseUri($baseUri); } return $client->make(); }); $this->app->alias(ClientContract::class, 'openai'); $this->app->alias(ClientContract::class, Client::class); } /** * Bootstrap any application services. */ public function boot(): void { if ($this->app->runningInConsole()) { $this->publishes([ __DIR__ . '/../config/openai.php' => config_path('openai.php'), ]); $this->commands([ InstallCommand::class, ]); } } /** * Get the services provided by the provider. * * @return array<int, string> */ public function provides(): array { return [ Client::class, ClientContract::class, 'openai', ]; } }
Save
Cancel