diff --git a/composer.json b/composer.json index 47fd6d3..d0e331d 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "hyperf/config": "~3.0.0", "hyperf/di": "~3.0.0", "hyperf/guzzle": "~3.0.0", - "openai-php/client": "^0.5.1" + "openai-php/client": "^0.6.0" }, "autoload": { "psr-4": { diff --git a/publish/openai.php b/publish/openai.php index a1ab56d..493ffec 100644 --- a/publish/openai.php +++ b/publish/openai.php @@ -11,6 +11,8 @@ use function Hyperf\Support\env; return [ + 'base_uri' => env('OPENAI_BASE_URI', 'api.openai.com/v1'), 'api_key' => env('OPENAI_API_KEY', ''), 'organization' => env('OPENAI_ORGANIZATION'), + 'request_timeout' => (int) env('OPENAI_REQUEST_TIMEOUT', 30), ]; diff --git a/src/ClientFactory.php b/src/ClientFactory.php index 8d5843f..4576fc5 100644 --- a/src/ClientFactory.php +++ b/src/ClientFactory.php @@ -21,20 +21,24 @@ final class ClientFactory { public function __invoke(ContainerInterface $container) { + $baseUri = config('openai.base_uri', 'api.openai.com/v1'); $apiKey = config('openai.api_key'); $organization = config('openai.organization'); + $timeout = config('openai.request_timeout', 30); if (! is_string($apiKey) || ($organization !== null && ! is_string($organization))) { throw ApiKeyIsMissing::create(); } + $httpClient = $container->get(GuzzleClientFactory::class)->create([ + 'timeout' => $timeout, + ]); + return OpenAI::factory() + ->withBaseUri($baseUri) ->withApiKey($apiKey) ->withOrganization($organization) - ->withBaseUri('api.openai.com/v1') - ->withHttpClient( - $container->get(GuzzleClientFactory::class)->create() - ) + ->withHttpClient($httpClient) ->make(); } }