fjffk简å�•的咖啡店科开å�‘2方法2 环æ»�皆山也。其西å�—诸峰,林壑尤美,望之蔚然而深秀者,ç�…ç�Šä¹Ÿã€‚山行六七里,æ¸�闻水声潺潺,而泻出于两峰之间者,酿泉也 ??????????????????????????????? ??????????????/????????????????? ............/................... .........................../... ??????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  Â¥2" ÿÄ     ÿÄ J    ! 1AQ"aqÂ�2‘#BR‚¡Ã�Ñ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3Â�±ð#b¡ÿÚ   ? ¼QxJQaÃ�uò¸Zö Úü8,Ã�Úú "SSn<rçù–´âE—^ªBÖ9À\†¸Â�ÔÂ�Ã�T­ÃÛ5 ëd´³Ã�#Ã�;Þ38ϔÂ� ¶H£M:wÃŽ3…³…âpÔF&‚FK¸9„â4àGEõªfÂ�ÿ ‘ñ(ßw­pŽF|È¥ù®häðÃ�Ѷ¹‘[Ã’inÙW¶ùñYËœQ{›K"išÒ[Ú8žë\F¹@-?v"ÔUâ€�,ìöžkÿ {I‡£šÃ�?e rÂ�íV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dsdfPKS%W]b+¨ñÍÍlaravel/src/Facades/OpenAI.phpnu„[µü¤ $responses */ public static function fake(array $responses = []): OpenAIFake /** @phpstan-ignore-line */ { $fake = new OpenAIFake($responses); self::swap($fake); return $fake; } } PKS%W]fuW³qq"laravel/src/Testing/OpenAIFake.phpnu„[µü¤ $data */ public static function render(string $path, array $data = []): void { $contents = self::compile($path, $data); $existing = Termwind::getRenderer(); renderUsing(self::$output); try { render($contents); } finally { renderUsing($existing); } } /** * Compiles the given view. * * @param array $data */ private static function compile(string $path, array $data): string { extract($data); ob_start(); $path = str_replace('.', '/', $path); include sprintf('%s/../../resources/views/%s.php', __DIR__, $path); $contents = ob_get_contents(); ob_clean(); return (string) $contents; } } PKS%W]K£S††'laravel/src/Commands/InstallCommand.phpnu„[µü¤ 'https://github.com/openai-php/laravel', 'OpenAI PHP Docs' => 'https://github.com/openai-php/client#readme', 'Join us on Telegram' => 'https://t.me/+66GDs6UM6RcxY2U8', ]; private const FUNDING_LINKS = [ 'Sponsor Sandro' => 'https://github.com/sponsors/gehrisandro', 'Sponsor Nuno' => 'https://github.com/sponsors/nunomaduro', ]; protected $signature = 'openai:install'; protected $description = 'Prepares the OpenAI client for use.'; public function handle(): void { View::renderUsing($this->output); View::render('components.badge', [ 'type' => 'INFO', 'content' => 'Installing OpenAI for Laravel.', ]); $this->copyConfig(); View::render('components.new-line'); $this->addEnvKeys('.env'); $this->addEnvKeys('.env.example'); View::render('components.new-line'); $wantsToSupport = $this->askToStarRepository(); $this->showLinks(); View::render('components.badge', [ 'type' => 'INFO', 'content' => 'Open your .env and add your OpenAI API key and organization id.', ]); if ($wantsToSupport) { $this->openRepositoryInBrowser(); } } private function copyConfig(): void { if (file_exists(config_path('openai.php'))) { View::render('components.two-column-detail', [ 'left' => 'config/openai.php', 'right' => 'File already exists.', ]); return; } View::render('components.two-column-detail', [ 'left' => 'config/openai.php', 'right' => 'File created.', ]); $this->callSilent('vendor:publish', [ '--provider' => ServiceProvider::class, ]); } private function addEnvKeys(string $envFile): void { if (! is_writable(base_path($envFile))) { View::render('components.two-column-detail', [ 'left' => $envFile, 'right' => 'File is not writable.', ]); return; } $fileContent = file_get_contents(base_path($envFile)); if ($fileContent === false) { return; } if (str_contains($fileContent, 'OPENAI_API_KEY')) { View::render('components.two-column-detail', [ 'left' => $envFile, 'right' => 'Variables already exists.', ]); return; } file_put_contents(base_path($envFile), PHP_EOL . 'OPENAI_API_KEY=' . PHP_EOL . 'OPENAI_ORGANIZATION=' . PHP_EOL, FILE_APPEND); View::render('components.two-column-detail', [ 'left' => $envFile, 'right' => 'OPENAI_API_KEY and OPENAI_ORGANIZATION variables added.', ]); } private function askToStarRepository(): bool { if (! $this->input->isInteractive()) { return false; } return $this->confirm(' Wanna show OpenAI for Laravel some love by starring it on GitHub?', false); } private function openRepositoryInBrowser(): void { if (PHP_OS_FAMILY == 'Darwin') { exec('open https://github.com/openai-php/laravel'); } if (PHP_OS_FAMILY == 'Windows') { exec('start https://github.com/openai-php/laravel'); } if (PHP_OS_FAMILY == 'Linux') { exec('xdg-open https://github.com/openai-php/laravel'); } } private function showLinks(): void { $links = [ ...self::LINKS, ...rand(0, 1) ? self::FUNDING_LINKS : array_reverse(self::FUNDING_LINKS, true), ]; foreach ($links as $message => $link) { View::render('components.two-column-detail', [ 'left' => $message, 'right' => $link, ]); } } } PKS%W]B£ÕI  laravel/src/ServiceProvider.phpnu„[µü¤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 */ public function provides(): array { return [ Client::class, ClientContract::class, 'openai', ]; } } PKS%W]0Bá‘¿¿laravel/composer.jsonnu„[µü¤{ "name": "openai-php/laravel", "description": "OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API", "keywords": ["laravel","php", "openai", "sdk", "codex", "GPT-3", "DALL-E", "api", "client", "natural", "language", "processing"], "license": "MIT", "authors": [ { "name": "Nuno Maduro", "email": "enunomaduro@gmail.com" } ], "require": { "php": "^8.2.0", "guzzlehttp/guzzle": "^7.9.3", "laravel/framework": "^10", "openai-php/client": "^0.15.0" }, "require-dev": { "laravel/pint": "^1.22.0", "pestphp/pest": "^3.8.2|^4.0.0", "pestphp/pest-plugin-arch": "^3.1.1|^4.0.0", "phpstan/phpstan": "^1.12.25", "symfony/var-dumper": "^7.2.6" }, "autoload": { "psr-4": { "OpenAI\\Laravel\\": "src/" } }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true, "preferred-install": "dist", "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true } }, "extra": { "laravel": { "providers": [ "OpenAI\\Laravel\\ServiceProvider" ] } }, "scripts": { "lint": "pint -v", "test:lint": "pint --test -v", "test:types": "phpstan analyse --ansi", "test:unit": "pest --colors=always", "test": [ "@test:lint", "@test:types", "@test:unit" ] } } PKS%W]E_> IIlaravel/LICENSE.mdnu„[µü¤The MIT License (MIT) Copyright (c) Nuno Maduro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PKS%W]º{>ö /laravel/resources/views/components/new-line.phpnu„[µü¤
PKS%W]Ùêf ¢¢,laravel/resources/views/components/badge.phpnu„[µü¤ ['blue', 'INFO'], 'ERROR' => ['red', 'ERROR'], }; ?>
PKS%W]d¾FLL8laravel/resources/views/components/two-column-detail.phpnu„[µü¤
PKS%W]p;Ÿ??laravel/config/openai.phpnu„[µü¤ env('OPENAI_API_KEY'), 'organization' => env('OPENAI_ORGANIZATION'), /* |-------------------------------------------------------------------------- | OpenAI API Project |-------------------------------------------------------------------------- | | Here you may specify your OpenAI API project. This is used optionally in | situations where you are using a legacy user API key and need association | with a project. This is not required for the newer API keys. */ 'project' => env('OPENAI_PROJECT'), /* |-------------------------------------------------------------------------- | OpenAI Base URL |-------------------------------------------------------------------------- | | Here you may specify your OpenAI API base URL used to make requests. This | is needed if using a custom API endpoint. Defaults to: api.openai.com/v1 */ 'base_uri' => env('OPENAI_BASE_URL'), /* |-------------------------------------------------------------------------- | Request Timeout |-------------------------------------------------------------------------- | | The timeout may be used to specify the maximum number of seconds to wait | for a response. By default, the client will time out after 30 seconds. */ 'request_timeout' => env('OPENAI_REQUEST_TIMEOUT', 30), ]; PKS%W]$õµWÃÃ'client/src/ValueObjects/ResourceUri.phpnu„[µü¤uri; } } PKS%W]]¯””/client/src/ValueObjects/Transporter/Headers.phpnu„[µü¤ $headers */ private function __construct(private readonly array $headers) { // .. } /** * Creates a new Headers value object */ public static function create(): self { return new self([]); } /** * Creates a new Headers value object with the given API token. */ public static function withAuthorization(ApiKey $apiKey): self { return new self([ 'Authorization' => "Bearer {$apiKey->toString()}", ]); } /** * Creates a new Headers value object, with the given content type, and the existing headers. */ public function withContentType(ContentType $contentType, string $suffix = ''): self { return new self([ ...$this->headers, 'Content-Type' => $contentType->value . $suffix, ]); } /** * Creates a new Headers value object, with the given organization, and the existing headers. */ public function withOrganization(string $organization): self { return new self([ ...$this->headers, 'OpenAI-Organization' => $organization, ]); } /** * Creates a new Headers value object, with the given project, and the existing headers. */ public function withProject(string $project): self { return new self([ ...$this->headers, 'OpenAI-Project' => $project, ]); } /** * Creates a new Headers value object, with the newly added header, and the existing headers. */ public function withCustomHeader(string $name, string $value): self { return new self([ ...$this->headers, $name => $value, ]); } /** * @return array $headers */ public function toArray(): array { return $this->headers; } } PKS%W]òÃ��¸¸0client/src/ValueObjects/Transporter/Response.phpnu„[µü¤> $headers * * @return Response */ public static function from(array|string $data, array $headers): self { // @phpstan-ignore-next-line $meta = MetaInformation::from($headers); return new self($data, $meta); } /** * Returns the response data. * * @return TData */ public function data(): array|string { return $this->data; } /** * Returns the meta information. */ public function meta(): MetaInformation { return $this->meta; } } PKS%W]Ÿ,J�––3client/src/ValueObjects/Transporter/QueryParams.phpnu„[µü¤ $params */ private function __construct(private readonly array $params) { // .. } /** * Creates a new Query Params value object */ public static function create(): self { return new self([]); } /** * Creates a new Query Params value object, with the newly added param, and the existing params. */ public function withParam(string $name, string|int $value): self { return new self([ ...$this->params, $name => $value, ]); } /** * @return array */ public function toArray(): array { return $this->params; } } PKS%W]ö¡Ô•  /client/src/ValueObjects/Transporter/Payload.phpnu„[µü¤ $parameters */ private function __construct( private readonly ContentType $contentType, private readonly Method $method, private readonly ResourceUri $uri, private readonly array $parameters = [], ) { // .. } /** * Creates a new Payload value object from the given parameters. * * @param array $parameters */ public static function list(string $resource, array $parameters = []): self { $contentType = ContentType::JSON; $method = Method::GET; $uri = ResourceUri::list($resource); return new self($contentType, $method, $uri, $parameters); } /** * Creates a new Payload value object from the given parameters. * * @param array $parameters */ public static function retrieve(string $resource, string $id, string $suffix = '', array $parameters = []): self { $contentType = ContentType::JSON; $method = Method::GET; $uri = ResourceUri::retrieve($resource, $id, $suffix); return new self($contentType, $method, $uri, $parameters); } /** * Creates a new Payload value object from the given parameters. * * @param array $parameters */ public static function modify(string $resource, string $id, array $parameters = []): self { $contentType = ContentType::JSON; $method = Method::POST; $uri = ResourceUri::modify($resource, $id); return new self($contentType, $method, $uri, $parameters); } /** * Creates a new Payload value object from the given parameters. */ public static function retrieveContent(string $resource, string $id): self { $contentType = ContentType::JSON; $method = Method::GET; $uri = ResourceUri::retrieveContent($resource, $id); return new self($contentType, $method, $uri); } /** * Creates a new Payload value object from the given parameters. * * @param array $parameters */ public static function create(string $resource, array $parameters): self { $contentType = ContentType::JSON; $method = Method::POST; $uri = ResourceUri::create($resource); return new self($contentType, $method, $uri, $parameters); } /** * Creates a new Payload value object from the given parameters. * * @param array $parameters */ public static function upload(string $resource, array $parameters): self { $contentType = ContentType::MULTIPART; $method = Method::POST; $uri = ResourceUri::upload($resource); return new self($contentType, $method, $uri, $parameters); } /** * Creates a new Payload value object from the given parameters. */ public static function cancel(string $resource, string $id): self { $contentType = ContentType::JSON; $method = Method::POST; $uri = ResourceUri::cancel($resource, $id); return new self($contentType, $method, $uri); } /** * Creates a new Payload value object from the given parameters. */ public static function delete(string $resource, string $id): self { $contentType = ContentType::JSON; $method = Method::DELETE; $uri = ResourceUri::delete($resource, $id); return new self($contentType, $method, $uri); } /** * Creates a new Psr 7 Request instance. */ public function toRequest(BaseUri $baseUri, Headers $headers, QueryParams $queryParams): RequestInterface { $psr17Factory = new Psr17Factory; $body = null; $uri = $baseUri->toString() . $this->uri->toString(); $queryParams = $queryParams->toArray(); if ($this->method === Method::GET) { $queryParams = [...$queryParams, ...$this->parameters]; } if ($queryParams !== []) { $uri .= '?' . http_build_query($queryParams); } $headers = $headers->withContentType($this->contentType); if ($this->method === Method::POST) { if ($this->contentType === ContentType::MULTIPART) { $streamBuilder = new MultipartStreamBuilder($psr17Factory); /** @var array> $parameters */ $parameters = $this->parameters; foreach ($parameters as $key => $value) { if (is_int($value) || is_float($value) || is_bool($value)) { $value = (string) $value; } if (is_array($value)) { foreach ($value as $nestedValue) { $streamBuilder->addResource($key . '[]', $nestedValue); } continue; } $streamBuilder->addResource($key, $value); } $body = $streamBuilder->build(); $headers = $headers->withContentType($this->contentType, '; boundary=' . $streamBuilder->getBoundary()); } else { $body = $psr17Factory->createStream(json_encode($this->parameters, JSON_THROW_ON_ERROR|JSON_UNESCAPED_UNICODE)); } } $request = $psr17Factory->createRequest($this->method->value, $uri); if ($body instanceof StreamInterface) { $request = $request->withBody($body); } foreach ($headers->toArray() as $name => $value) { $request = $request->withHeader($name, $value); } return $request; } } PKS%W]di›??/client/src/ValueObjects/Transporter/BaseUri.phpnu„[µü¤baseUri, $protocol)) { return "{$this->baseUri}/"; } } return "https://{$this->baseUri}/"; } } PKS%W]B@9w))"client/src/ValueObjects/ApiKey.phpnu„[µü¤apiKey; } } PKS%W]Bdá--client/src/Factory.phpnu„[µü¤ */ private array $headers = []; /** * The query parameters for the requests. * * @var array */ private array $queryParams = []; private ?Closure $streamHandler = null; /** * Sets the API key for the requests. */ public function withApiKey(string $apiKey): self { $this->apiKey = trim($apiKey); return $this; } /** * Sets the organization for the requests. */ public function withOrganization(?string $organization): self { $this->organization = $organization; return $this; } /** * Sets the project for the requests. */ public function withProject(?string $project): self { $this->project = $project; return $this; } /** * Sets the HTTP client for the requests. * If no client is provided the factory will try to find one using PSR-18 HTTP Client Discovery. */ public function withHttpClient(ClientInterface $client): self { $this->httpClient = $client; return $this; } /** * Sets the stream handler for the requests. Not required when using Guzzle. */ public function withStreamHandler(Closure $streamHandler): self { $this->streamHandler = $streamHandler; return $this; } /** * Sets the base URI for the requests. * If no URI is provided the factory will use the default OpenAI API URI. */ public function withBaseUri(string $baseUri): self { $this->baseUri = $baseUri; return $this; } /** * Adds a custom HTTP header to the requests. */ public function withHttpHeader(string $name, string $value): self { $this->headers[$name] = $value; return $this; } /** * Adds a custom query parameter to the request url. */ public function withQueryParam(string $name, string $value): self { $this->queryParams[$name] = $value; return $this; } /** * Creates a new Open AI Client. */ public function make(): Client { $headers = Headers::create(); if ($this->apiKey !== null) { $headers = Headers::withAuthorization(ApiKey::from($this->apiKey)); } if ($this->organization !== null) { $headers = $headers->withOrganization($this->organization); } if ($this->project !== null) { $headers = $headers->withProject($this->project); } foreach ($this->headers as $name => $value) { $headers = $headers->withCustomHeader($name, $value); } $baseUri = BaseUri::from($this->baseUri ?: 'api.openai.com/v1'); $queryParams = QueryParams::create(); foreach ($this->queryParams as $name => $value) { $queryParams = $queryParams->withParam($name, $value); } $client = $this->httpClient ??= Psr18ClientDiscovery::find(); $sendAsync = $this->makeStreamHandler($client); $transporter = new HttpTransporter($client, $baseUri, $headers, $queryParams, $sendAsync); return new Client($transporter); } /** * Creates a new stream handler for "stream" requests. */ private function makeStreamHandler(ClientInterface $client): Closure { if (! is_null($this->streamHandler)) { return $this->streamHandler; } if ($client instanceof GuzzleClient) { return fn (RequestInterface $request): ResponseInterface => $client->send($request, ['stream' => true]); } if ($client instanceof Psr18Client) { // @phpstan-ignore-line return fn (RequestInterface $request): ResponseInterface => $client->sendRequest($request); // @phpstan-ignore-line } return function (RequestInterface $_): never { throw new Exception('To use stream requests you must provide an stream handler closure via the OpenAI factory.'); }; } } PKS%W]¿!ÃÃclient/src/OpenAI.phpnu„[µü¤withApiKey($apiKey) ->withOrganization($organization) ->withProject($project) ->withHttpHeader('OpenAI-Beta', 'assistants=v2') ->make(); } /** * Creates a new factory instance to configure a custom Open AI Client */ public static function factory(): Factory { return new Factory; } } PKS%W]�œÅ0+client/src/Testing/Requests/TestRequest.phpnu„[µü¤ $args */ public function __construct(protected string $resource, protected string $method, protected array $args) {} public function resource(): string { return $this->resource; } public function method(): string { return $this->method; } /** * @return array */ public function args(): array { return $this->args; } } PKS%W]ÞÔš88!client/src/Testing/ClientFake.phpnu„[µü¤ */ private array $requests = []; /** * @param array $responses */ public function __construct(protected array $responses = []) {} /** * @param array $responses */ public function addResponses(array $responses): void { $this->responses = [...$this->responses, ...$responses]; } public function assertSent(string $resource, callable|int|null $callback = null): void { if (is_int($callback)) { $this->assertSentTimes($resource, $callback); return; } PHPUnit::assertTrue( $this->sent($resource, $callback) !== [], "The expected [{$resource}] request was not sent." ); } private function assertSentTimes(string $resource, int $times = 1): void { $count = count($this->sent($resource)); PHPUnit::assertSame( $times, $count, "The expected [{$resource}] resource was sent {$count} times instead of {$times} times." ); } /** * @return mixed[] */ private function sent(string $resource, ?callable $callback = null): array { if (! $this->hasSent($resource)) { return []; } $callback = $callback ?: fn (): bool => true; return array_filter($this->resourcesOf($resource), fn (TestRequest $resource) => $callback($resource->method(), ...$resource->args())); } private function hasSent(string $resource): bool { return $this->resourcesOf($resource) !== []; } public function assertNotSent(string $resource, ?callable $callback = null): void { PHPUnit::assertCount( 0, $this->sent($resource, $callback), "The unexpected [{$resource}] request was sent." ); } public function assertNothingSent(): void { $resourceNames = implode( separator: ', ', array: array_map(fn (TestRequest $request): string => $request->resource(), $this->requests) ); PHPUnit::assertEmpty($this->requests, 'The following requests were sent unexpectedly: ' . $resourceNames); } /** * @return array */ private function resourcesOf(string $type): array { return array_filter($this->requests, fn (TestRequest $request): bool => $request->resource() === $type); } public function record(TestRequest $request): ResponseContract|ResponseStreamContract|string { $this->requests[] = $request; $response = array_shift($this->responses); if (is_null($response)) { throw new Exception('No fake responses left.'); } if ($response instanceof Throwable) { throw $response; } return $response; } public function responses(): ResponsesTestResource { return new ResponsesTestResource($this); } public function realtime(): RealtimeTestResource { return new RealtimeTestResource($this); } public function completions(): CompletionsTestResource { return new CompletionsTestResource($this); } public function chat(): ChatTestResource { return new ChatTestResource($this); } public function embeddings(): EmbeddingsTestResource { return new EmbeddingsTestResource($this); } public function audio(): AudioTestResource { return new AudioTestResource($this); } public function edits(): EditsTestResource { return new EditsTestResource($this); } public function files(): FilesTestResource { return new FilesTestResource($this); } public function models(): ModelsTestResource { return new ModelsTestResource($this); } public function fineTunes(): FineTunesTestResource { return new FineTunesTestResource($this); } public function fineTuning(): FineTuningTestResource { return new FineTuningTestResource($this); } public function moderations(): ModerationsTestResource { return new ModerationsTestResource($this); } public function images(): ImagesTestResource { return new ImagesTestResource($this); } public function assistants(): AssistantsTestResource { return new AssistantsTestResource($this); } public function threads(): ThreadsTestResource { return new ThreadsTestResource($this); } public function batches(): BatchesTestResource { return new BatchesTestResource($this); } public function vectorStores(): VectorStoresContract { return new VectorStoresTestResource($this); } } PKS%W](º{;ÜÜ2client/src/Testing/Responses/Concerns/Fakeable.phpnu„[µü¤ $override */ public static function fake(array $override = [], ?MetaInformation $meta = null): static { $class = str_replace('OpenAI\\Responses\\', 'OpenAI\\Testing\\Responses\\Fixtures\\', static::class) . 'Fixture'; return static::from( self::buildAttributes($class::ATTRIBUTES, $override), $meta ?? self::fakeResponseMetaInformation(), ); } /** * @return mixed[] */ private static function buildAttributes(array $original, array $override): array { $new = []; foreach ($original as $key => $entry) { $new[$key] = is_array($entry) ? self::buildAttributes($entry, $override[$key] ?? []) : $override[$key] ?? $entry; unset($override[$key]); } // we are going to append all remaining overrides foreach ($override as $key => $value) { $new[$key] = $value; } return $new; } public static function fakeResponseMetaInformation(): MetaInformation { return MetaInformation::from([ 'openai-model' => ['gpt-3.5-turbo-instruct'], 'openai-organization' => ['org-1234'], 'openai-processing-ms' => ['410'], 'openai-version' => ['2020-10-01'], 'x-ratelimit-limit-requests' => ['3000'], 'x-ratelimit-limit-tokens' => ['250000'], 'x-ratelimit-remaining-requests' => ['2999'], 'x-ratelimit-remaining-tokens' => ['249989'], 'x-ratelimit-reset-requests' => ['20ms'], 'x-ratelimit-reset-tokens' => ['2ms'], 'x-request-id' => ['3813fa4fa3f17bdf0d7654f0f49ebab4'], ]); } } PKS%W]gݧëTTEclient/src/Testing/Responses/Concerns/FakeableForStreamedResponse.phpnu„[µü¤createStreamFromResource($resource); $response = Psr17FactoryDiscovery::findResponseFactory() ->createResponse() ->withBody($stream); return new StreamResponse(static::class, $response); } } PKS%W]6C££Mclient/src/Testing/Responses/Fixtures/Assistants/AssistantResponseFixture.phpnu„[µü¤ 'asst_SMzoVX8XmCZEg1EbMHoAm8tc', 'object' => 'assistant', 'created_at' => 1_699_619_403, 'name' => 'Math Tutor', 'description' => null, 'model' => 'gpt-4', 'instructions' => 'You are a personal math tutor.', 'tools' => [], 'tool_resources' => [], 'metadata' => [], 'temperature' => 0.7, 'top_p' => 1.0, 'response_format' => 'text', ]; } PKS%W]Èï€ôôQclient/src/Testing/Responses/Fixtures/Assistants/AssistantListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'asst_SMzoVX8XmCZEg1EbMHoAm8tc', 'object' => 'assistant', 'created_at' => 1_699_619_403, 'name' => 'Math Tutor', 'description' => null, 'model' => 'gpt-4', 'instructions' => 'You are a personal math tutor.', 'tools' => [], 'tool_resources' => [], 'metadata' => [], 'temperature' => 0.7, 'top_p' => 1.0, 'response_format' => 'text', ], ], 'first_id' => 'asst_SMzoVX8XmCZEg1EbMHoAm8tc', 'last_id' => 'asst_SMzoVX8XmCZEg1EbMHoAm8tc', 'has_more' => false, ]; } PKS%W]9­ÄSclient/src/Testing/Responses/Fixtures/Assistants/AssistantDeleteResponseFixture.phpnu„[µü¤ 'asst_SMzoVX8XmCZEg1EbMHoAm8tc', 'object' => 'assistant.deleted', 'deleted' => true, ]; } PKS%W]³Þ*PKclient/src/Testing/Responses/Fixtures/Moderations/CreateResponseFixture.phpnu„[µü¤ 'modr-5MWoLO', 'model' => 'text-moderation-001', 'results' => [ [ 'categories' => [ 'hate' => false, 'hate/threatening' => true, 'harassment' => false, 'harassment/threatening' => false, 'self-harm' => false, 'self-harm/intent' => false, 'self-harm/instructions' => false, 'sexual' => false, 'sexual/minors' => false, 'violence' => true, 'violence/graphic' => false, ], 'category_scores' => [ 'hate' => 0.22714105248451233, 'hate/threatening' => 0.4132447838783264, 'harassment' => 0.1602763684674149, 'harassment/threatening' => 0.1602763684674149, 'self-harm' => 0.005232391878962517, 'self-harm/intent' => 0.005134391873962517, 'self-harm/instructions' => 0.005132591874962517, 'sexual' => 0.01407341007143259, 'sexual/minors' => 0.0038522258400917053, 'violence' => 0.9223177433013916, 'violence/graphic' => 0.036865197122097015, ], 'flagged' => true, ], ], ]; } PKS%W]:Y}r × ×?client/src/Testing/Responses/Fixtures/Audio/speech-streamed.mp3nu„[µü¤ÿóäÄb<9¸YÀ6–3€US%s޳¾ó®3\°ÀÖÉŠ©ÃiëÉó™ÒØ)v|YC$s2ר:C–̳k<(Þç4¦z”!:$ ÐcÍÎ%\iȘê'±pa{<Ķ|!©†æŒ !q˾YrÍ  —ÓF/FÇa†(B"¢‚2È}Ûklí¯Ãôò·mv*EØâR»líÇŽ,:ÇgjfYó*Mi:†^m*ÏK&ÚÛ_£vØz™¡,¶e“,Ú?ÃIŽÛ²î�\K_ú8ÜÒä.àa: Ô$#äÒÒ峌Îs”R88؃ °ºbBl¸ênýÓ¾êÞZ³Î8@ÜÃ@‹á¬;/’"yeÀ!-—½ü-!h F�î½J¬ ׺ªJ;CZœ,‚ 9%«7@árŒÄ0‹¯û�ä;’ɶ¶ÎáäL3œÊ…0$ ˆ8[t]r9CùŒ?Ž\?oþ½¸âÂ-×\_9\7/”3¶¿<à%áw Àµ™lÓ*ÓÜvøv€Bb"ƒžr:y0Pa‚ŒšiÙ÷- Ê-˜È:ß2”“}M4³«JU…ÿlàmà 1„£R13ƒ¶o?V$* Ñ¡ð}ÿóäÄJy”:0›ØÎ‡FkTgŽìÒ~�ÃçÍtvKGz¦bElRfÌŠd� ÁÃ)Dq/KÐ}Öi†è„aBhLd¡†0Pb§aPƒ,è銌‰$„NýúYø8Ó€«��B q!1À!Šà1Ñ¢ê,ÀH¡„ @I€¥òçâ î`Ö È˜ÇHID�ÁC†(4 DL*á2…£Ù†�¿¦˜dÕX:ì–NJK³Ì¡’HÍ8èÄED(�bs @Œ˜Hªl¤ÆbD 3`32²£I01˜(tÀHA·ŸlË(ÔQ{öãÏB£†c¡i€,D`�ÊZ!/�`(``¥F@Hc4 1q=2¹‘AûqˆbqåQNßÂAn‘–CÆƆ_n( ²# -`yˆÄQ¨»©` 1Ñ´K/(ÁÀ.à0ÁÄ ËE²;èv,Š1 Š–Dª$©Qè ø±|‡*Hȸä0<)1üš1åt:Ò•:T¤4 r3Ä„8`…2”3Qá4Ψ2�ç1ðM28¡2tê&…ÿóäÄ6_\:NÝÈ�ò ÐÁ`N|‚fZõ³PP©É ÉC€a³Ä™�¦)¬š¥2¾;u=`”M:”¸(T&V÷…@UµDaˆ Â$(� �.r©È”ë”Ñ?KµaUÌ©þ‡¢Ô´ÞÿJëF¥øLÇ£ïú°*TŠ%AE� p \2Àç¡û­y¯Ý¥gí!ÉžLÆ–° M¶fb@‚D/S U­ºÕiÉj®\X̵Ù]™ë‘×eÉq_ØÎ1÷õ¬µÙlš††A”ü5Z4ךó:aÎíWeé†fyœjv4ý?Õ¥ÏóÌû3—¥x�ØÜ®’[KÅZt‘õ´ÑÙC†Ò–ª3Wí’¶ì­ê‡!ö)Ê]I=¸)Õ~¥÷b±˜6S |áOìË`Xzyº¶® ® x]·qȉ¸°ÌAèv㲨£[�¥Ž8�¼ ÿ5Øô<ùÃó¹C `?$a2žb’¨hj"  d·ƒ°b”d% ~` ‡ôa€Þ`æ Jcu `"…€a2�¼`.²`+rs@æ ži&BÐ4üZevHcãÀ óHe5€ÑaÛ0èÉ‘¤�Ú!Éê>aÙÉŠM‰´ÐtÓÍ88ã[Œ,(ØYÂÀÃ@Åå1ÿóäÄ‹w<9üþô”ÃG ±›plcšYŸÉ¤–B@ ý º»¶¹KQ¿v"�Ò¤„.‡×ÄUjKr€AÀav‹œÌ ÀC@B Dap`˜D$  `q` 0|%ðhÐ- Gò¨:˜L†%é0)€£@Ñ€ƒA•CAqÀ°ÂðxÀàc‚›Ê!ŠPè6c{ªvÿêqÊ^eá¼"ÌCƒÂ üÃÀlÄ€ôÅT40¼0`S100ˆW1„z2Tˆ1Ü`B" „ÃÅð,h£&YÿóäÄNsD:,­ÝØ4f’FZk¤æ¾Šr,çÆo¡fŠc¥frŠ”fŒÆœ,e†°„`&Úr4‚8T 0Ós1tX1€Ó1à@0¬ÐR̤,À€Œpp!X Œøx²‚ 2!£1�²A“?E2qT[&鉎˜èùqŒ4T&¢Æ »AÀê"\„0 X€e'À €çÈ@*c¡ñ‡@2"${Ü k½¯ÃWXšò/â6;«5 PrÛÊš)��‡±UƒTì�K × ¯¬�‚–ýh!£qL6ÄY@Pœµ†ê°ò6�º‡%¯ ½{H„„d”ÏIuË^Ù hî¡-5áÛoã,›‡›£ x6òÄep¹ZWŒAÒØ›¦ÿÊ4ÿ7xÿ2è²ê ÷]€C¯kMX® w…¼PI„A—`¨ew½ÌEË•: ÉÊiëUH¯èjÄf^÷:‘7ö•Úšòîw›´1:ѹt~…®fÕ†ÌÙ‰6ú¤ÌDlÆü§LhEDÑ”žŒ€Q”ÔåwMPÎÌÆŒBÌVCdÀ”9L}ÌÜËÌŒï“0Î0FŒÁ\Åæ“W³M†O2±xÇÆC7 ¤ ÀÓ‡`ÃL÷ÿóäÄTq„:0÷2˜2ÙTÄ C!ÐŽíÞ1¢´3Va£ŽS&›$šX‹7 ,=˜MapR¢ŒÚ*1H@T�dj O˜ü’˜l< �\e~pF𸉂0� 2p[”†,;HDP1F)ˆOð¸ÈÌÇNVz¿0k%ì$Rüi$Â-š“˜%@I‡Ð¦ZñKpm]Ú4šJç –U ­‰ D¬®*†5Ô�¸ï¤ŠÝZE®_Kü³( [ì)Ζ¯챤«tI RéLûMz3NVM»Ómù·ì‰º£êÊAåöà—�³Z�Šò`ÐÜ�1�—eÅ‘5õyÀÏ«3jó`‚–e!ŸÙ:ñjmë™rYÚ&ä¶Þ¨y‘ «Q0.ëh­9¦G]Hi•1A” ™µªÇ¡»QéCX|ˆü] òS"q%­B&Ù ùDî@Œ™z¦= L•Ä�GUûJN�“<ŠR�À€DÁ¡TÉä¤ñpl8ö¥ªH£#îcèt3DÉQ$]4Å`&„žd"äÀK ²F`,üfà \`¸a�¯jùò˜Ú%GÄFh$jä&$@(*dÿóäÄahŒ:`îò’„E¥â`'A0î±uÍB S@ §(¡¦N@¶i�#ŸÕ|EáCEÔ.ã@@a†ZfXº&˜�’`Ž0¶lH*Jš5í¢rn_AN<+�N_ÖÁ0Y“C`MmV: ì/Ötî@P²Ò& 9ÖìäAñ‡&iðk1ªl_øyå†�¸…‡"Zã90§5¹<,Ñ‹¹pcîõ½ ÝÍ·+}ZS?]—ñaö]§J òF^w¡ÙÉ]ÌA±§Êzäù?�EçN‹JêÀÔÎt¾�´·nZÜ”0TVF[÷m•�‚a¡Òî&JõºŸO`e†0Ç,ÂÕb1Å$‘ ]­©’tD‰ˆ¨(¡‰@š`gÐ\h"ö� %º_1ŠuÖ»'Pòê˜$0ÐP�qÆHH¼¬&8€d r¨‹v -žU@$Ôip°ÐX( 0H°Ë”³O 0aÓ  3`I0Ë#’Î6Oó1�TÍ2ã)Ì2R6·Lheç4S¥[�e¹¹  щ%›EIþwŸ›1Ç™8$yá$Ì=èØ 8Bb¥†Ov¥g$˜d bÁ¦ Dh(B~jÂÿóäÄ‘b”:Hç¶(6:\_(‚]i|,¤”蘔(ç^$೗ɲÌȧ]Ôª‚T—=XšÁ…Š-µîa‚†H ¦€°‰&ÃÜÚÀ"‡4‰f3®[°Ë§» PJ'é®ò5KWR׿“+qžPV­ZS†_Ùl¦íìipÊÔ»ªÓÖi«g„õ{Ò¨j].½jüªÕÉš Üš±’ORÃPŠtaQèzäu ¼� eëwã-ÖˇA ¾YðÔBD™²¨´ý<Ã_m¼7¢lù¬?ò螉eár9-vZÄÔ=r'fàyS/¼Î{ÐÂ#Oüº�?°Cv"2ØËñvLAME3.100UUUUUUUUUUUUUUUUUUUU0)ã pÉ€:†9ƒ‚|&!úóf˜N‹ “†ü×]™¦‡é�* %—P i0G*ðh`‘çyÒ’:Á– ¢Š`ÀŽY‡”˜ˆ‚?–È`ÀŒDœã(Í`XÕP‹ÄA†�F|ݧPŽ:a"„�¦(blÓ'¢¡â@ôX‚ÌÖÒƒ�ÜŸ`‚¸ŽóôÒaդП٫qš sq~¦™SÍ,C$Ön*•„¤Š+y ÿóäļcÜ:,÷v(�¢qx‘ìÄHŒœ°Ëʈ€€+Ð*a Æ�2‡)ëX®,;EW Þ‡ŸéëÒ«R™ÚYß”ò#f¶õùwÇzÇ_ÞóëeÚ\y¬ñ«K¬é#Yvõ,3; _�CÑÖ³=‘ô¯:gNU˜“:zYË-`LºýjðNƒV +U‘ö´“ªžÖ d ,Fí@ÑÕmBJ`Èå5aÛ°êÒ~ÚK½2ÈQ4¸¨ªÉh¡K™1�y–"‘9:”($¼™²˜©Š@*õ`•ó*KâÙ ´žƒªLAME3.1000` ¶c) ²`Õpaâ€ðcVb4 jW 0c†ža‹$`’|`V„6aD*a �` „`Y€\Q ÒŒaæœ(4‘…L$<Á!‹ªb@£$6aBd˜‚&�1iÁƒ*÷ `Ê:#�L1Ò"íe£;æœ$g°ô1¨Ž)7YQsº *ZÂ"“VtÀW%È•PBmAÓÈE5 ¬,�ªE›Š¨1Y(Q'iŒCj„Ò„nXfl‰ñ#¦5™&•,ÉC9Ù}кXK̘Î*A—U3Ø¥ˆ‚U<š¢ÿóäÄörT9Øþ°˜É:˜€�ŸÆ'´ÃzÌ|Ež¯Ä©ˆ¬ˆ£$r"P—Bt ',À$Ïcé à¯u¬µ’¡½`K™0¡2÷…®f�Ä—T©©5™¨»_¥¾²é@—šH±†´¬ë¡îNW=@SI‡™P”hณ‰òHäGHÖžæXiÉÌÑ`ñËêªêiR_�‚ÊPQäª0Q„¾ª…ïARç/ôØZ0K,�I�a`rÚòqÖ�„ðˆHiÄ€ád¤ýRÕºà  àÅ—Ò á5ôd5‘ZêLAMEªœ >ÛÐÄELN…ü°Œ0�ˆÅ|AL:ÍŒÈ0= >†ØÊÑÌéÊìÉüÚÌDËTËÌéÍlÊ$\ÌRElÄdLD Å|CÌÂè#&ÃË`Æ(I’�ùc‚�ê"y!Û™k F¨nÄ+Ã쨽"�%¡†rÊc’él€‹œ$l Š [ÐQ¦@‘ !ÐU€ó(È1@‚‚[`‰$F Px ((‚s€PéÌ`s@i�xS½1ÄE�FŒYÓ90ÃÈ–\�‚6¤1j‰¶m@‘XÍ)/ºÁ¢´âƒOöŒ½ŒcP�‘²P+ÿóäÄúsT9Ä öpÜ æË•z —º€†¤X÷à^BXâ"¤ˆ€ó*hC>,‚¸Geâ€a@ éP;%cHkÎ_fÑ2W¹5¤%¤¶8},Œj$³Ž*ê@| : 0áÀÁSF$À\¶Cq÷_¨ˆšì"@T+æ]!⇼‰Â\'�Uúw°ÇÝ=Q5¬¤4Ii$ÃCŔ䭂a@¬Íh§[4Gîá-k«Å·&¸¶ D€'!«�C]ÒuTSMLÕ+þ^ÖJ»ŒToãnH<ˆðȹZ40ÉêLAME3.100ž mD@Ï1ìL�NœÙ¶¬ÚtT̳ˆàðÀ hêùØæK¼Á �ààÄÕC Ðç¤ÈF´Ç¼Ô#”ÒŒȱÈ@˜¤'˜ /ÑDKšÙ„`CTÃÜAVIÊCSdó$�@ãÀÉ `]àïÐðµÀ73.)¦Ñ¬u€ÃÀ+�\aÌf¨5`$MrÍ‚†$P`hª�HN2� ¤” ŒòRF ºY¦"Æ·Õd6Ò“%2‰—V($*…Š©Sœ:eä‡d’_Èž_2豈°MÍUT¸@z€-o™ò°®†î<REcSùœ¸¯ûôê½�m/šú]Ä™r�²É¥òü.‚ê^©Vç‡þ=EËfŒÙÿtRN»/p”¡×u]Æõu'ÒýyY£tP…aJQç Ý�úÇkn¢aª‚ ¥ÿF�5¦�èÔ`@`PŠæ ‚fµŒ5²x'éÌÉ•„®„8_B`�0"1ŒT(M73æ™Ä=.Ð4 †f š&n”&CÆ€¥¬77Œ+I‚ KÚŒà Ù‚ÀÁ`hë¹|ÖqÔƒÂ_¯£üð¶ÁP t †C *54´7q‚2í-8à74œR6ÑB§ù3÷C•8S_€à<0'P’ۥɘ#@°²dq4fb¨`“Bn9¢hIË~Ë‹-¯ †`y|ïÇ^ñàT¾F  Fl �a€Ä!ÌÌQ¼ÏÒìÌ¥øÊ�\Õ@î3…©Ü1ÿóäÄÿ{œ: �è±vŽæ8µU/ Ú² ¬wÙ’.Æ~�e¿4L£28¢%'„hñäe82bðÌ LV D‹s#ãJ�¥œµ3{”˜Eè­Gù.—§¢¼¼—!ƒ»q)b¼‹¼�-c-“5Js!°äœÆÁ F&+˜*‹ ÁÐÄÐôˆB`8^"­Å°Ë;7êöW¹ªXÌ®ÍiÄCí'C‘3K»-}›AË jP…Y®„€]ñfo$‰† #E †àÙ„A0P"€æF Cè@¬dhcpÈ`¨fa&\à ÃQ¶`ˆTa�<`0ƒLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUU€°¦McdÄ+†1 6g c›'¶e0f âðd¦—’,k¤æd§Xa~KæJChjmF½@èa† † @À` f-¡Dc\æ èa.æÀÐb@&=¢¼b`+¦Þf6‡†7BD>F}ÆN†k­fºš €Æ!„ÈÑÔÂQ°a˜~  £SŒC H00daøha€`BÌ0BáY€ 9@:$,˜ d@Ñe£h´’Ê¢Èò×$æÿóäÄÀdä:4¡ÞèŽ3v€ÄÜ5ã¿­-aÙâú*C#À˜¡Á€€!@*šâ€Z 15'Pâ®UUÌm¦¼Ühal©îƒ/¶«¶SÊÚ¿Z )k¸¶Ê–3j‹^ŒËq¹ZÔj×f]–³]ŒÆe6yrUK�Ù«f´ª%«rv�§ú]w »ŒÍ-îe¼«jÞée0í®óšæ34¶»üÆÍëÖyË4¶~äºzôÅkö÷w*”÷íT¤©SV·•T×÷ˆË%0ÌÍZkR©ª¼îUªgWuYlFS»jj—[¥Ç:j5LAME3.100UUUUUUæc bÁra F3ð@d~† à^` ÆG'VcV!f!ØaŠÆ„f´ô@«¶eôc!–dú€§ý&æÃ !tÁÑðÉE¬Ò´ØÍ2€È³TÕt<…g6Y½9Bk5ú 4²â1 ‹9šŒ3„�4ïÉäë–Ó Ønir=�û¿a�ËÚCñ¿ð{¹¨Ê!–WµˆL-¯Ì·7öe’–ŸJxÜüû¿NüF)*W›—Æ¡ˆÅ<®¤®$×(³ÕJMC‹5æá¼ùRJḴì7RmLAMH Aà`¾¦Ædm˜…f'@àLF`f(x¦`¦`¶Fö`cÆ�ÈcŠ-€]1�ÃgÉ1´h0Œ1P±1`2¼Hˆ&•¦jÞ¦æ!…Ár”Ûú´ÜBäÍàdűøÖLXËÿLõëDÖ6pÎé ê£0×´¸ÏSǰøÆgèÛS€ÈSÉc(ͧ°ØiäÂxÍq@Ó7”Þ“�ÐÁ$ÅA<À‘ÅQpÁ¬\)•&eÝ‚kЂ8ÇŸ �tÍIºXäØL##,ˆÜ;h]Á¦pF Ý¯6FÌÐ2á„€_ Vì%z¦Ó™ò€Ã*^ÿóäÄüsä:=D÷t´¢-º°˜‘dÀЦ Àä!A††Œ „—"Š^ÅS4§�†³g호Õå�VÿÇcqéUYcÔñÉv¦ibR+2ëq™Ù¨z¼¦ŠS-ÕªyL¦¬SOÌÆkSSC6_ÙNz·%½v#3gbCÊ qÊ9‡f_Àòø¬Üü¿(z ¥†1½/—K¯LÃ]~b¸ÃÐÅHË»~!ˆÄÔ4ÿ» ­ükA^&æÓÖ‚§@U4GÕ*B(Ás§”ûæ\òDÿeí}@TÝh¤B,äpRJj¿�ðÕ0&ópD0>ó49;,s �ˆ0DóÐ13o/Ã`zj‚H0x“  Bó` 2¡beP0„ £ph0QsPA‰� ©‘è¤%€q�˜˜)Q¦ÀñxÈ("Ì GüÖT® gC°À\LCÉĶ Á¤ ?ŒƒƒÍNL ‡ƒãL£<Ã7J#ã Hs‹ ó.�S. Ss#Óƒ²"|Ä`”ÂEpÄP,�€F•ƒŽ`¡Œ8K^)™˜T Àr„fN JP€ÓWU˜‘’õù€ ‰AÌŽœšd¢(NdÿóäÄÿw4:8÷w(äÊiNæÎÅLP m 0È…@̦P`fgC¥ÆOTÈ0Ð3á =…0Fš$¦Î:ï_îÊÞXFHÀ㌟̾Q{²Ã’ÎÚí7)¬áÌuô¿Ëš½‡1Õßîëý»uµOMj¾­Û•F¥Ó¦¢ö!™c“�¹L}Ô’È%lºNàÊáÇ>~gOì;+hÐܪ6ý¾³îS(µ*‡bKµ”³Î�X_�u܃¡åÐö@ 5^Ê`ï:ì[Ë¢ŠQØØwÙL�ýk­Õ\Ubê™ÎS”É•Ä Êç¹LAME3.100UUUUUUUUUUUUUUUUUPB@/04£ Ó79‹#�Ã1v0´ù9jÙ — L)Œ¥É�– >Œ!M0ÕÏ(MŒ7%ŒÌ„9ÏXELqŒ  ($ÎNã(JðH\qËÞu8Æ�ŸýŒ›¦K�Æ0&@æ©à Í‚6 ó0‹1h0˜ÅFÍ hÁAÌ…(ÅB XË�Ì…èâÉ <|˜XÒmŽ´˜I0±ã;¾É�Êé…“œ1›»è ÕØŒL Ö ‚�€¬ÒF z8�Í› ¬hÉÕA¦FÿóäÄÛk”:<÷v<’$ÈDF`"CÁ!`ø€¶yÔM–´ÆŸ(ðÁ‹: cÀ€Bƒ$µ/ÈARÄ 5$®Gb`7&wÑá—rîdL™ÆkÑ—V•Mn¥6°¥»ü½_xc†ßoc�ÍßÏV~­ûøÕ±—á«ùU³…ú¼­ž[ÝlqÞ_[*µ®MZž™¿)¥«;K#™˜» ³¡Š>³°Ì¶!Ë`öuýpa¹G\Fö•µÜXÙsf\²¸iN«¸ÃV»îü2V.¨#Ôé°íÕàGH%£Ù…·ìúLÜ"NÆÈLAME3.100UUUUUUUUUUUUUUUUUU!€˜$)‚¨’éìcx!ƒˆ ˆÐÃÙŒwÁt ŒÂtšŒaÊÜÁ4 À¼Áð9ÌQäÅØŒ €ô†fxbžd `d †!cß›±—&s8�%ÓªLAME3.100˜L3ŒðšLMz0H(!(äla°A0Ä$a¡‚@`a!‘æRt dð $‰Ä „SMX¯>[*jÏ ETÔ%¥jÏ›tMÐ(ÿóäÄör|:_à1@�‚€¦–pÀ࣠€ à4º§¬\�]ÕäÜ]׆BÖ_çÙ‘N´ô$æç•Ô1Ê®Íè:àCô¯Ü©Â†!Oü¦iáyoÂ^§¾¥v ¬ç>øPRGËL¹—G1‰O³&÷:‘èn?“ÏÒ?o<®§¿DÓkØë �\¸%Ô‡®_·ÉTr†Q~‹ süáCöìP<u¼åRW¶XáFep+û33.m§¯Ö¬ðÓN;òØüB6ÿCÞ×eø.¹À2ÈiþrsvYkË551^žOB `HïÂ`Ì9O°ÕÔº¢\b"F›€ad á…`–æà`>æà´`ÊÁ` �P’¼ÆB‡–Œü¸ÉN� Æ<^`Áì,À̤ÊC‘Kø—æJaBÆD™L&c@áqAÀ"€EN”Eæ414Áb¡)¬“˜Øi†ˆ…ÇŒT(`< ÇX�mÚWe  e!åð00õ˜É•‚0)�€šP4~1/íí:žQw-Ü =$M@S�™„Š™éŸµg¥L_É\ÅÀ( ~�sñGq’C ^dbfJ".0àó+˜Á(@™2Læÿß7ÿóäÄÿvÜ:,žØÝ}"Á©»–‚t“Pw)jÍÒ½t˜YˆX�yd†B£Eb@R¡`!¨+S¤&~¯eüËTÖ³×ì'6¥ ð8¼Kæ±JV¶ñ?( 1 “&1á“1�ˆÁÂ"&–`¡‚P#='0qÐ`}ü«ó»§·_;ÔùçS ;ÂÃȱ€ˆP$É ˆ\ÖAŒhph@˜Ša©òÜ ÀÁBm¹‚‡a0Ù *±Lä Ç¢Œˆ<ÐÇŠ‚LD�—% A€–µÿ ®ÍFB‹4 kàÇÍÄ)š‚,q Æ &a@‘iˆ^œ fX(Ë鸈Ä“Y¨áRµ²Ç5Ð01(dPÜc©PÃ@y+ò�4͇F€�UH¨ê@,Ã03-BÏ2€Vƒ(2¡õLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU-•8x [’Pd&·꠨ƯÐõ¢†9 ŸT>Kæ¦ÅRM ìYS1S¡ <®“LÌÒ²0…Q\ìUn´eòœ*é¬ ¹jë§2µ6B¢Þ2ô&ã¾ÚµáI† %èi(®˜ —ÑV(*ß@rÒF_˜ã)�@ÊÞâ-&€Å›Î­ëÜ '>˜lyL–ò5¡”M]=*žn›47ÕŸ0ç»ÍÚ w•ä “%£t9J�°×( ƒÆ½�=ÿóäÄ·b´:J ÆqÐl½ÅÎRë«”¿Ä@±zK¹|b_3fì�$Ô‰›ÐRâEõ‚[¬eLAME3.100UUUUUU`hÀ „B�2ˆ<ž4ˆ2€KSâ£yÁ¤ $ 4NÒÒhÌ@ÇTé$Tu° ¢ a&”eóqLåM4‘2,ÔÃ-ˆ˜ã€£63U1¬Ši¸c¤ÀcˆTf¹}3ó!®ÁÐ/ãˆv!(8�„6QÌg¦ÉR<@S]D’&J _åz‹ÐñŠ uK0‡îášÁ„˜D@fLÁÝEG`Å, ©SqT‰ê™#�€™Tªw1S1¢ C‰œ æí.…B3FH(¡‚“ ™€À�bMb§p\$�°£¡VFC`ªÿóäÄðpÌ:5AYÈ¡Ú $ƒ„S˜!ƒ€KT2�4\€sÊÄ 6ÓÄ¡¾‚›Bƒ [àÅ—ë7W«ìDià %M]fœ[ÒÙ, eYÓ̽’€Ëæhªb ‰8�ÀAÑ¡¥¦ Š¢‚œˆF6V *)¦€b„ †-JB­ØášsBEeÖb¦ª[½(01¤&…6Ì^mà t04ÂKa¦�$M—dsI4‚HÑÀN%Dšƒ–EÜ�•Z*že¸3 2…jTËB$¾a¤<±PJÐZÙxQEw*!…9ŒØÍ˜ ©‰"w9ñ•Áå˜]ƒy’ÙC˜¼™qš9˜pŽ™Šèh™(Œ™€È9c¤a›Y3AŒ¬™·’y�¹˜º…ù£(3™3‚1Š¢ „ �Øê�)„xd˜k„Y„H„ÉŒ‰Ç˜ÃƒHˆ ‚0ÄÐX̨@@Xˆ Â%T�@&$€0<!F J e 0 �P5 ‰�ˆ!�™‚8 ˜‚9‚(˜$á‚€Ð05 Â\Á¬ŒÁÀ°Œ,Ád>CÀr0‘ r:0p ³ 0b€ -ÿóäÄÿ}$:Džð�@ é �p\@ ó�Àœ A<ÃAj`‚P@§¿p-9Ëæ;Š¢ 7õƒ¨¹€€èÀìL$dÈ€Eʰ_³� €‰0€±i†¿ÜLïÛ¯~Xt1Vê¢À—©ÖË™›cÍ»�€�Bt* bÓÝ·F~•Ñ«´Î!ËÒÈĆ݉_r—׀屹\; ¦�žš±M1S)D%žÆe.í,fvvõ6Ê«ïwwŸ0þScVj‡³X÷ ¿ª Ë,XÂÇË&éð¯nýHüŽ]¯¦Ï*<þÕnêµ<í-Ïù©ºLAME3.100ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª%c° 0£0&"o£�F óàÌ2¤³ÐR‘�¨{0 )„ *˜9ù… š$ ‹X¯r „  � ‰hY0ˆŒHÈœ 8ÁxDšÄ1Ÿ:Qf5v-‘<*˜8 §1�£‹àÀp<¥àÐôÄ015›�ˆ–›%°0èH P �LÄQUy3“ASÊÓDÂÿóäİ`ãªLÞ賂 xÖ� ƀƊæF�F æ†$+A$Œ,KŠ”Ã€90Ô`@`pÿ˜B˜ ³ò°À Á UEõ�«z’‹EŸ(¬jE×}Úok8…ÙSVfÀ�AV3Ðh[—)ã[²¾dí :U™§¦û¤Ä™mÆòkñ¨‚Ü®ž—µ7Ìòå~sñýsXsùøó{ïó™ã»½ÿçwúÿçÿë ?ßᆽ×ÿ×þ¿?Ö·¯Ë,wÎã�Oª¹Y[,gÈÕÚLAME3.100ªªªÑÁ^ …9RšIƒ@`1˜y€P†é€h‚‚¼æh àa„€Î:6†µ%.bnÀ�”0¹³ñh�`.€¥xsh‚€°S˜)዇y ‚øs—8Ãä E¾¤Ã pÄÈJò‰šAF n˜Ô±‹¦L™€,¿ÑüÀÇ �0`2!&,>© ‘‰ª Æ ˜�,›Édƒf ™!ÀdOi±$Gu|q“�ÃÅ$\Üb0¸\,¥�S��À&'@þZ 0$X$;˜ì„F 8e`ÙÜC3C€ÿóäÄóq¼:@÷1Œ8P¢­éCG úL„CJH£û&.Â+§ €"7† iŠjsB( \õ#9‹ b¢ª'-d9ÚVäöLè9™º)¯4èÀ\²ˆÌÌv&ïÓ僱…$¦š®¢ÎåjFV‘�™¬5ÖÕ‹ÃlrSÅž7I]ÎÅàEÏ#pà(uä‡"­¼ªô0ÿÃô�>”‘x”‚ž=RÔÜ=(ŒRÅ3‰Å¥*Ëñ›‡ëD0�Èâ”íbÌ�»ÉŒßWÃ�­@+$¾Ê㎌yÙ�ÝY;‘ W¹…È%ð×LAME3.100UUUUUUUUUUUUUUUUUUU Èð/‘ a Zné `è–H,˜0˜.&Ɔe€Pqo4vh0¼0c @E5ãp0¡`2˜C R0<3À2 :ó `}0]£€ ɽKèl`‘ •—5*ÂÀó,‚H€�€ H´yÐÐááø.CE5 8Âà4 1ÀhÓÄ´ªHà ô«0phH.$V�a¡¹ŽDæ*­˜±ˆ‚@ÐÈ$Ö *ÒP„À  ã=Oä á*¸Œ¢`°uD 1‘ˆ²¨ÿóäÄãm¼:L︨d,´g8d ,Z84‘ +É~º‚¿˜g’%š¾ËºÓa•ð€¦E-EàªÊа­»uRhèÅ µî–Ž´¹¸8öY”À˜‚îi¬å�¯Wõ”Á.äeâªÌw5-X[´°3^ˆD ø¼95Nè=ò¸iࣗ»Ñ 8¤ ·š¤b£Ý-‚çã—†Ô-p¢®Ìüj †ã°ûþì>Ñ÷Mü«¿”ñÚhr!/‡ÞGA HÝ9 bTûÚ¡•ÒW–ÅêÙ‡¥‘È´õz§—ÀqIDªÂä‘ù”áO÷§¶LAME3.100ªªªªªªªªªªªªªªªªªªªªª‹Ü`â ”`�‡¦>L#s.0Oó10ò0d@ÀQ02s-€S00C0a« ×˜ƒð˜GŒñ¦é,˜&°„0,¾:$5 71,d1Lw:[‘5kÌ:*€7AX]àÀà mº-p8k\.ª™(꬙]ÌM›‹e«šú»5~­™r™MmÚµ_z¦åÞPç«RÚ*Iu©u¨âTÒÜkË+aœæë¸Æ%¸\–Fi2œ­n9ƶÛ5&'ñ‡>˜—ÒI¬Q¿”³vf£‘:š›wò±R#.–r?=CA…=wãzÝä®5;vž96þ]‹óu©åuLAME3.100UUUUUUUUUUU"Ô q‚Èo˜Æ²É×°o˜+„(˜›™Ÿà-˜{`”˜aÑ—¨5:q„È3˜¦Qª¹ªp�1�˜X�é›™¸ AìÇÈÏÌ”�4ÁD B˜ÂT CÄÀ¤L€ØF3æ|Fúaè$ L£‘°0=q`<0¡¸ƒ0Á“ /3£q2%)žIœ�i…‚€ Í'Í€ `a+Ì…´éÌôÇ“LÆ`ÙÏŒ`pÐG�ˆ&¼Ž +%+1ràRr]'B[—¥àL`¨ (I›5‘ �ŽL§¡@P\˜ÿóäÄëo”:,öÙ>0l˜ U ¤y3Û1„…0Yñ 0€PÅÃ\ÂF�ãAnYg�ÐØÓ�iŸ’@b錀€Á@‚rÊ�Xу�,Á¶ µ„Ék²/„T,F†ejÄè@­»^�_˜›Á?ƒÞÌïV�׉ÊaÉØ/é%šU4Þ;\j™Ko}kU^|¾Ê™g#-¢x­Ñ>¡c}ëÎcq[ÇŒŸYâÌO=’E箓+Gc”L¡�ÍÍÖ«Æ¿‚gèc™É-c'FD•Pݘ-¦,ÌÕ0Ô“ ±¹0Ô|SÕíí9ê?s4Ô 3 ã¥0è c a1óÒˆ2I  �U1dò1) s`ë0R„à†ó�ô Â}5pÚ­¡MôÛFi-N4“ŒÍÂ*\ p6+Ą̀ó) Dé:åìÛ³$Í@+2¹ðËãc†…€D 3Ȇ%€b¢ã)Ž�"qca�Š`á¤L�QH`dÑ�ÜÉ‚s Ž#…‘ƒAÈ4Ÿ&tÁ  Š\×fšË@Ÿa¬©a†BÂÙ Ý(ØsÀAUjLâѱfÓ¨�U á`y4Ô7ä1Í9NŽÿóäÄÿu$9ü÷2¸~Ùá-ŠSÀ2q7VPc¨=© ¨F8ðJc°{P’ai(aß DFœ\åDˆå@Íņ"”3§m!Z´ZfÜ—Su/êtÃ�%@S¦[�<Ö¡œÚì;.‚žjhM’ê´ë<%í/ ‹Y&a€¯$Sgé|®¨}ù•LÆeQ§âm°ÉéX«éA¡µ1JR³‚õ>0­ Ap25S à­0+S@%ã°*0NsÑ02 Ñ�X˜‚€ q€P€Q� ,�‚�0ð!ràH¡©� €¹BƒY\ 2â1£ã‘äD4D¼>DbàJ, ƒˆÇX aÑ‚� ¥Á€ /pàÒÿed.Êò" 'z]Œˆ—¦ ¥xÅ€’ù¥2Ú¨ b&µ3TeP†0MQ´ùWá@43dIÞ(¦ã"@QHTÌHÀÁ€‰�ˆ‡Øh)`ÿóäÄýv´9Ì^Ø• '!D�ÆXpT5ÜG,¨#+~‡€‘ùž¥bíXª6¥-’d ’É[Öp÷2Df{HBEBZ£4gÅèD…¬# } n€•cW˶,7Ì][@`IP4ú�L�†(AX" eq"tQñU–Ȩ ™¤›.j[%‡*‚(ûnOé}PÔp-RCÍ�¬E£ŒU½^�ò©$•4ƒëFÜ["Œ©²ÑXGMû-öHû �Ÿ†ÕµXŒ%P2èwZ Mr¾ì¥.‘år,,¥þ€ÕÛlÇbÌ…b@¬Uœ$ †„B#– oBsc>ÍY Èv&c „ž&¢"æ_ƒpk¹,0S0O0Gs°ß0w3p˜~œv`Šf Z`†  :1ã #G¥H4Þ*ƒbT�•Û—Ú– �˜ ˜€ €à—¨,™Z0A¿0…iˆhhÙ�Ë�á€à8ˆøØ–¥ÓC0+£Ð(8@‡û—;ƒÏ-ëçb0™å¨N`C1P R·cýÖ¼±^ ÀºÒýk—9Ëæ\C°[0a³` 06C ,€*˜3€iƒH!ÿóäÄõ{Ô:$�ðþ¿yÙüéõk¥œKˆüYÔCK´²0 `à20³  0i³°?i� Áƒ0„nÐÀ˜(Fw;ýßþî÷†~]†h׺€Š;ñ¨  øWoù€Ð‘‚àr™Á@ ƒ€ÐÀ˜ÌA´ÁÌLÌÀ´ Ì@<ÀøŒ@oûý½½åžxþýþ­óXËî°õ®� ¡‚0ÇRrž7?MÛ± ®Óæ"‰Ä`¢àP 1 €qeÆ€¤¨Æ` Æ€ ×Ëä£G pP4Œ€!LU¨¨’T0$N S8¶+…ÝyeQúÊ„Ð0WE1YË9†Ÿétjw�æ½ME2ü5¥nH¥J�ÁÔÂ)«,¸-ë]BA47Q`¤ügRË®|RH£êé®H×N ÝÚÚŒ¦HÐà‚ǬiY"'a!ˆiû_Ì6 O ¢Á¡b§%ÔÚ6ÒV²ÄWðسŠû¨Úâah"C´K§˜˜A¢Ê P%8òA�ed(¨sæ&1¦kFe&C€ `�ÂPËœ­¢ɺÿóäÄØk¼:qÿÚÈ"D•@6…›8ùµ‚"P9U®‚ÆÀIÌnmªºi#@0B©¯Á$ �óMÊ1Mo™²à²ã€ˆ\±‚ÓL.‚� bžQe/; "=¬)C¾‚ 0¨HÇ 8�"ˆ„ù,Ø8p )^ˆF0‹Q˜ fž ä–]ßBRœ.Àj£Ã¨Š«¦X#X5U* ÂA Øa"`©ó ¦¸`âǪº5–|ú b�ŠEyz 3’Ù�(@ –&„bˆŒ3˜¤lclº>LAME3.100ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÙ-ÅÂ@Td2C& À¬€eÆVFâ+,=–¢/‰¡I²Òø ¥�å_ƒÃÒdÒÒœfJβ¤e‚á¨G`Éåã¸�%‰jHÒXÖBrÜ•.£µR8™¢î¬´5LAME3.100UUUU߀�@.c�wµ#TÕ¥Û¸ÿZ«½R]—Öµ�aškòÚ}RãK‡1•_¢‹MJäªÓR»‘¸—’˜ÓýrdN̺�♋¾.C+iîsÿZ‡BÝqâ µe!«Œ»¬À×8¿¢4ŠÅÀ£�ÀV"JàÕÀ4PÆàçL² ÕA •‚sN@9t ÌRF”7¥2cÒ$"Ù à9¨€€ žehÆ$:e€¡€¦ÄRC0ógt0±3 <t:5ˆà@癹`fJ6ƒÌƒ¾ÂGªŒæ|¡•nžŒ›4E‘lˆi“ 5ÿóäÄòq|:Y€Îõà,<‰nÄ# Ñrá¡*® b ˜òà ÃŽ 0% ÌÂS(<1B.2JÌÀóH$½AÍL`SF @dÊ)0ÂÊC´��ÚÁ%Pà Æ(©Œa‘‚€,á‘bÔ 12ÁÁŒ(C,a€F Æä9 “<Œ”à# "f̬`a0r`ˆMšD&f˜`&+˜Ã 9“ `P˜­Aq!Å›Öê^&†Â¸ MÄG�)T±1�&®LAME3.100ªªªqšÈå.œÏܵÛ9ÞúŸûåªÙažz»„f—cIZUÚ‘®Ü­‡âS﬚8Ó™“&›b2g)¤°ÖiÚeLÙ”°WhP  ¿—È €YkrVÔ„0B°;'Z; ¹ˆ¡ITtʊ̬èÌÍ ¼� 8ÂÌŒ`¬ËÌ]ËÌtÇ„CBㆊÀkgBé…BŒ¤À„!æTncÁá¦8f#fŒzX)3 ±B£‡`@ñ‡ ¡4X  WÿóäÄÿwä9Ô^Ø ã ȱŒŽ8†‹°øÐ[fpÈ‘=8)•ø�°ÈˆT )iL:ìý“,3¬†/<âKz¥±ùС*T¯K„^&”ù¨#„¹•ú�:Š>¡ïKœ…J)0¥ê_æè^(u|B‘iiSiFR¥/Kêׄ (êÁ´ª®ÎË8³ œãÕÙP±·q-!´õWŠ…í Ÿ hÐ8Pþe‰Î‘ð »ÛÅÉ"²ÎRÔÍy�„Ƽä7Œ1t­e šòb°Ù˜ŠÓž�0Ú1‡ Ph"'4"‰b=­s4&Àø¤/�¸`@\ÜÊÆê5È™ŽÁÂcƒHˆ-€ÚDÛ�‰† ø-2cÀQˆÆ&[ ˆÊ‘Ô AÀð(ÀÍC=�a4@09 È€ó €áúD˜L7T `™„LÆWW™1\c˜Aª™&Ý™ g£�ƒÎ&—šÈ|T%½îÜÐðAW£àp`á"Ãy ª¥4ŠÔ�ã�L¨]0¸ÒQ@u´ÅICVRŽE<9ƒiîGĸ·sdRÆ€ba”ÇÓ…Â(àˆ"ÿóäÄò{ô: ã›à™@ô*šle@AŒf`˜l.™hé±òi‹Ò�øŠarŒÂÃÀxV8a�)„CDC FŒæ" €—!@Y‚Ë@Xd`�jæT‡ Œb "^Ýü*rµ‰ ªIid†h·m�¹4”Ž—Q#˪Ëm)¤¬ ÀŒ •h‚Å�‡::“)2‘(\“©Í9arAr1ÞdóÙ�¼öeóüýêîô10�4 PÀxb˜h &AB J?”Õo±÷SÔ#Z†ŠáѶ`˜hŒËËÐ]7áTyˆ0f¨�ÈÈ  Pa(eƩƔn­%”‚V‚Ö!(*Xs �A€é‰±ˆAD °mJÁÀ!€zsM(xp,0,Q Þ5˜m"Ù£ßLÕŒ&0,0Ð9-BÀ Abo,|‘(ÁáV"…&/–p³#CóÌ(1 hÃ@ÑT·ÌH8h`‘Òz€�3,�!ãÁƒ) Ì �"Á³ …˜€ 1Á FjO<gÂ�˦I LFF<à–  $€0àÿóäÄÕzô:nC™à!‰Æ˜4\$8Aá€Ù‡Âf™à{Èæ& ¼4`ÀɈH‚Gc�Zp0�è0H Ó MZ§… xWh$a°‘` b É09 $`  –A&¥ªk˜aQôTÁÀb`9† !t¹] 2‘­Ä૯ €îN;¤×ìP ä €Æ¬ªàpV0ÔÐõ�H@"  x8T„E€E”0P 2ˆƒ�“}šbü–<ï?-MØ{¯ ÝwàתP7^_c à«c€¨’�|-÷i8Ô·ŽŒ¶¨š¼¹ž[vá†ç?#€° ÛHTÕ‘§RŒ€°ËÞÁZShØü®¼š�ŸHh`aY£c§9a˜9h1€ÊæóÌn.5#0ÚIA¥¡€†8 JW’cĤ�¸n])kì–×�•¾�é,ø8Z‡xi€M "¥"ÂA ƒ:n€Ñ'õ¢­`P!rü†0C X *a+À«#£I¦)ÕV°pa%·1AKŒhFÀ˜D& žVnŠ˜²Ti²‚q�Vó,´¬dÂ1BSÅg¶&e‡!*�1ÿóäļfœd¡ÜÐL ñ!«ä¼-tÁ3g ¨F.ìèÃ’3èI’5¦Hɘ,!™YlSÐH0\hŒ£"0I³¡4Â~Á€L0T­Œ#Ò›BŸ0ņÑYlqaŸ$2Mh%[Kº¿bÂf !ƒ’Ut*<©™ÒrµNmÞUÌÛUŒÉTAQ5:b yþgSwœ')Êu±ˆ»P5iuÚHµ,J�‡B©p”¹-uɦ¶þØ�_¥”ÕÉö~£SñWJ-‡³Æ…ÝÆ3¬¥2I]$ºÔj{ ³4¶a—öŒÊi†å’Õ@4 äÁ”N�6—ðÌD>Œ7 Å,9MÜÉ8Çt< Ä$ ÍmdÎx¦LpÄÅž ©‚´ Æâ†OƒE‚ñ‡0d•„ØLP¨3Ø(À€s4­Í~2i8ÊÃk ǧcÕc‹QŒÔæ9ª Ó5C˜MMêh3ŒÖ‚“;…̰A1˜(Òió Œž$1!tLJC#L˜W1Ú\ÊÆ Œ†)1@ØyÜgĉ·Žg¬$ir™�‚†Ï›Ie£!—€S™�6`ÐY ðFƒ0àÌÐ"ÑpÆKÓ#!@†�AøÓº,3'Ì’3RxÿóäÄôt\:8÷4ØÌ ;iÍùÓ €Lð_1ŠÔñŒ"™ab†HøÓ…QàApK ´uÖUKÆú²øZ¶DRÔ-}Vw{Î>4‘¬i¦jY�0’LNHy”Ëaœâ2ì›±Ù‰uHµû³´XÖ–––šzíœ3¹M•q¥±M[9]Ú“ÑÙliÙŒCÑfuÚž»•áG(é©fâÓ¯ünrzÆMhÍë�>óI_ÖG�·'vg_‡ù4!†œã¼Œ ;¯ƒÈ¥0ʶA±yK^n��™5Õ"ß÷©Þ‚ŸØ£ N7<ÿÀŠ@XƒÈÁ° ÍúBpÃÐ"ÁÂŒ`°œ&r¤D`ºf’&„l'5¦‚†)#ýZ&  †2ˆ†:;禦/‚F§m‹ÆPæ Ä*y¸„a‰ @PH3ùã4¬G2¼¯3+d40�1PÞ4m®7æ¨1�,H“ JƒeÍ£„Ì€*LTHW†š † %��FJIƒÀiƒ†Ì“€S|h”ÀÁ‘éÀ`HÇFÓ:+Lz 0xèØê㰳̼l28ØÍfUŒø2XÊê‚'À:J1±2à$Î3?ŠE�&*•e¤G Œ( 0ÿóäÄõs,:4÷xXÖ.aoL #0$F ÄÀøŠÐ¾,[bNäC ‚ñ ©‚ I"D¥/‚›å¨Û-8J5;£«KZQ„f–é¨íO_–ÌRUµ…j÷®rÆv.gÚ[Yû˜k·°Âíû]¥µ�H´šõº8ߦkBgá»Î+ÿ1Ñ8 î<æDÝ÷B#Âòřܺ™qŒ-ƒ—óå µ—v+#g�ô=Œ¥Õr[úœÏSNŸå3rPit=�?ŽÂ§3Væ³U{ÚŽTÈØØ›hؘ�LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUž­¥È #‡ÙžÓ ™†éƒØfI¡P,˜`�¸`66�9ƒðG˜Dƒ¨XdŒƒBpÅÀóÂÏc†&E@F7œz j)±Q&|IØ9\:L;ÏÈå`BLP64ÉÐÈ- 4jc"lÙ2Íæ2†1Q@æ±jÂ�5@kE°/q“TÀŒ á%©µQ5†/d•D!=c!f( 2ßC1ŒYƒW Û-4DÐdÍ!3WBJ¡ÔÌ1f ƒN9ÿóäÄÀdÔ:@÷4Œˆ—8Áˆ-­&#O#r`Yl}\¾ÌÉ1›jXó•nV×)ƶÿÍ.µ_@àNê1$swØúš­­Å¸ï?ÙV©Ú[´UT‹ýˆåb,Ë©i‹Ê_I}¨ ͎ο°åITª­Ì!ë‘({u�èjj�¤�*K&™�Þ›Íyâv©ÓE’ö:½`ʶž–[w¨e¶®åÚÒš)uÉLª]©Tmù€¦c.Õ5CT·¡îËu^3‹A´�õWuêm®ÒÞŒÐV•5¨%®Å(ÜV’¹štfÅ4Ìaþ•LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUU0%Àà0A‚!0>G 3C-ª2¶Eè0jÁ[15Õ�0§À–0,@0ÚG¿1ºÄT1d60„7*º7Ì] á1ƒ�ñ�á¨XP1”…1(0XK1Ô8'ä=d1D«1�8•N5@)0Ü 0$q4X*0C¡à¶c@pbHŒD?Sñ¿�|L!§6Ñ`(04H81É� Ý Ð†ÌU¡ÔΠ@E�PBÙi M2ŒY¼Q%6Ipáê“*Æ#PPh€†™ @‰ ª„ÌØlQ\ÊÍÌàÁ GŒÿóäÄÝl: ÿvtE‡Œ($ žÌ=l¯Už`5*Óûn#”Í]µuÛŽ—À°��À�)`Óx¼‰Œ®S2BÿÀÒÚ婨ÔÍ<‚U~S‚âq%m‹7%@ˆ« m¸)KŒÂó®†.CŠŠHnJ"˜¨ªé@3­v@ïÊî–Ð<ñ«ñ(v’S�Äg*¸¶aú“8fÃÓZy­Æ£Ó•Oj’›žž‡íÉ®ÐÒÆj\ïeQ¬¥Ð|Ô« öaªo±KO3W¯+Ë#<±S²›×©ièãV±Ã Óxå±�ªYNJLAMEªª0O¯0ÌÄ¥0RBB>ÞÈU4Pƒ0©Cc1w®¦6UÊT1«Ã¤0ˆÆ­1æê0cC_0�ß0RÃh0WÁ0‘Ar0+@ó0[@æ0E †`4LÀ+|Ð4” ƒ4“ AsDžóª ³Aƒ³Šsˆ3CSÆÃÁaÑ\àTÄ�”Ê!Ü0h0<00|0´0&XÁ‘V6c ÂAá8B ‰ãÕ�Ÿ¬p.>…ñq4ÝšR«'2êZÕ¢ ¬P¬i(`È(`0>`( aÔM0ræ¿0¼ wuÜ‚imÿóäÄùsD9ô_è·& òP5ÙÖe<ýO³÷‘ÀUH×L2V¤s_­�Ûu`E³@P|Ž-_”4xn>Üdµ¦“ÔˆDìYBóBÅvú¸å@H°Îâ 4õgXŒ«s²ÊÔÜýIê(L7¤›Ç)ê�$»’ˆj[I$p¯Ü¥w`&ù÷r­Õ½oáPÔõ=ÈzÔ­”ÎÄçÞÉT†Ur£P41K;Ï´ËKk²G¡þ€e¬n¦u¶þYƒÞ,a.Ãäø»±–<Ó_› ¾w!¦‰Î38Ó?”[4À1jMeÆ/æWŠf€%†8�†™ &�f8a…ÙXl`˜F,•à Âr犀DB4iB™"� $@kQ|Ü�¢HàD{�D`ʃ)‚±µšÐ�HH`Lb 0 (Á"d«hBý, ©vVc‘©�Ç&/˜¨8`à@( �(`bAŒ„b )ãQGã~ã™<†c0Ø@<ÍÃ.  1hÔÇ@³– u3Ù,ÄgKÀ Ú dBõŽÆ¡À‚Ø0`à1o Ç"Ó€YÁ•ƒÆ‘„˜Š`ÁAƒÏ&‘@&&7µ’l§¿3ÏÿóäÄÿ{ä:A�àês}¿¬9˜(bðÉ�À` ™†‚Fh`pYƒÀé& ´:j’ ŽÉF¢DÀ haÑ�ÈáPÙ«†f=  D‡Ûþá†ÿÿÿßõH��¹*ë^—o±fõ]¾ò=‘X tŒ3Áh N2àLÇ"³R!Œ€$* žG1€ˆÊ‚#1‰Ì:1¨LÀáó’ÿ÷ÜÿšßŸ†óÃZÃ?•¦˜³×ºøW–ZB–$[¼š€ "K¥Ú)ªvž³'áÀqLÂÀc ÀÊ0`ÄÍ#S‹Í@^ˆÌ^10ðÆAc‹Ìø:3À28\À"µäaòÙ•HåeÚLAME3.100ªªªªªªªªªªªªªªªªªªªªªªªªªªªªª‰[Ž7tסçú]*d�ŒK]˜võîs1™l¶–÷ö¼·—«J©§á«2 ŒÐýZ™Óv¶èyËš§Æ¯);$¤Ë*ÚÊv il;´˜¥›e±–Zš(¢©TÄ»­ëµ¡É–‘J‘Ùº–¨F%É\–ft°åºdÁ¡!F@Æ“X»¡—ƒž‚G؆bLLd“l€œ@+zBÌNY£�,ÅÔü›¡æ$ʉ@§DÂw”D¦!dŠÿóäļcÜ:i�ÙИ%Œ1çCˆÉ+òÌG) �TÆÇ!*8fÅD„@ (4ðhùp‚ÂÁHǶ„w2�ÅO˜rÆ$*V P 0PÂ`¦x`9š¥LÄmDÌ”x!ƒ´Ä…¹m‚�F$FTD aF¶â2ƒ@Rþ""â¾(䌬!P¢Zˆ+¶J,¼Ot+lÐ1QUUõö,e@‹ÂH†õ¤• ,@„DÁÀÓ5‰®Ÿ]%µK$.jÔi»1·•�£rŒ­œ_HÚ•êújõLAME3.100UUUUUUUU!á&e๼�;å* Q(¨>NF…‡�/?´Uœy'›L[]˜ µ´º‰•\ȲÂÃ:«T+ŽJËD�>Í3Z¶ÈC#D‰Ä!É�k+díí#ÒØÙ’-#Ã-@Q‚���£`\  ФP9Tà ˜c„A!ƒÂÔ0„# 3bCD…™‚Ð8 Í ü|æÀ ETÂÌz0Ê�ÉHÑ‹Àª&f¬h‹Æð|h!ff fJ@‘ñUóV23B41À3k4rA@4üÎ�ÁbBæL:b,Ã#£†da£ �C)1âÿóäÄîp„:]@~ñ°àÅ5 $ L ‰†€$$ÈÄZ “‚™`¸¨Ù�Á† †€‚ „ÔÉÃÀ !D“0q£'-£a‡‡†˜ˆ`Tx¿æ6F‚‚¦f2L110òá`ƒó H×PÀZa`'�t *Ù Xg™ˆ ¨Ñ0ç¤Àà@l—y¢ÅY�E[Ì+8bÛ«"&6f¶œ†�Pšˆ‘ÂEaqME7PСÑ$ r†ŽRæ0"B ò<„P‘ZÈ9$JQfpËŽ˜¾åÁceFÇr�ºtÉ�5¶EÉ;f¬©…(t¥d¢ËÖ`:#>j5KœRWj2×ßø]#îëÐ#bx®Å8/Š­Æú8“j‚®ñ¶î ïg’Æ¿J÷Ë!Q÷f$¥-9KÓîLÇš|Ö¢,¦Jý³Vu°&G ©�nA“ (JP,­‹,ÈŸ1‚ –a ˜áf0YwAF¦B``ÀÆRx  ˜"¡‰;˜ˆ‡$3Ù¦Ýê�…:˜ Á… ù¹Í^š²àb1±5›a¹ÚÁq)“¤ Ñ�¥,q�©®ÃG6ópY8‰ÐŠ�às5¸ 3é…–J!œ�yÜñ¥L!ÿóäÄÿw|:TÖõÄRt«™q&É9ž* DoÕ6FÄðÑcèÍDŽæ0YŒ2k�šæ'J‰“$gÈ 4Á©�Zr©JLË#0, Ï_;�M´€¬XÒ�4³�±±Ñ ^»øÈaÐæ˜F*|Ý0!Õs—¤½©Êb�¹"€LPpX�Å¢„S&„ª¦yŽ`€“�d e+ ê» BQ»…îb ÙŒ–öZ䣲—)´�¿ÅÂ,Ò%ô-ÚÊ NÄN‚î2òÒª¤L À”}Ä}Øh:ãc ÔÌ›d%éCÐJ€. A@�0#³Qƒ3(ƒQT0ˆ%ÃYbj35Ã11ç2S¦01j3S1 ‡3�6ËC[4� ¬ôÉŒL|Ì@ P úkiæŠ.+0jþÞ;ã×—>nC…=2÷c8%c 2TÀs-™H¹1���¢Ø„\‰}T‹°2 ƒ ’L–8âˆÊÔLh°<ØD®V]#ÉàX ×®!`-ÈÝE0É ˜# ].à ˆáÁàêy@–3‡[¤²éGZìª~3F^v†‰ÃŒ: „;4’(f[A ¨+vc ü;)nNºõP&b¶X#œ×a¨Ì·¸c*Î ”F©+ÐGŸWê¼…ækªMv?pr�Æàfaá„3ö¾ºØšè zaÓx“âe‘–_¨$†&ÈÖ<Ž‘G�ƒ“P6&ÊH d�ëz]7Yýfðcõ)�ݧÖ<îC2Å)+GŸÚGêŽLAM0  �40Yƒ¥€0Ú óàp0ªr£0ÀÙ1]ƒ cÆ7Œj3=ÁÍ0þÃÒ�4 s9M;-¨Ðij+$ÁN79èǤ£8: äåh0Jgxù†¦° *�qi—çk¢sZG&`…à2“a"0»QžškÉ‹  JHÄCŒ­lÒ ÌDDIÓÐ H8tdfq k6££‡„ ˆè�‘‹V¡ˆƒ‰€ËF Tb &2*ÍV1tÔ°,F‹†�2J~âi'FD"c%&heÂ!áa @°X‘$ ÿóäÄòq„:,÷6Œ F (Ù”†X2G˜Pj/²öL]Ø a°ý¨„¾žöÙûôôZ™£¢™žŒKâq)TµØÍás衪>)�RÓgMÝï<�Êå\óß0þþ÷z“tòžg'â𺱈ûO�5Æ“Hø¶Vì¡ÌI¯¶­qîƒC~»•¹Ž „º³ë­H½KÆ.ËAeàà̬D³ÙJl²Àpe/Â×@ÀPg¥aÌTx¹x�ŒˆdH @„”ù� ×á…2'õÉpeOÔ­à]1ÝR:X²ºC‡âÑ'RLAME3.100ªªªªªªªªªªªªª0) u0»(£Ø6ý1Mc`]5;.3Q€¤1÷jš4m0 0³(ƒŠ&¹1æS4AcW%sBó Bž£A‹óÃAT`q£hÀãÀËߌÎÐäÅ`ÝØ¸Äñ\À@hÂÐ$DÃ`¤ õVåív®_V¥ªÖmØ™»bÎ9µñ~;.iT«µtư¶ó9,ÇW³-k mž/vã²FTø½ÉÖ˜Œ™sµt°b.ú18sŒ SÎÑ[DÆH–‚‚ÎÕ§ÝLXí <²Gu§Jâ ž]?}<úhju/tÐVfB¹VÊfÏ£t�¦m]x&Ó¸Îå®âaßLAME3.100ªªªªªªª0|3Ëá³°]ô2µó'ø=ˆá³Z¡51á £Í6G?ÃRW®#{t$2¿£‹ƒ#únÃaÌÓLƒÄÜãfDók_sa8#òÞƒ>Gó©«£ìåc3”'•C&E€(ÔbÈúb™4t³†N6g†¦$($`"¢ìl,Âs#1ò³,*“ÎVhè¦ÎÀãÝŒŽ4͉@ ¦ <8€œ0,ÄDT( Œa‚ %r ìa…=ÉØ`  if.�¦c¦F $0²…eH# ¥Ó@£šoÔXºNÄ5ÿóäÄïp¼:÷vŒhÐӌԗ÷‰;i†×äIÈ­“‰Î_5`T’×ÓwärGóQF‘&Ž»mm™²—YwÃî³ø¸"Š^�îäV/ŠÁö¥qHTaœ0ÇcqyN‡%ñyø*[w'êÚÊ‚šÊ7D b%ÃÔt��Mšó‚à/&– NÔ™s ´© ³ £ ædÿóäĪ_l:V>ÞŸ<˜@&TáTPÃpâÆ�(¨sƒ ÞŸ4€ p“ŽˆÄ–6‡MyE0Ñå\D!j=Â�†�¨J~�-.q�,…kaëÓVu*ó_AP°‚ÑÔ—x Ä\˾-òr@¨4·¡ —gSëµ*™›[øs“©0y¤™•Gr¹K0kQrv*#ãvκ] J†ç£B Îà–Y7[®N‰ì‹éÒr\^¬æUi¢x§^½\5·Z‡u:UÊr2É3 ¼^�¤©eêóLAME3.100UUUUUUUUUUðŒ1¾ #î#ö1#qÎ6¬c£7ðÂ0¤3C¶8/c�I0’=3ó&0‰�<¬N…Bf#™@xâK¦bH L4 �„Œ&/Uo¡V…„fÈù‹…¦Û)˜ qáé„Dæ4œ­˜˜a‡5�“^ÃP²) ” •XhèÆÄÃÀ�¦P6aÄffeãF.ö['lˆ Œ÷m,ÄÛM\ü.:,7 ˜ˆ4@ˆéŠ��9˜TF4B@4(c¡!c4'3‘@°¨!1‚€‚€¢…À®÷ÿóäÄìp:÷6�@q‹Ì•U%Pl4„h´”‘”Å`¦.ã+ƒ0°W| $-8ÐSV4¦qÐ]I#² 17•×uسZlPæ}å|µ,ŒK°“Jie?JÿÄc´Ð¸¬=µ.håµi»E Ƽ.r®ÓrLþ_Ôä®TðT‡žy#•<³PãLn+glHj„CμôŠ!4Ì$œkR˜}î}!ÆQ?1ÞOE`GÙç äšL�Ÿ°@å)“TËæ]²W ­Æa†¶ã LAa€8m…ù†Ã»]° ‹�{Š™ËI® …�ˆ‰E˜<,I¥! ˜†!„♲‰‡ð ›‘˵¨AT4Ñ͸œp8Ä”M™<˜”Ä µpÅ Ìd¸(:n®f>Æóc³f� z!&>LYã fJH4U2R€Âç¤T8ÈEŒ<(XÃÑ1PqzŒ±\×Ç–L ôÛ†GŒEÈL,€µàKj§–㠈ÔöÜ™c"wVJ\³¨$„#e£L` ´¦ó$ÖŒ”€6B€¢ËÙv¿²‹PÒ�)²î™‹=Okñ×Ål–ä ®KÓ”,TLÍ ZJÿóäÄýt4:öòž6Ë„cƒ3H1žb‚†qÅ…Ià(QsA‚�„šÂ2Jƒå ” öéÅXaáHHeŒdt¢‚ˆBQwí”–}-ÂÌ"Hª¨D¡©LèÂ2‘@êlÌ"2ö'° hê™D&AaCAOD'ÐÓ@cÊ\ �(ÒÄDÄÔV®Õó4h΂—½S;ÜÎ�©#ù@ "Q*S8¶Z‘·ª0ÏZM¹Q†ÊÚÊ€Ãð‘É]±~FëÜm,>ËLñ²ù#Üø@0ˆì}L0}£€Ÿ2¡c«°'1à ¥3Ï9£ð1dsWQY1åÓ ¡\1D)£àÑ0³³aB Äà21xÊ�¥0ˆdÁ¡“„LˆŽ6‚ÊÀ’hcÀä3»n6!Ðêú:ì̈# ÄŠ0àBA¦|™1qB� ´ÎÜôgZO«]pæ«‹ø,!A…œQæ(0T8)ˆ aÜœ·cʌхš°õ|ÙBÄ”«ˆë†Šëù (]’ý¤AÅ߀‘æ½ØÓ !œ—ˆ´,��'»B2ƒ` ‰à\1”—è, %’é… D…Y‚,,8àZi�¥¸B XbÇ›q¥L˜> цEX™„Πe�˜À`ÉÐbÀ©k|©Á&¢¨ÞvÙܼ‚Ð+¬¼[ ÕAeÐ`˾ xÚê«F•zfÞ6°È!ïp!ç– Œ2æ±6˜­1Ð/ë/Xt a�b•®GÕw®ys Î!È 0-Ã@Y0Í+CÁñé0™³h:Š“ €t05ók¥)1;C ~3§“2°j0¬CB€ 4¶àÖóŒNÇ4pÄ`ÓI ¼O2�ØÀ‰cÔEL‡.ñžnjá)—ÂFuw‰`€`Tü §I� &)Âã£J (XÄ@q€qL.G‘ „� Z®0°rLR0`1À¸ 90˜`ÇŠc‡Ì„0±\Ë¡À LÁ 4â0À 4)£@O7=ÔiEý5eKÀš°–l†qdÏ5Á¬J¾ˆ¡M%{—\F·~‚EjÍ)},ÿóäÄÿxŒ:÷2¼£0„ MP)féÖKy#¦ØfJÀb€‡ˆ×2O9!$ËÙœD 0 `ƒ-X@` Ûà,¤&¢6m°ºsC �$ £ä’‰ÿ-˜ÀXq ‚•¾Dõó0uhd,‘$‘¨·e­ ‡çE�Œ^"é7…ýp¥ÌEïušr¹ªÅWëÜ‹/š<%Ò OxqN^DÍæŸ—ɦÊVhæ²g=ûX�">,‡nX]M~VÇ`Fw ÙXGùÚJ¶cU¥¶6~ï)ƒÜ×S�¤K ri‰Äñ²´h�U,Qf'Ó\/Yo!²î*LAME3.100ªªªªªªª–æ@\bÞyçM£Èa>fH¸c®g&8a4)çà¤aZ) f&cÛE `lgäš0 dÐqØÝà¨ÉšÎ¦=­‰M\Þ6Õ¨'1`Ûsƒ@B“2ÆŽ&j–ûS((�8‘Ô12…‹[&@ œÃ–UõA‚Œ³’â£Ö"¢B]V1á“©°˜à¨vj¦\bÓ;Fd1™|g§™Â`Pq`Ï"38­¹vzÔ ô_Ê\„@¢¥¹4i€N®††›–á“B ¦ND~^íÁÚ�Ð9öÿóäÄßlœ: ÷4ŒaµF¶). <è däoPA�ŒH ©* 0¤ Ò`„° R•C¨â�*Ü[V²ù®e_³2åvr�DÔ¶:û3(ðfHl�Oúj¶°B3F~£�}fµ©çbP5«p+)� 5Ðø+§’u iSUhs0<8®žÙUœô¸Ž”ã·m§³‡yÆx_É·b3,x”%ÎYùqd²¥=̹¸¿E;LýIª;±ˆúÃ^�u¡™ !ö~—t&Û½J+Y¡fM«qhÌ™ÂnìÖi•LAME3.100UUUUUK˜é�ؘL\9ñè‡C™’ôñ+�±…ø6™-¦Q͸äc1†Œd�&Ù�0dW ù”èŽ�™ ËÈ`¡¡é§ù_±¤~z1Мf@ˆTÆÔD˜¨@dÐÀ4xcñ!ˆHaÁ�„Cæ/ l4Œæ �…#ÁÒ(�…©KÙKNUPVº’{˜’[•mÊl-vl‰¤,-I‚‚ aIƒÂÆ-(„ Œj:1P8�ªÃ°ëÊÄQ™K˜<ªCM!³+Ö3­>)�k�4Ç Ö2 �¬Ô%!ÉB iHÿóäÄñq : 4÷2¼êÓ_F(�;¦Ò^8q=‘:}UEJdª�ðB©šKüœK(’A-êX€b�ˆ/–® zi‡ºîõ”/*g .îÂæЛ*«8ͅɈå1¦vYm íiÚoœ•òΜf¸ÌU+9ê•O=pÔÜø›ÍÝHfÎÄRõ(2æ¦UeÜË vêì´ìIš´v"Ë—’k4V"À^ç%µSX“ò ÊÀñ_¸’51~ÛÕ“]m§ßŠ‚y£ïJÒ`Ð3úÄ^™3鯷/]|¦Î´ª ÌÁ6LÁð9|Ü« ÄÀþ ÁAb8Öc\Á tÁ©,”ן„ÁùhÄð!,y8Ô“”6ƒ “ü“,"“4 ãp ÃÔƒ4ÿÙLž*?¢ØÍçs ¶Oh¬1HüÀESÈ�ÆPU‘ƒ™1Q�Á '‚âÀ1 -/_ó ˆ¬@�t' €˜%¦â†²O5„¥qWêú§tÁƒF„"2q�É”…O؈$€а¹Ž„“,”{D²Ú˜ð“ šb¹¡‰=š)Ï�š„¦*††:¹F„ØB¤nˆÿóäÄÿ{49ø*ÿ6Ä‚[ Øo—>,_·$˜= F‚y€ˆ$H@@èôƒ¦ 3“: (2XÈÓù“‡˜Ip“á‰�ˆ‚I‹Í„`B€B4‚aÆ DHaáeèdôî¶»ÈøÐf¾ä<®Þ3´’¥9z!K¦Xÿ»®ÛÆê¾ýv¶Çulnk}=–E,Áò` ò š‚à9LJ¢¢‘¸QåÇ•±w¯8ù[ Ô\‡…µp\7±|%cÊÑÑü» ê`5”ËfìÝm+• Î¡ù…0÷«Ê®*7°ÀÔçN·‚W KšÜ4òKV!�H0˜w±‰ò˜k�ƒ ÃvçÈ&jèu2Ó†_cÒe¼ÐÇ H¦e^�BX3A`z0© “³† ¤-6Tð2XasÁœ ÆÊÍ‘uL–é5 Ü•£%¤N Ð1q¸ËÁó|ÎOG7‹L莃\( |-3úd›1)ˆc³)“Äf˜HL<0h|ÆA&��è`ÀÂ`˜T"¾Ì:-1lÃâ0Pü�4c ñ�Nf�@™äBp« ƲUQ�:lZ¬T}d`ÂH`_ „÷,»'-úM„$ørâÊgQÿóäÄåz$:÷4¸ß(a•˜ø™ÁÖ°c�6¦9pXX0s " …nÚ³²õÂÌ Ìû0FíN†<[†¸Ç�‡ß…À©rí,"h:\Â$VaãNêhB€HKHq!Ñ HF¾Â&^2ó¦#q~Ù£+’¸PË„íÈ"¤^®SzÊW©~äô®ì73"‘ÉnÉpÊn9�ߌ|Š-”³¸iÄgé×ânó,x‹¨_Lw^‚ç«¥OuÃI4‹„ !`C‚…º¨ÞL-@‘A ˆ† ¥Pæ4˜$BˆqúAÂÜ „ m9ÒÐQ Æ„²ä 9ƒèÏ]˜8¤3eîYjÞ|^Š@ Á„êNPÁÀ 5€Ô¼3„A a˜ÆŠá’ (Éê2K ðš1A³À!XÈÉ€ƒc€£Å`Â�B!@aX˜LkŒ�€@`ȲˆT*1 ZZÌLX*L²ULLjLCLôT ¿KL81N+mÍ LrKŒÿ%L_L"L_ Ë.b�P[ó#Ã@ò°(ÁàÔ0g T ‡£ cŠ£Á³‡ãZŠC �‘Æfؼ Œ%ÐÿóäÄÏ}¤:$ ÷t¼€”Ð!€à�àzÈB"cH¬�ˆÖ>$½‘lÃ1â„Õ@AG!(è±� цlˆ1Œ„ö³*ªe¬ëKŸfõé‚àÙ�)C6….…šŠèšºÆD„ À¡¡«áÎB`X( :x¦ò-"³„Ô˜Œ6Óãl^*€)%rZi<ý%\(¤U_˜ÜNU'ŠÒá/�¤ ˜ƒ(*LË«>•r¡&¡‹­Í‡Ãí%óW Ý’¡’˜ª‚ÇLðàI¢Ê’üh3-Q‚ Žà`J:a>9bÀRþ«jª"2+�?iJ�!€"`A4q ¢ f XÄ ÎÀ7"«æ²X¦@€ËM°ÁF©t â‘/CZ ìè7 AlLÀÁÐ=�@À( ØÐÑ€Á€HÃvî0Åxà^(åÂ8ð$Ä„D,6¿Æ¢È ÂÚ‘wÌ(…&åÆ*î…�Øëž`ÁðDˆrâ1ƒ± Q ³6 DÍæèÏ C“ÌSxä ŽÖÔçHL øÙ‰HÁÅŒ”tÓÃL4°Ó¢›©€‡›L˜añާƒ€Ï†6a¤jM� š¥[’ÓZ{cÿóäÄ«bL:<÷v(gÍ‚c|`-™ßEQÀ ˆŠ :G„EcAÁ‚À •âœ�…ƒ¨;äµ"³ùCùË)° »=nŸ8³ù¦g#ˆ1FÖ+ïUåe¯ý¸þoã5w&àª:HI,©§¦½ÍKkÌÒwÿVùV­Û—®[³ÛôÝÕÝòÞtÚJû¾òJãW Zò1å:ܤѦFþ×o\§Ñ�Æ×ô:“Í⎪úé Ýs’¸Žºý€a¤õ~`§ðOfü°$/UHò ‰,—ñÀ‰ØcJ¦ÿ³gu*]2k·�Ù=X ºÞA µ·}¨ÍÕšd˜I Žjq2渑J…íù„8`Õ–G°)30„P�¸SXx@ 0@¦Í 77Y_¶g)ö�ÉãÿóäÄôqÜ:,÷4œº‡j.†nË [i £Ä@SõTÒů%{W0ZQ¬çÉ0£SÜ mfégjC²Š²›¶&.ÐaKoVw•‰LÄ/ ¦–Ãñ‰[q‘ÓÉékãmâ«aÝ�6ϫƌŠÜÚ©²<²Bÿ·Vºé±Ëê:°ªL„(2ßHÒû*rÌ#’Õ € ‹  ÁÑ^L¦È¸[rëÂŒH@bÚŠ€S±„„�#‹3Bþ—Œx"—ކÚ?°ÚÌjÖËTqÌg€ p„$6—å¸Orù&œ}-Ô¹JLAME3.100ªªªªªª€ ¨` *0œVãsp)0 Ç’2¶£ [2•q37PÈ0r Óã 1ì p02é«Á ¨\µ%^Âh(Ý‚aÑÐP@9ü‰ƒR‚A#ŠØEC$Ã%ˆ(0 ñ �P\Ä#s$L*-0ÊDÓ”@^~³!†‹&¸ŒœœHe Œƒf¶-˜¬"bey“ÆmÀg¡±ŠA!1œ@`J š µÂBÊK—iJ^�.˽lwŸU-‘@,òøÈE–Éç2Â`((¸I ž@ɤÁ&Qí>̘’™.š'A‡9L©©.ÿóäÄðq:,6÷2œØË¤ß¯$CȽ™À¢“-h8P­Îsn½›ÜU2q±¦2—�ÝuçZ[o^ƆÏÕ3R�C°ôÔe¸G]Ø­Wmf¥QªÖ¥“u_·¶I"u ©öåYßqÖ dlÝ=âíãv”‚­Cº!"‡£dÊi9 µ0£‚Æ�˜¢‹Y‡ÃåýN×ðåñ . B’ %¸9–W, ­âй ¼ÈŒ™/ŒuA3ðÛ�!!± é|©Ð ° $1y!ýô aaÄa°©bé‰.äê,³€C `Ð1^$C+éh8�S ²‹5_#=€Ô0ä#g‡1O £ÀZ1” s€0 ³ P²0Y¤ÊM5†Hp :ª!)c+€Ë^‹Æ ŸhJ/(€FbAîÛl‰¦ 2:c¡�`¤Du›ÃI…†8Ž�áÓi‰šrH,B�š§˜Ú`A°‘ }•ŠEp*zÔ>ÖeKi@„>ÐbPà l¸¤ÁjÆ [Ú‘.¨Ð°@9Ð¥™,¦°ÉIÚ,—!lÐ}"Ô�»oÜ�r)9ÖÆ ZJÄÜphH,ñ‚AÌÿóäÄÿv4:$Q^ØT ï…Ì b$&>6baæ&aàe¯�·!¦*"`á)ÖZsƒ’ý-ÀÈ9‰Š˜hZ –| ~^µ‡€äQÙt#æcpL¶FÝ]õpÉ'¦^Äàg̻⠩ZP� @dP\tN( I€Á@E¥+ + ,$ŒµmSfÜ*D‚¯Ê„ªv¨Ú«]EEzDµÅ1ZEòuÒ` ÃŠ,¶P¬D ¹šÒt 9f£ÓÚù%£WK™Å¼—MÔ*YV€î±å¿¬GVwø‚@Á-xÍx,Å›hÕ¡œÆÚ8„ŽDÌ2ȈB…„0ð0/退 X/²Õ¿_s5ì?³ðõ=$Õ62+´ôÌÕÇÕ 0K5— ƒƒGLX&þ@ÈBàX-kJ¥ÆÌÜšR¦bZhvkêž’]^3Ei²‰o!¶€ÿ*¼:Ö%eFÁqÐ�¹N2ÕVCÀ¸" €„ÌH XÌ0PUØ }#„"ÃÄr!`±ÙPd.4`bFF@^PXð*™1…)NAÚj„�¦ (:cBËÝ3èXôÕEÍ4hØ$†lQƒT`¥•P0ÿóäÄù|:E‘�Ø " áŒ‘¬€…$ÖèÎ�üžÎŒ åbBÀ !‚åßLv:` ¥ö@ÑÀDà Kà¸9¹ !ÄÈÚ�HÖG…�Lµ4ÕÁÄ�ˆœ€fØB4^ 4HÑòP™J †B¿ÆJ kY`†At3.781s\N1!3„'1bS00Ò –…�Éy�OÈ08P ž€‚IB›'‚ïVÖ@Ð&Ÿ0y¢•˜h0:P8 2ÀÔ9І˜0I‰‚‡Ð4ÀŠ �Hµmnˆò �51‚ƒ]™ áˆài…º0óD'2`fcàƒ¢%¶! |êLAME3.100ªªªªªªªªªªªªªªªªª)©LL�ËG�85q!c¬ÂÜÛMbAbrÔ1±5„nyœ9Ymˆ ¼;1óË ã^¬—Ž»¨òµ'Rjž]-§—ÓFoêb1„!¥Æâ˜Ðüæ7kGi©¡©ìíÇã—àI÷-‡ ‘¼kÌ™“æÒ™tÒÇN˜0#í:f ªŒVTõ] "0&` ³Œ(�°0†  ‹&%1âÂ0Â�  JlK„L1$A€Ìè`ÿóäÄÁeD:Y©ÛЃ¡P`#&„+³!N‚¦É1£¼× Â[Ój�Ç# p(}Þ2 Ñ¤¢ñ™`2fÉ�F0&�ÑÓvÓ*6¡ÌJà ¡`&ˆ€è¢ ’çÉ|(,¨ÂŽ„*\Ç 3[Ã2K†@XDF6›†�i0Ð�ÂDL93'LÀ˜ùBöP äÄDߎJTªItõi/ºå`HÆÐ·°Ô¾hÍÕ¹73 —´sub Ý´k4¬¦…÷ìb qÓdb1çIÊ�uÙ¤¢LAME3.100ªªªªªªªªªªªªª(a0( fÕüâÈ#"�Ä 1"°Ýethê}Žmf`m Å!q§"ÕMN^šÏ:{¹ÛÝ&tõ§Ÿ:�K CQÂÔ,f$V� \0(X08¢ˆ¤›¬Ÿi6ä ø’¥TLbô¬–‚ÿJÝ™ØÝ)èti»)’B—t¸©ÓU"‘ ¸Ž.oÑñ @àK}º)±s–`\(´¦� ƒ¢0Œµ| 2AÒ`ZaU•�Å—!‹(gÇ ŒÉ%TF,Á‘0hLðF9)”"bšh¦Ày(°!ƒbxÆžŽb™Ã„�*ÃÿóäÄéo:Bæt\@œHÒ¦4b˜Hà£^°˜QgLC“‘È´q2œã¦&AÝ�hD‹B2AÂç z€ás<ŒÑ*Š0@HECšbf ‘¿xrqœF´1Pa›Np˜ˆ[×ÂKŒ“DÄÑœ2¦ ˜AP&`È�ë2 MôÝL@0§ž0¦ÎˆÈC&AbXÀ„Weµdª`À)&” E–YÉRaƒ€‚ ºÅšE(RÀ�—F tÓã|™Ô[:Y$À‘YÎrd’ø£~±ÓêîÆ]˜­çÕùš�K¯Ùûõ00@Ñ0#ƒ2Ý�1_�0=C22‰0¼›0F 3E!01A¯0¦B¯0N€0+Àb06ÀÜLZ‹ €Á†m&Ü6õ6L$AYwAŠˆ¥É—M§Ë>`p(À| Ìw Zb„ÆY}R„æ`,I²á졜1ˆ Ÿ´žeᕨF˜‘X*f1ß®FÁ2˜`hÓøñ¤H2iŠÀ©��q‡D.—&ª–»Œ¹1`¼‹L®ÌåÁLfjÆØ†*´w ÂF£àŒ`àpHÃ#—¤€�"œ|’Ôˆa ½Rd P 9ÿóäÄÿtŒ:ÿ2œ‡0ÀQ±‘Ï( ³UÜ� €Äkn$0¨à¡ &rN:(0ãUC]Äën’°¸@ç€ ›�³€!m6xÂ#�‡–º@\i4$JKC4#*£P«T0ÆRõˆá EáPT1UFN Ã`…ÅÇ�Cbæ‰ °JéÝ ÉBK]`°cÏÍþ�à‰íHg)dUÅÆWÊßÉ;tu¥q¦_3w£ümùŽ~Oõ ¦@ý¿ò¹\7+¦Æ%,ÆU*äª�÷}_<–C ;Yÿ}'f9zbAªLAME3.100ªªªªªªªªªª0\0‘Áì5^_3FB‹0üJÕ7�×€0¨0¶ 49CF0�g0u0(À30? 0¸Ÿ0€�0$ÀSà`# Ã@¢ uUWã HE0°QW  2#ÀL:©R5‚À3iœ€�á|ÂX`PXhj0<1˜=1ì 1,ï2aH0#2Ír6×b>å7tÞ6Pù4.$4ìy4`–9T7Ó0¤�5ý¶6j3\#0 1 £2H0ÌËrc Á� Õ.sŽ€’Ü'â�4¼Óî¨AŠ‹˜d¸嘦qÿóäÄìoÌ9øÿr¼8D5¦7��’ 0qS‚âµ– ]×J­¦¬Ìcðå5@²vã[ƒéâmfQf‘ÉêŒÕLdÍ=Êe ¹ººRö¢ž¯+o5"¦�¹}Fbó?NË#|¡¦¶ëFbÔeú„3I{r›£žúí _€ø.+ph»7¤‚�Üh)bðÔn3!‹¿ñ+Ô»{íC×ýü†œæ–óǤŒ¶~´e‰2æµ”žEJõMGåTóëµ>®Û‰eä�=îë½0ï¾0›]~šD5^,C±ÆÞÄ¢®Ô6ÐoÕLAME0Ä�1´DC:¬ø€1k Ò2 ë5­ˆj1ù’2†N1­Áè0yÁš0¶D0q@\0oý0GA0Às0§‚Ã0"€{0 À0O@ 0 €‘@%Ë~` �Ei^  á�›Bq‰†„»Ð± p<Ä� Ã&dZU'00”ƒ?4ŠR2<8ƒg1×ã3¤4×/ÃqN1vC™P6k“’30¢0¡à ¾e‚&Z ã%'�F–ж)ôºZê/�Y$Ÿ¶¼ Fã\è,b¤Îz?™Ry“˜0qúÀ¬´m†*9m¢›@.êõÿóäÄûs”9à_ØA”Õ{Ù"0)ЦN&•EéNU J�d®Ò ƒ–¶0‹°‘cá•9γFH|ºÈdD€I`a)Õ •¸€[´2ã­ÅIwÙi±¶èÆdOëX”æ­ÌdŒIÉ}W»W�z_ŽXÀ ·2nàc?.€àG¤e¥Á0$]Ò…¬ ŠÞ,½¸rËK ~-YP/fî¯a˜}±º9'µ—%æ_òubq£4tÑÊÄZä[':É'‘Bdï¬;^-E�Ñ¿”¯¶¼|z ¿1wÕ@0 @ô®oÜ·&3ÑRaØ &/G^br=Þ “ ZaŽ�˜� Pà €h`J0r71÷ ×é¹8‚@,¹@ d˜A2€b(’øzIŠE�˜d7f2¢ÞbF&A˜þÖŒÎê pÅ€õ˜ˆ �ˆ�Fü�©Œø§˜]� ýAP;UšøGG±.gÌDCÁüÌ@ÄÇÐ_Œ<‚¨Âh+µØìû¸÷æY½\wXqt€bž#æ(¢þbÖæ·ÍÎ|¿Wìãµc0³ÐsÀÀ‡@0A€ˆ˜€*”0 w.4`"¦  ¯Ì@ ÀÔš0€!14Lf@Æ)ýJ1‰áɈ%!„ƒA…yÃ2YÑ’ù–B(„D0ÄD,Gƒž&<FæåÄ0 H¥¢`È(`ø a0R­æ‡Æ�Â�Qƒ9€ à00d 08]0œ 0ˆ0 _0,0ˆ12¼ 0Ìf1än00L4p2à+0d03‚1ˆ ŒXÁ!áŠA˜K0àƒ1d0(0ä410l™0ì!0”0Àfà øÇ@œÌÒ|(@`@@)˜D(…Ã# Ess"„Dgdñ!„ÿóäÄâ|KÚ<�èˆ&L- Gƒµ¢ÎD`0¨V` L<#4™úS˜;˜£˜æ Ș@¥aJ€Á…`H`„`(¦€êÊ0n.#̪Q*9&%Ý0p+€AÉ‚ÂH ”`Ø\bØL.Ì ´D4dK˜²N< R¢ç|C)45­^½.ÌL  6D ±��q‚À‰ƒ €T-0Tb|˜ w%ªöXbë4ôÚfML·4ÑÔ©€^X –jwµuAûçrÏõÎm%aQ`°Íe(ˆPãK‡d1¶í+yéчj8ku²¦ÜFv´Ôj·)©nSPâ5n¬Ú´ULAMEUUU*‡qŒ¨ÑêÕYŒ�˜9­¨5‚ù„�n˜³‹Aˆ g˜Íñ’©' ±–áÆ�!�ñ9áñƒ8”˜hØ`liက˜8a�;•AàˆŒÀLÈì³6� m4œÈ‡³mÝ΢0útâ<³°ÍÌÁ5“øÍ` ç©µ ær¨ T„ �„ �C‹F? hf`R¨ˆ&,Z1Q4 ì!–L$K ÜÎ``ù�‡Æ ˜èÿóäļcÌ: ÞàVL$H:HsrG@Ly¯¤ó†½Õ¼8F(„ @)$�¢1ˆtHrl$ÊL‡©U"ù@̾D tÒ_ê]û‘F»O•ŒècòükMJ†±Ê†Ž’þqh~S?{t²)úÔÔøLrÕ5õ=ü÷•ë¶{bÏÛÃêeI¼÷ÚßzÝ»ý×rú}ã[ ÜÖû—?óË:L0”W©fµì&ò±OzžÕ[ì^¹�N}=‹ºÂÞ÷jõmk8¥É‹ö§êîU–ù?wùo•d””°½„CvlªLAME3.100ªªªªªª0yq9T®£(P%0Ø,ÓH‘00 3òŠ0Eó,r�2ÞÓ B3ö%Ó !�4_H3aƒŸ2Ä=Ãu�^4ÍÑ:U°4T|62ä1Hm2UŸ7¬ä24N5!’3Ø<8#0= 3:sÒ=!å0í·5¾i2 ˜54¸4|(3¨o2Ð�1”C0È›1œl101H\2LX0(L1ÈU00|%2[0Ø1P¹2xc0�S2tÄ1„>1l¢3,22¬ 1,è0áVÇ£#†AâÀÍ@ôÀ¤Ãr ß 1…�"S4¤ÒJ6bŒx�ã€À82ä€ÊÈËÿóäÄðpä:÷t¸ÂÀ‰áV¦^Y–08hÔDp6þ P¶mm:!�•*ÂÚuŠ­h½ŠgšfްV°0š´q©Sô˦#’ÚX'^ {(aûôÐ|û­1Ú¸SÐãI–W¦ªT‹UÖ4òØÅŽ_™¤¥¦ ©=O7M† ÇÒz]ú'÷¸�ÄÌ?Ñ9‘wRÿ³¸ÔaÌÛÇðKõDÖ$pLŠž/C1*}aªEpqrߘ•\/Å©é'á˜j¼b/MÝ€é (v…Û¦�ãZ–µýV�?37µfýÙªLAME3.100ªªªªªªªªªªªªªªª!L€À$’ ¯ÛüÁIŒb‘@Ĭ(ŒFÜÈðLÀ< Ý €ŠcR¤F`<5&ŒBîa2;fiï®f`%FiêzcÞDàb,.f€øct$ÆáD`œ5FRâf`ÈIFH'¢c€+†Z¥À`L F3bîe•aˆÈFqU˜tneѱ�fE˜¤ ™†a4*c�9€Aà‘ŽÀ¦/ ˜è&™4(`Á�ˆA£“AŃLê54P°ÍDꪄsƒ¤ ´¶3Á-1Œ(HÌR!0@ˆÂ‚à †@pˆ2TÿóäÄçnÄ:÷˜`d�B¦k (b¡‚ @À€²ø3ä(`êrù»-ϰ·b ‰DŸùYMõŠH%8ÃÖýÃîü}çgåÃuâQ(CEŽÂݦ±3‡¶�û©NÄ�BòÙÍŽçΙ¯C\tYD”úDZ�ÌPX1?Å«ýµ>º°Ñ²gØ\¼’P'l�C�Á ©A/‘¼S%¬˜,î: .•¡óLT0P<Ê„!`!“ˆ@䱃ÆA •hÇ©3�N=3¨Øes²Œ³9Ž®p6Q”Ö%s"ÌJ�0ðÜÅå° <ÇÀc „—ÁÃÿóäÄàlì:÷@b�°à R£3QÐÈáq][Ë>“¬-€H׋\¶Ø§áˆûEÊ} øD¿;±˜u1m-UnkáPBªªþ]¢tŒ"NR ° ö-r6ÍÔ€˜.ÊiGå XÖò²ðüºñ¯K°ÈâEC KV7ª‚Á)žå�·”ý·‘>_0/ái[+[²ëFñª®»(%U‡$B-Ü9^�R; ™Ÿ¬©!„�zÔ'Þ1]Ue —IâZR|.�Q�¯#ºG8'¸\h©V]2:$6³–R<õLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUy‚(Li¸ñX;ù˜& ÁŒ€W˜g!‚ј¹‡iŒø4­ˆˆ­˜Õ وؙ1 –86w!—p­¸‰¸w˜V‚á“�˜˜ ¹�تgi‹è–1˜‰€X—ØØp ƒ`Uš9IØ€‰‚#ŒD¨”d'ÁQÐÑ‹‡ °8´,:" 0`H©†àT ~bªNh¨XL5°ƒJÔ3Ã^¥3õsZ'3’s%0b´¶#øÿóäÄÔiä:ößqñ‘‰„%AŠÍ,8܉t^5¥LT6i±Vo3A~¶ºzÈñšëMLÆR™'j¢ðLÉÀ¡A79 …b¸Ÿ&Ó4~)q0T�9q²ñ`"…�8À›ŸìMï[ Câ5¿p´ì­³*™ŽiÕkK{tÕ[ºa�X7‡E+[æµ[ă¨Z€¦p„æÖÛ•Þ™ã­8æ+ÔJéˆì؊V«£ÝRä­ˆ‹9[ÇîФº¹½±:¹ŠÔ¼Ož0(šTÍ*Õ—L,S©ä:ãôƒ‚**qëÅLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUq°h'0 )Á€y˜|�©‘/˜�q‰"�°‰˜Ÿ ‚X`˜¡Š‘ƒ˜t„…à•™—1…!+›O•qÃ!è‹Áœ`ÃɉKQ°Ã�‚‘–g©¡‘q£¹¤Ø¹ýsaÄ`qÀ"‘•å©¢cQ� Y„bñ�A!ƒ‹‚*„é`@¹é‚ fÂ3&�JT$ T À4e¦dé¼:,ØÚO1Ä�4³¨ Æí3óLÍÃÚ4ÁÊtë›P† B`p 0Ô>f`�CE’°Æ‚}ÀÂA ÿóäÄÖjd:÷t¬‘Ä’R$!œõ�ïFèoÉaP ¥®¿­y—FÜ)Kp§ydnÖþ;°EW’I¾ðuÈ gLI‡5çuÕy$êVÔBE#ŒÈÞV@Ò&Äû¬W±|²—MœFÜGñ]е8rFÏâÎ�V éîm\·EÇ©ªLÎÆê?ðŽQ×#¬!‡pDNžGIÊ5×ç“=¼üÚŠç.ä5+—BîÐKdµå1×n«ÆØB Ö°–OÏÓÞŸ™v¬J,ÊZÜ6ã¸ínVïÔ|¡é $¦=V–)”šš€¤!…LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL€$Ê ‘Mý¤ÇØLAüÃü·LAÇìpL @pÌ>Œ.ÂÄÊ Œ&¤ÈL”4.æpÉ¢ch¦’¥îa¼å`Àæ¢Þ`2"1!Ö*/F:à^`¢;¦Á4`4Š&L£ðaŒ.f=!¦†€t FR>oá¦.l!†6m£ÀQ³K"IóJ 1ƒ* 1AR4ö00 !“ƒˆÈǬ Ôà� ÅÔχ AäÔŽ ãdP@ßFŒœ€ÙL ÑC›¡™„‡—¬ÿóäÄ×j´: öß *Ž¥¦@±`�¨1‰˜ � U4L0¶vr€Áü^µåª¥JíDý‚!äÖŸCZŽg$ôx‰âvôÊ7LcÔ/ŒÑâ_×ÇA.§Ô‹+”é£P‰fÊ¥Xn®Ï×ÌÑȇ+Œv© éê™òAD)G’¹a9•ˆ$I¤¡nGÇn‚¡nÓ{¶y“›mïZœa¹ÄÜ;±·³'\["°5î‡Q|Æ1‰ÏÈi˜Nhä©.Å úxÈbD ¥9$œê<î§ÂœÿSŸÈaØÜ~8$âLËß·±ÝLAME3.100UUUUUUUUUUUUUUUUUUUUUUŒ$ŒÆï’ÍU‚À‰4 Á€È8L…ÁÆÑŒ-„ ÍHwŒ<Ä�¢L5Á@Äd{ÌH”|Îì@ ‡ÖØÒ,)N&�L`> :Y�q6Ì'H ‡'Ì«lŒ×# o[Œw`Í�>LµNva�J��*‡ŒëYL­Œt' œ ; ( @ÙA„ÖE� éóK1¢Ã:?1ÁP()�˜¹–,ãWWŠ™ª²�ñ»»™¡‘¤ ˜(pÂÃEB:´Z¤Ñ·Rê—$·²¥Â@u @À0\Y BÿóäÄàlü: ÷v¬v# 2�‘à)r#µP9¨%ûe/;Ýbsî×Äà,äÐDZSj§‰¼ŽêF …ßjXÕ› �¶9·®™iÕX�IlĺRíJ-ÌM»òYLj’ÔFô¿�åÙ ÃcŠ07íÝràI¸ü]÷�áønUCñû’ùØý-bK+ ‚è&wCo¯L’;'‡e3�É£íWúp^»ŠPé²M¿Œ5»0‡§!îry©L¦Q5Œ?ò‡Ö0ëP¶ÔѸ!÷|&f©¨¥ò¨þOM ªÌOsqHŒº"LAME3.100ªª¥8³¡Ó ˆ ³ TI£ CX£|ì9Óô%3¤ƒ¤@ÓÄRƒ Ã$B#+3È+S–ŠsXTc18‡S:‹p`aÈØaˆ b8àeLbÞaX„f¹°giàg*ˆqü(a:Zt%ºe@Äa1œ¬†s fˆ$Dɉ)™°Š"ƒ@Œ$( amév–ÐÇÍ FNXaFæ|Š5a¦ÆÂ”o¶6|`„æ `! }�!*Ú™G¡ÆfÍŸ )–%IB—ÕŒ¡À~“b€f̀ÇBá@tÍ0±a —ÀG�ÿóäÄôqÔ:ÿv�‡�KÞ­Ê.ÜŸØeR¼ú™,ðp$ëýWŒ䫨[½+.¤Ë&£u’æ\ÑÆ³4çCðÔ�Üt\ft� ÖTÜÚTZ4º' zöoD\gê<ÔË)‹,¨’ =ð-Ž?L‘ÖdÕ² ©×#wR†ÝÒ€Zs½ …»+¿Ü�œ:‘êgÒ‰ô{$.„¹Ð}\ØË³Vë{-–qÙˆEß×á¹»Ôî;n�ªÃ²F)ì².úP»Ð#õÌÃì9ëiQØ\aà‹Î5™‡fe¤qˆÃì±é‰EmOGªLAME3.100 `“‡üeJ>bkõ\a§ $g“Nd’‡dÿ–Æa£Rc,aŠÐaË‚n`[¾`¼a_„(`F�Úpð&=€b¯&Jâ‚h¥„)æ€&03  ‘™*q’‚‘¸ù³:™ÎÑí¢vy· À „T8¤óeêL$µ¸ÈÚŠò–ý€°€¹ž1Åš®®@  WqÌ¡`®üaýGPËÀ64àX!`±%Âó†R á ·¸;jùOKÁOBŒíÒ·šliVBWÃ�UE\»ZÚ˜#Âv¬c9Ö(‹ecåËØ&Ä”€Š�H(}|ÿóäÄörl9à*þð� )^1$5Tël ª^uf_‰j¶¥àÊTÄ ¦ª´Ý ó0òâ¢ÛwVÖ° ô,Ú¤KÐHDÑøˆ ˜ GÌŸ)¬ñ†4À5 £-( €<ŒÍ¯$d3,z°yhÀ‘EÜF5�u½BÌPÔCLÒÚ¥‹LZ+…‘¬å(J¡Ð/WàîÚÆ˜Ý€×]½ �Aß%à[ž©¢êW§B"&»ø”ƒHXfeHù9h–‚Ž“iX†ì±yÆZÃqPÂ÷ ÒòXD¦éñ ¿îõ| “ Ì)ãL³˜è˜“däc<$bƒ%HÃt²ƒ¬<Tó ”B£4ã„óPS¸Ó` P¨FHæ( ,ÑjÌà̰ÐÕX n¦,ØÚ†¢ MV\œ€3ÀG'¹ÈM0Sº¡¸iyÖa*ÁN¡¤Pqì pŠˆ¬ `hR„ÈÉTšû –º–0AÄËÒY@iâ€Â޲- �– Y€¸ª¦¦ƒ¢iš‚? iAë%!Ø]¶"/Ù€”“˜‚´Ä� Lô¨‘ i†­8ÐŒWq™AÿóäÄÿu\9Ø3_ÈAs“ËÂ.òZ¶Eï#T ÀÝP=:Anmi*Æ‚DP0fx©"†é~Ú'šG)ƒPUl†À…©€é‡U T@Ü�H‹´•ˆ™€ -jÃÏ 4Å#ÃĵWÕ­2AX‚±«(ÑŒ¥¼cLž0ÞÄf… ª0ˆü3èS2|!0„“1 é2Äg0ˆ&H…`€HÏ‚ˆÔAødMCIC¥é³‚Ù4Cf)&`ø‚0S( 50HC€n[ pöĄ̂z3%p71L £H2Ó-·ªi¦N`&  j`’F€(`F¦væZaR9†weÂhg¦a¨†L®´Ísp/-±€°(dq” I„èH\!‡ BH�8'%qyÎêr\·½ù}HC°`Ö ãÀ6`J` @�i�¨˜teøÆŸ’Ñ=04ÏP7ž94Ö-2S  Œ&“ ÿóäÄü|,:�ðy�`C„™„ˆH˜E‚™ƒÀG¯ÐÑQÕ·¸Ì3Œ<ÍÔídpü7…>n$û5ဠ˜!1�`Qƒ('˜!‚(`/˜ € A@ Yjö7/µ,¥ûïs’Ep¦�èNjhxGø~Ï0Á`u9‚`#�É�¸‹@°-˜&q€8˜ €Ùƒ0h €"Nå,Ëw-c/½y÷™~\þF%ñ˜Û·/˜³�çâýKôVr¹zƬ„�� ˜�) úI5Ñ`1G¤¬°0Pp¤;CcKí ÐQLåˆ,ÎÆÐNÆ™IŒM8䯙M¸ü‡NCüõ7N™èÁ M5èÜÔ 4Ï L×Í™dŠjQ�áà ùŠIÆ[,ŒÀe1�ƒÁ Ì 0ДÂã� ’0P`Ĥ#E¥� À7*˜êåãWDLhg4Ð Ïfƒ;¤Œ¢’ƒ V* M�7¤Ïc†Œ$ 2€üʆ3ÀÁ!À�@ÆUSFÕ†Ó¼ÒUқŚ-±€@ Š©z\Òä–U3W \£H $ *0lÂÂ3ÿóäÄÞoÄ2(ÛàL„ PC† :0H!£Q�A…‘0 ¬5n)KL`EÆKRÈ€€¨¢üêvƒ¥É�› á,2'‰«»**}˜’_+¦œÜ’)LZì4­¥Ý-ªšºˆd€W19“ È,á«k4/j|§²?:eÝH–J¼”ø\̰®–"ÜKª Î™uKj�¬5aTˆÐ¹2Ò¦tï>« Î�èi�5潜FŠÍ7Õ´iÚŸW&[g+]æ2˜eÉ�Æj]œEÚœ§)ú•Z«;f$å;P÷~·nÒÒÒØµºÑ'eý‡owê nAo„y¶V§òA™-Vnñ¡�á�˜0Æaó±�Â&51Ÿžde£æp™*F&‹—›lh¡é€ 3¦$ËDÓ@€AÀ$å �†‚ ŽP.¡’f(*b†„̦@Œ¤cÿá˜çƸ[™?Pi á”PÆYF”¦‹$p¦fÙ…Ìæ£(˜œxqæÙÍjfgAˆE€öeaÀŒ <| ,Xƒã�%à/ëQ/òÖ"¹�zƒƒU‘PŠ™)‰XÚÌß<ÃÅÍhXœ1` 26 ™­ ÓŒÎY+ÿóäÄòtÄ9üFæñ„7PtÂTë`Ó‚S¤Ò4ªPŠŸ^ÕØHðRP±–ƒ‚€g”�Ý•˜§šé`¡ÁYŽKxÇÐyœ@RE¤Pˆ�Ñ%8Yíi[¶¦¸b(„¼Ó]©®FÊÎ)šÛ±2B«bM½ÅJVZ¼Ö­¥ÔÁ©a²Ù¬²¶bÞ2ðÅHøÀe¬æ>î§jÙWMÁ�2æŒ !¥E¹d¢~-UK[‹_�dN3¦ ½–&"àƒŸd;2¦¶’í=5žöÝ%Ûƒ/pÕ™#×cÂ~bþcá `èn`XBŠÀBcÀ`lH@ ¨,˜BNÒœI˜ft™2³™⚺“œŒ1‰¤‡^ 'FÆ#�†·�F�æ4–�¦\ †‹fæZf ¦@§Âަt¨F&.³¦Ù8€˜Á1�ÃahÇ€ÀÈa ÍÃM!ÄåRMI(˜ähìÅÈ”ö/±�¨QŒª¨B|ÑQŽ8Õ UêÏÿóäÄòzô9ìîó„]PÙLŒ€¬ÇÌéÀ,L@Yóh²î�‰â"‡—�.Q§ Š€‡*‰@šJ�M¦EBZ¤XgñXidÒás´ÅV~ÑÃ@:|·$îSÍ%àbÍ…|¤ãb.Óu¥±²tÆd2úò«—¢4ë 2&¼ý06b°ð3= n®Kiδ¥’;ÊóÄå.²äS7>Ô MnŒÁ ¹�4�+ïl±ù[´Ø'Üȃ™h*ÒþµGqã�[ËܱªÐ¸Mô6á°XÛý}”EkÃjLAME3.100ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª=.ÒmƤLj$àS ½>gG攲x/H4D—¡!¡Á:¨"¦rK:cH&~"L‘ƒêFßv— Í4äf5È#AB�ºlŠ¥s+XÛ�36šK!ÊCx²ÊDG¡†µ Žçj)œôÈ6îÀg¢1–Í5Z$½�dlC¸ù›åøXÿóäÄ�Y:>ÞøË•ƒÄ†Ëín³ˆ)‹;ñÙ%Œ[Q¥Àßt£.ä¹F˜äøªI.Žõð‡Œ¸¬ñ×B’Úe/ÓÉ,uFá =΄ò§<�”Â8ÊL¸Ÿ0ùÚLÆ)YL—®¨•8T„úÂ=hL ìeJ$醢4�Ôâ�…ɱœþ*´OHQž•x�XK›†ia@—Ô1 4´]¡G‰¶|)f'§ü(jeÓ;RÊ>bF’ s�?œJæ��™D$&ò’7Kº˜°äé [Jó…µ8­2ÎÑÒHŽf�qhnfLAME3.100ªªªªªªªªªª uA#cþ3t3a:1n“/Á½1ˆD#r€2¶ Ç5á£Qš0¦³˜q-áÕHœQ‰† 'Q‰ ™°¢ºfXV`EfOÔWªl%fv d¨Ê €“þ”‹ ¼)uE >!8Å8?`3áï 8èPXœ¤h”:'ÑfY´¸Ò±T,Ñd9 €ú¨œy$$ þš˜r÷¯Ded™2CÍLãA(/�"ÁˆT1Äo��¨‹l€•ò¸ŒrQá9�8)ž ¢LÒÒ#ùwÑma "ìe ÐP+Ef¨ÈÑܵÜ�㥎ÿóäÄìp9ÔôöòT¬���ËœÙ{rY�3âÓâÈÚÃà&ÌœsŒ®še^˜$¬%³±Õ(Ó‹b,¦‘IépÈI®QàÑx�PÁ,X%eAß·€,*t…C"•ÀÌ¡Æ1]�Cbü0º0ó)RÙ1‚+S ãì3 !ó00L3 ±b"0# � 0 dö0%É@™À€Ó†(á’gÆ$fÆ1ňi)�v'¢xj˜óGnaãäŒPÄc’dÖXŒ1¤‚¦,±‚ˆ’_¦åþTpÓH4Pa4)aJÚb,4ˆêŤLÁʈA2Eå,y$P1S/ú‹‚¢aÁÕ¦�nK4X@)š‘( KDñ<)eœ!ÅŸ!ä—‰†sn›äÅ5¤ÜHàHe%J(挰P RH„@Ó^‡aÔ–@•@�ÀÊÿóäÄÿuœ9Àö²Œ¦8±*R�íÈÇ8xa…ÉDfæ2 p²„I‚ 4 ¾]âaƒ� ZâÙ€#Á˼+ŒÁ Z Ôˆ0)Ú  !Œ ±4�JJ‹@YM w¢IXq/ù¼p˜HFœ¥%$‚4+Á—tF-—Iß]‰Ø %þ›D¡ç—9B(¼�Ʀ9ÒFB±Qy5!�—¡1KÐߢíGD9{ÐJ!X›LAiÕ€A`•  `¥,–èv¦â(T¥ˆ uÜÕø¥Jv,` ¥P”~4< 5LAME3.100UUUUU1J ³n2�ƒ:ô¸Y1i�Û`sñ.L˜' ¢ŒÂN0ø ¾fÍæ±`Âà Œj3cIcÁà€Ä« 4°�°_©¤2 �“J<¡Øy†eƒ<ã! ›,=!/¡‰‰3±ðĈ̬¤7 !ÐFM¹òBˆ1a¦i¥!5�/ƒ,´}dD .Ÿ ÑÍ ÈGñ\¢$#–ÅU*×2Ee¨þn…Q]ƒ¤µ¤Š†×émÒG�ŒKÐá P)XÁ¿ /A "Ê0!Ú©úB:q¤�%W ÎÿóäÄíp,9À÷2=ÍAÕTš!AABðB#Ú™qâKµì�–’'“ ©Ã $ªE0†âÀ]@qâC¦³>"ž…ÃVØp¡âРDkH%-@��öSd&4ERUÁDṞ$ê}˜b¤_(ƒ WŠ`©R J¢&C*bMy¬(0\� !Óİ0Ip_rA“”¼Œ6LxZS%| $T²”#.X8¦*àé"#Øô[œ²Þq©y<À˜pÔ{|STxáí-LÒf\ 14Ö¡{‹ÖÐ ACº0¢OÓGã>1F,£ÁC2Úcð\0ê S `®04ãYÉä;MÌ™DÄCÐç°4D p!@xÁ  J ¨!°É`A!R‚8A&‘X0+Ù’ÈJ+DÐaayUŒÉYv’j"$à:Ài@b@྄i*RòE—äØ Xs¤Au‚"@ˆU 8[³= £fA"S/ [&D‚(:[ ~d.€’ÀÀÒU˜J8Á ŒhS8àcðrI˜4q7Íd¼@CŠÃŒ´dJ)KŽðˆÎA6#Ãp B Ñ‹°=�°hm­!º’CÒç�#ãÿóäÄÿwÜ9¼ö²T:2(:åÑ,è9‘ç\äA$T'sb8+âÁ ³_|Ð@` T= R±v¡ÀÆ¡ef ÃÂB¢ç 4d¦@ˆ0 CgG H!À!( A€Ö†�mq…Ç0Á Æ,Ù@·å­1U@1gÃ%d0O3à DL/@ 1$ÈV1¬Xr-E¬Dó’þA E0’„¿«’âŸICRÕ.±¥'„°"íƒ�% õ*�&0Ý&\¥J[BMR@"1ÒÊ��ar½ÀPÛ ‘ ˜# ˜ÓuLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUoþêS9Ž“u;C€-…ÓƒÃÄ@�˜ˆ 08!+ Xó€�¡,¡ƒ€*c€�f!¡Á¥âZ9ˆ†^D ¦IC ’Ï&! 1ñ&€Ô¨ ¦-X rmx ‡$°“ʰ A��-)õ˱°>€¦Š[BˆÂ8Òþ,ɃšžúR>«YéÖšIVžÀÁ -ÓU²š¼Àëƒ3+ $�HõD�ª‡Š àÛËð wRuk+áԔ¾áÁLU ")ÿóäÄÎh„9Øôîp\mÈ,¢0”ì©ÉXÐ)t €)¾D¾Ô~0ºZˆ UKWlQ­q2‡ÊïCEÊT­ÞPÞ)“Œ� @2Xq5k3–VX{ÖŠ¯TìBÒ�«YlßA⪚°6�s4AvÕ‰£�(h nü2Çuo¦rÙvZ„<×™*FCR§qR-„‚Yku_/{œï§2gL…aÖ3“ kìC¢ý*»c©¾‘QŒ#üôÀ ‘ÍvØ“C\‰|Ãb-Í�¢#þ¾PÍ R`'«`~›3?¤JïLAME3.100UUUUUUUUUUUUU,£$�Š3!I“‘½(Sðp³ °\C€tÀÀÐFÉ&"B8p‘ŠaÉBb¥°˜h„i—ˆª`eÅA€Ì‡ >BÁIG-R!j^!!פ9wÁ¡—ÙE“Jì›3ÀAD`ˆDƒFªQS>ÉŠ¦"Ý ¸&i‘kDd8 …†Ô³Ñr@‰OZK`Hªr÷—<»*kË›Õê‚ä%R–ž›)ä^T´/ó|YpW’_E•�´ U(+C§Bh % ‡p Mâ�~¨‰¤ 'C�ÿóäÄéo9È2ö°|]‚ÆÄ9… 2*´�…×5ãa+”½@ለ™ë¬jÆ´‘‘ �Š $ Í„  ÔXU�!J39U31eXP (y‹Á‹¬rö—‘éÔíšCsî"̉,³Ó4%þ”(Á…”³�AH„ƒL0pGCäÐm¢ÉÆ¡DY"„,–žž³ËåÀ.ŠB�R•Ú`hÂA!k p±ûœ†ËÁþu�!@ Ú±"ðX¾¬J¦eì4åaì Ýb(�¹¼ARá£"qz•LAME3.1003a;CÃÈ4¸#ú¢£’DóKsDp@Ì O7Áª˜'™O¤�c˜¡F¸�DÓµg‚´*‚XFÁ‡q‘¹k y„ï2Ï-ÀéEÇ@`Ž"²¥ë˜ž ¾e„ThPÃÌ!IÜ“Aà-­Zá  ˆä\ 0€ftLØÐ¥³@˜ÈÄÃ/¡(\q �ž$AM4@0Á4Æ$íÌ"…•(ÄH¤©RÔ5 žÊ[ÉBË*ÖˆŠaA‰´`2Å”³KüXS(ðÄŠ(dd€”ÕZVÄB¦Š“’ŽŒ‡é—X. Ò%MQ#È–ÿóäÄör\9À÷r >žËDÑ(X6bŠ, = .úe¶Jçņ¸¨Ì£«ð@ ð(t` {9ƒŒÄ 8¸«¨‚ƒ©$D Yz‡# jE0H4ƒ`â2 ¶ 2Õtµš6�HJ›25¦é—%O—( 2j¡!¤€—)KK€4!d‹„PZŠ8†hÁ 2áÁ@̨B À5N™ú>•PÖŽT"HV`€‘†&y,‰9§È¦ �–0 �†Lk“J6~k! ¤H`ð3fJLAME3.100ªªªªªªª nÕìåRdÃZb«4d¸¤h±ve±beA aèX`¨Æ^#�¡!™ LÄ@€Àƒ8\20a@à |ÁU ¬HRE@ƒÏ;a7O, Cu’Ø@A4ÂÒªxO8G�úuœ4;IA ðàØ„d—¸Ô®Âs¶šÁh¥Y˜Hâ]!c´$)z ¡   (:èú¦hr##ˆ‰ép­b£N²›LF(Ò �ˆÿóäÄïp¬9Ä*îp¼5:9£ €i0a ;Å£”˜\pºi ‘ 9–¹tÕAHTŒŒéU—37kÌæV–ÈZm2Õ\-ãDY¸qøä4 òÖò@S1"’ ¢/ó*OVxÑH¡Mh(v$M j6H®…�Ì¥>�Í_ÊÐÍМ�@°…~É@SÑC!´ŽQd��¥¸€È Óˆˆ:!�–X1Ea$(±Kš„åmઇ„1”†E$�uÁ�hë�  Y‡S ¢x™X›¥Ê„§ÐŒˆNYá¡ :µLAME�p}>lãän,þqªjfŠždAa9XjidcðxzzB3áD¦”šR,À :¢D¨1 #2Ì΂4Ò áIºH* Ñ%;0W 8(ˆ\E¶^01‡ë HDkÉ™BåëY¦I· y€¡qŒñ¬14Ç2‹3 <|™®Ò!@¾˜²—á²ÀW1·8.‰@ P¸á›!™àŒ"�bÔ2H‚ Ñ¡äÆS`ŒYÉvb†Yo%0 �UH!`#@šÃ=„�‹Á7D�y}L0$e£Ž ›Æ±c*™ &\‰B“TƒÿóäÄûsÄ9ÀHî²T p¢¥Ϫö*™I²DSOHR#ĉ¤¯€hia¢´†…`‚H˜¥KÔ<¨°ÆN‘h`ôgQ-)…¡ À©j¢!rK–]LH“JÅî]ô4DáaÄ­Q4�Ä„R–p‰Eè\„´ñ Ç“’#èÀƒ',Û4–«°±€CYfàlÀÌK…ƒ( 4L ‹ÌèÆ¤ŠÈ,i¥b/øò¥¤]#)#� (i¤ (=v°&À 4Áĉ]�z˜"¢"(¡l‘Y­a��D(JÐàââ1†‚1ªa#&B�3*9<°�0£  ž1�f婃 f©“àRt d’ ÆŒ¿ ¨.Í@t&¦S©>mž¬è˜ñ¥³;M ¶la ˜Dƒ†"D …�æD„K˜/ðŽ4ª˜�’ðÈ4á�*yÕ1¹02#›”ŸÐ„¥E$Æ8‹teäe�€ ÍVÌ´XÐQ3HctRÁ¡œD¸.ã<ã_², ¸ m²¡é” ”À ED=Zh��,˜€e+"ù5ÐF‘íyFp �Œ ( �€T Q)Ì…“œÏ$,ZZ €L XHÒ ÿóäÄÿxœ9¼÷2(é~“å*ÑÜd.3xJ(@B¥©Š¶+b2@I ŠëMÜ`¨FÑÁ !XˆRá‚@x@Ψ)²¨f¡Ë¡ �`D 1Á„h2ȱ…×°Š ¬ ¢fM"† Æ ±É F-Ð9È€Ö0i4DDÃEC‘0$\©KÐ0HH ž2QtMPÁH�‡$ì/�nÒøÆÔÔ%5E®´ód(Y¢Â‘"„ñ† 1—Ð,WÑÎð1ÌÅšz°¾ácX9PQPÛp±ö*»LÐw  Œ•Ä›6v L¼h©Ê16cSX‡2Ò 3_¾ P44– Ò'3‚Œš:Oë˜ã�™žqˆ"}£ðèâHoH´fŒ'Dç1—B€NÛE0117™€11t�õ ÁÁä¦ú=ꆈ 1€-q Áœà‡� à,P„\À j]’ IAB0¸awƒ%ІÊä”33<3 B ¢GÀ 0b¸yœ-À²¦&3AÅ2ˆLP)¤ÃRèʽ€Ð ³ÈO0ÁH3k1‚p€¸(Pi’ /· êTƒƒ @¡«µÐÿóäÄïvd9¼÷2c`®` ˜à¤ÒT²”®Ig]Þ<¤©º Ú�àFBÀ�L ‚ zgìTS¸¨þ‚Tßp,  Iä–iåC†ÁSö“N§’¹‘)[ð(Å)LP˜„  CÖ¡ÍŒ N¤#ˆ+VvXhg áÁˆPBh)2ú$#-ß-HG€ ð%ØÉ)E0\ZPRÄ e†l * éDjn¢ÃËL‹&¡Àè€Ç˜ #œ` ° ›‚�Ys˜ÁEÆ2‡-p‰F¼”i‚r–ž£X„:ý Nh"^* ¼È ÃD¥M*DŒÄ�Ḃ(ÆÐ�¬À #Œp„T`æåXŒà�!�g–ŽŒ6ƒ `�ÀrȺÎL�¬38ź "š,Zq´±dRÆèHÌ@…¹ P ” aƒ 5鸘ñÆ yÙ28ràJ†BaÎD£XE e‚�ÆBùf€E�Ê€ .d΂S!°4†ðÀ¦N!GÅTÀ ˆDˆ_F:Æ{É„FÙþ YR@h²¢[®Öž” AŽ…Ap”„ÀQFÈ¡�)IšóEÖ1ÿóäÄèxä9¸(ö²|¢h€fŠ^R¨aÀ "ˆÈv2…Ü-Yx†K�I°±¢‚ \Å֢埑ÁƯæpˆ'ªÌaš  “J1�wKB R‚yÈ‘VÓæbd€ÜP€$Å ¡&X%ç.XT1  ¦ 4i1]}ZùwŒ Ì\Ç ãløn –%˜Bp$D„5 ÓÞH | !3Ä 'I0·"`.šÜiÈØ‹(à]ѧE£^‘k ,øái&‡ÍQ Ç‘/ë”ÕÊŽ 4 Œ­q/Ψ°Âbë»"Ý &ëX­ `Lè»ÂØêô8²Š‚X 8j;ƒ ¤!3¯Oî0GAŠ0 ó$TÊ$b#V�¦"A �) TjF™Ãàfƒ@!�ˆU”I3"ÕJaŒÑÁ�Œj³v³VPFhÅ`@·�>™¯’€B”&R ¤ä–ç³`A#f‡ˆ|Δ’Ò™±„ÙDáБ ÎË9x°°ÄF‡m g>$9eƉ15 (©q@Ç•X%1™Q„2-"ÁÈ@ LÈ:LH‰T$¨b3ƒ—ìei*“1–ÿóäÄ×sì9À2ö²8–hÀEÌ‘©™j»*£ÂC-�м¦1Nêx¤¨3Ôã1ˆ”0åi@…–Ö’»Èû@B¨`%Bä:ÂØ–ܼÈÆ,P³gÖ2¡â©¨B Xá!jnƒL‘µ†L`Û:À).K2ÅÔ IëT}\§€�Ö –,ÉJäÅ g²"‹è™f0Cª^¾ŽH,±FÎÞtÙ,¿€¥‘HIRý40°%ìLS0€Ç‹ä™% .¦&Ž tZ²L©|݇ÍÎUF^§AƒƒŠ/ ®Ùʇ… BkGd2¤µ`¥ûKæDØC.�8‡6˜|3€M1H‚2( ^æh2,ˆ°Ž�ƒp  ÌÌÁA` -Àˆ@�€@ð&J …AÐ4F .BÂ�@3: ŒÀÂð@À†}©�\f bÈÌÀ q§&D*5E *…ÈR€dˆr„e‹ XgÀfD¸PpP€@¨@(6²‰¥d”ÌÁ‘D´c 0ELù0åB¤ˆ'!�ÍŒIs Ë `È—!#˘1€`L�™˜bÆŒPaS0QœÿóäÄÚ}„9È]Ð$d¸@1€¦Té� b�à†=h´s<˜Yᦈkœ  Ɖ1‚c˦à@t£B¤Ø"Lp²€…®&©ÄC®²†lù� `5Ài‘ei·_а'èˆÍÅÄo� ‰N@”8`tÔXeA†1‰�…KŽ0‡áƒ‰� I~ˆh@0BÃ…CƒK@È -šsƒCBÖÂs‚€#ˆ4©‹˜¢ËQZÌU²Ã µÕ*P(/ 7<¢‹_ö|’;¦"퇣Z;5”(«JB5žH¬3ƒD Iµv�HÔŒ(�0¤ÏpÔjHT±JõDÈÝÅð§Ðu¨@eáipƒ�ƒ>Ã@ƒ ó0@\4˜l¨tƒí 00Œ0„).rçH*Ë 3I'’%j¨˜r áf($:qób1ˆt56 s¶œhÍ_…ÀÊɉ¬) ƒˆ�À¢.LÉB-ÌÀUZÌŠ�ÀÊÀ…ŒÁÃVÇ@7n� œîþ T¦²Y¨8‚Î ªª`g“°:5Ç‚Ã̸óX@¶@bÚ ³³•ÉÿóäÄ·z¤9Ü �Ð63TY<”AënH^†" ÓPÛ3àÌI“7LÑ�9Нp�&-1¦f%DÏÄ3Í‚U7"\ DÀ°¾*RÓ)Pñ/×ã+EQÖ\‡4ÅÑE˜!Ÿ" `‘ƒžÈ$@„prÑÈ0e‹A8ê$jË�6VA ¦c�/cðæ$�)# ”"@Âm Á@À `€>ª™ƒ§‘±PcLš–U‚ÄÌ!�æ0ûÎa ‰9d…•a°!…×EEPD‰¨\Ê”¸i9›r/ì4žpB¦}“-A }ƒ¬1ˆÝ›@@„]!Á@šÉ‘bB¯#"4 —™1 `j^^h$¬³,Í q�ª¤a‡ bÂ!8Áš*^‘‚£ ™¥�^ÃLÌx,ÆÐÈÀM d°Ç�ÁC "dJgæ @� „¦dBÉL$H¨@zš,9a�a šC¢†�hÃÔç;5̳0ŠÇ#I°bÁ‚3FDÀpUQ¸jŽâ!F|1‚*8Xȇ7 ¢LÑ44 `�šb©Ð]äS2j ysŒä²‚`ä ŒQ�â©êaŒLÿóäÄŸ{ô9¸#ÛÐe�…„0l �ÀD�°s DÒ75�_ñA¾°‚n …†›a@…ê0¥@Ìpr,6j‡ 2AL+B-F„‘ˆZÕÇ3¥’¸˜ ,žb0B¢EŽ˜0C‚Cƒ4ƒ18’8ÀŽ3"ÂÂ�@ËŠA øTÀ¡@B˜2R˜ !qE§’,ƒÉ’@Δ/:$‰™‚¢1nSåh®(d£j \΄®Ôü1! A‡2$*K’Y(0`’éÙ^(¬­È.ªØVuliä"ƒ ‹5Ñ“0* dx(Ð0”!Ì0l>§’<ÊkŦt@¢’½˜ Z¡Še‡/0R:’a­Ù‡)öuËjŒË½;d¼É΄€jŒIð9@À¬R:è ëDTÏ|]®iÙ €Cd>l ‡!ÆÖ3PÌ«4Ž0I@EîA]À±™ÂÚ+h\�Ba~Ã[”ÜWmGVÔ' ˆT((‰hBZà@ÅH*4ÇO|ÁX’b–è(‘`!:-wqë_I’BP&šèbð-–‘©L²{‰ „Å¥¯ó R•:vé)]äU˜ P³I„ÿóäÄ‚aü9\¬Öpõ0nkH(0l2IPA‹¶¥Œ�ÄvÝWmÍV$}-° Û l’¡Dýaú‡¨APÍ^6Ó3�ÓYnÎÜž[zU†ä‰/p„P¤b§ 8äÀ@äÁS”¾Úöð7vàé½.“‚é:,©4Ph€d�OF·XrT ÑÉžŒ® ú¬2Df IP¨LXîä••#hèB¥kQ©<¯3%@!tÔ2Rþ'ZÔmÞH~!$ÆFò°d‰-ЀåT ÕãŸ�À�9R¥J³-6¸ëÀ’ù§Õ¸½ܲޖuw#ÉyQÙYÙã=R °D,™#‚E6ÿ½Kå7’}EØcÿ(¡�A°þLAME3.100ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªPKS%W]uHù++Jclient/src/Testing/Responses/Fixtures/Audio/TranslationResponseFixture.phpnu„[µü¤ 'translate', 'language' => 'english', 'duration' => 2.95, 'segments' => [ [ 'id' => 0, 'seek' => 0, 'start' => 0.0, 'end' => 4.0, 'text' => ' Hello, this is a fake translation response.', 'tokens' => [ 50364, 2425, 11, 577, 366, 291, 30, 50564, ], 'temperature' => 0.0, 'avg_logprob' => -0.45045216878255206, 'compression_ratio' => 0.7037037037037037, 'no_speech_prob' => 0.1076972484588623, 'transient' => false, ], ], 'text' => 'Hello, how are you?', ]; } PKS%W]×*¥·00Lclient/src/Testing/Responses/Fixtures/Audio/TranscriptionResponseFixture.phpnu„[µü¤ 'transcribe', 'language' => 'english', 'duration' => 2.95, 'segments' => [ [ 'id' => 0, 'seek' => 0, 'start' => 0.0, 'end' => 4.0, 'text' => ' Hello, this is a fake transcription response.', 'tokens' => [ 50364, 2425, 11, 577, 366, 291, 30, 50564, ], 'temperature' => 0.0, 'avg_logprob' => -0.45045216878255206, 'compression_ratio' => 0.7037037037037037, 'no_speech_prob' => 0.1076972484588623, 'transient' => false, ], ], 'text' => 'Hello, how are you?', ]; } PKS%W]ºÚ¬�  Mclient/src/Testing/Responses/Fixtures/Threads/ThreadDeleteResponseFixture.phpnu„[µü¤ 'thread_agvtHUGezjTCt4SKgQg0NJ2Y', 'object' => 'thread.deleted', 'deleted' => true, ]; } PKS%W] ðÀ**Gclient/src/Testing/Responses/Fixtures/Threads/ThreadResponseFixture.phpnu„[µü¤ 'thread_agvtHUGezjTCt4SKgQg0NJ2Y', 'object' => 'thread', 'created_at' => 1_699_621_778, 'metadata' => [], ]; } PKS%W]’vµEEYclient/src/Testing/Responses/Fixtures/Threads/Runs/Steps/ThreadRunStepResponseFixture.phpnu„[µü¤ 'step_1spQXgbAabXFm1YXrwiGIMUz', 'object' => 'thread.run.step', 'created_at' => 1_699_564_106, 'run_id' => 'run_fYijubpOJsKDnvtACWBS8C8r', 'assistant_id' => 'asst_EopvUEMh90bxkNRYEYM81Orc', 'thread_id' => 'thread_3WdOgtVuhD8aUIEx774Whkvo', 'type' => 'message_creation', 'status' => 'completed', 'cancelled_at' => null, 'completed_at' => 1_699_564_119, 'expires_at' => null, 'failed_at' => null, 'last_error' => null, 'step_details' => [ 'type' => 'message_creation', 'message_creation' => [ 'message_id' => 'msg_i404PxKbB92d0JAmdOIcX7vA', ], ], 'usage' => [ 'prompt_tokens' => 123, 'completion_tokens' => 456, 'total_tokens' => 579, ], ]; } PKS%W]�‹ßîî]client/src/Testing/Responses/Fixtures/Threads/Runs/Steps/ThreadRunStepListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'step_1spQXgbAabXFm1YXrwiGIMUz', 'object' => 'thread.run.step', 'created_at' => 1_699_564_106, 'run_id' => 'run_fYijubpOJsKDnvtACWBS8C8r', 'assistant_id' => 'asst_EopvUEMh90bxkNRYEYM81Orc', 'thread_id' => 'thread_3WdOgtVuhD8aUIEx774Whkvo', 'type' => 'message_creation', 'status' => 'completed', 'cancelled_at' => null, 'completed_at' => 1_699_564_119, 'expires_at' => null, 'failed_at' => null, 'last_error' => null, 'step_details' => [ 'type' => 'message_creation', 'message_creation' => [ 'message_id' => 'msg_i404PxKbB92d0JAmdOIcX7vA', ], ], 'usage' => [ 'prompt_tokens' => 123, 'completion_tokens' => 456, 'total_tokens' => 579, ], ], ], 'first_id' => 'step_1spQXgbAabXFm1YXrwiGIMUz', 'last_id' => 'step_1spQXgbAabXFm1YXrwiGIMUz', 'has_more' => false, ]; } PKS%W]K>óçl%l%Uclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunStreamResponseFixture.txtnu„[µü¤event: thread.created data: {"id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","object":"thread","created_at":1720104398,"metadata":{"user":"John Doe"},"tool_resources":{"code_interpreter":{"file_ids":[]}}} event: thread.run.created data: {"id":"run_s1X8yAjuUBlwhGrqiahzfnH7","object":"thread.run","created_at":1720104398,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","status":"queued","started_at ":null,"expires_at ":1720104998,"cancelled_at ":null,"failed_at ":null,"completed_at ":null,"required_action ":null,"last_error ":null,"model":"gpt-4 o","instructions":"You are a very useful assistant","tools":[{"type":"code_interpreter"},{"type":"file_search","file_search":{"max_num_results":50}},{"type":"function","function":{"name":"get_weather","description":"Determine weather in my location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state e.g. San Francisco, CA"},"unit":{"type":"string","enum":["c","f"]}},"required":["location"]}}}],"tool_resources":{"code_interpreter":{"file_ids":[]}},"metadata":{"user":"John Doe"},"temperature":0.7,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true} event: thread.run.queued data: {"id":"run_s1X8yAjuUBlwhGrqiahzfnH7","object":"thread.run","created_at":1720104398,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","status":"queued","started_at":null,"expires_at":1720104998,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":"You are a very useful assistant.","tools":[{"type":"code_interpreter"},{"type":"file_search","file_search":{"max_num_results":50}},{"type":"function","function":{"name":"get_weather","description":"Determine weather in my location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state e.g. San Francisco, CA"},"unit":{"type":"string","enum":["c","f"]}},"required":["location"]}}}],"tool_resources":{"code_interpreter":{"file_ids":[]}},"metadata":{"user":"John Doe"},"temperature":0.7,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true} event: thread.run.in_progress data: {"id":"run_s1X8yAjuUBlwhGrqiahzfnH7","object":"thread.run","created_at":1720104398,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","status":"in_progress","started_at":1720104398,"expires_at":1720104998,"cancelled_at":null,"failed_at":null,"completed_at":null,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":"You are a very useful assistant.","tools":[{"type":"code_interpreter"},{"type":"file_search","file_search":{"max_num_results":50}},{"type":"function","function":{"name":"get_weather","description":"Determine weather in my location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state e.g. San Francisco, CA"},"unit":{"type":"string","enum":["c","f"]}},"required":["location"]}}}],"tool_resources":{"code_interpreter":{"file_ids":[]}},"metadata":{"user":"John Doe"},"temperature":0.7,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":null,"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true} event: thread.run.step.created data: {"id":"step_3P1u5J5Rs95lypEfvQ3rMdPL","object":"thread.run.step","created_at":1720104399,"run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1720104998,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd"}},"usage":null} event: thread.run.step.in_progress data: {"id":"step_3P1u5J5Rs95lypEfvQ3rMdPL","object":"thread.run.step","created_at":1720104399,"run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","type":"message_creation","status":"in_progress","cancelled_at":null,"completed_at":null,"expires_at":1720104998,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd"}},"usage":null} event: thread.message.created data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message","created_at":1720104399,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"attachments":[],"metadata":{}} event: thread.message.in_progress data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message","created_at":1720104399,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","status":"in_progress","incomplete_details":null,"incomplete_at":null,"completed_at":null,"role":"assistant","content":[],"attachments":[],"metadata":{}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"Hello","annotations":[]}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"!"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" How"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" can"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" I"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" assist"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" you"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":" today"}}]}} event: thread.message.delta data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message.delta","delta":{"content":[{"index":0,"type":"text","text":{"value":"?"}}]}} event: thread.message.completed data: {"id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd","object":"thread.message","created_at":1720104399,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","status":"completed","incomplete_details":null,"incomplete_at":null,"completed_at":1720104399,"role":"assistant","content":[{"type":"text","text":{"value":"Hello! How can I assist you today?","annotations":[]}}],"attachments":[],"metadata":{}} event: thread.run.step.completed data: {"id":"step_3P1u5J5Rs95lypEfvQ3rMdPL","object":"thread.run.step","created_at":1720104399,"run_id":"run_s1X8yAjuUBlwhGrqiahzfnH7","assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","type":"message_creation","status":"completed","cancelled_at":null,"completed_at":1720104399,"expires_at":1720104998,"failed_at":null,"last_error":null,"step_details":{"type":"message_creation","message_creation":{"message_id":"msg_zKgPBqNcqb7qYP2bBA3tVyTd"}},"usage":{"prompt_tokens":1138,"completion_tokens":11,"total_tokens":1149}} event: thread.run.completed data: {"id":"run_s1X8yAjuUBlwhGrqiahzfnH7","object":"thread.run","created_at":1720104398,"assistant_id":"asst_JA9Pc6eQ744nbec10slSz5BU","thread_id":"thread_sSbvUX4J1FqlUZBv6BaBbOj4","status":"completed","started_at":1720104398,"expires_at":null,"cancelled_at":null,"failed_at":null,"completed_at":1720104399,"required_action":null,"last_error":null,"model":"gpt-4o","instructions":"You are a very useful assistant.","tools":[{"type":"code_interpreter"},{"type":"file_search","file_search":{"max_num_results":50}},{"type":"function","function":{"name":"get_weather","description":"Determine weather in my location","parameters":{"type":"object","properties":{"location":{"type":"string","description":"The city and state e.g. San Francisco, CA"},"unit":{"type":"string","enum":["c","f"]}},"required":["location"]}}}],"tool_resources":{"code_interpreter":{"file_ids":[]}},"metadata":{"user":"John Doe"},"temperature":0.7,"top_p":1.0,"max_completion_tokens":null,"max_prompt_tokens":null,"truncation_strategy":{"type":"auto","last_messages":null},"incomplete_details":null,"usage":{"prompt_tokens":1138,"completion_tokens":11,"total_tokens":1149},"response_format":"auto","tool_choice":"auto","parallel_tool_calls":true} event: done PKS%W]x”¬××Oclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunResponseFixture.phpnu„[µü¤ 'run_4RCYyYzX9m41WQicoJtUQAb8', 'object' => 'thread.run', 'created_at' => 1_699_621_735, 'assistant_id' => 'asst_EopvUEMh90bxkNRYEYM81Orc', 'thread_id' => 'thread_EKt7MjGOC6bwKWmenQv5VD6r', 'status' => 'queued', 'started_at' => null, 'expires_at' => 1_699_622_335, 'cancelled_at' => null, 'failed_at' => null, 'completed_at' => null, 'last_error' => null, 'model' => 'gpt-4', 'instructions' => 'You are a personal math tutor. When asked a question, write and run Python code to answer the question.', 'tools' => [ [ 'type' => 'code_interpreter', ], ], 'metadata' => [], 'usage' => [ 'prompt_tokens' => 5, 'completion_tokens' => 7, 'total_tokens' => 12, ], 'incomplete_details' => null, 'temperature' => 1, 'top_p' => 1, 'max_prompt_tokens' => 600, 'max_completion_tokens' => 500, 'truncation_strategy' => [ 'type' => 'auto', 'last_messages' => null, ], 'tool_choice' => 'none', 'response_format' => 'auto', ]; } PKS%W]·ÛÎî--Sclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'run_4RCYyYzX9m41WQicoJtUQAb8', 'object' => 'thread.run', 'created_at' => 1_699_621_735, 'assistant_id' => 'asst_EopvUEMh90bxkNRYEYM81Orc', 'thread_id' => 'thread_EKt7MjGOC6bwKWmenQv5VD6r', 'status' => 'queued', 'started_at' => null, 'expires_at' => 1_699_622_335, 'cancelled_at' => null, 'failed_at' => null, 'completed_at' => null, 'last_error' => null, 'model' => 'gpt-4', 'instructions' => 'You are a personal math tutor. When asked a question, write and run Python code to answer the question.', 'tools' => [ [ 'type' => 'code_interpreter', ], ], 'metadata' => [], 'incomplete_details' => null, 'temperature' => 1, 'top_p' => 1, 'max_prompt_tokens' => 600, 'max_completion_tokens' => 500, 'truncation_strategy' => [ 'type' => 'auto', 'last_messages' => null, ], 'tool_choice' => 'none', 'response_format' => 'auto', ], ], 'first_id' => 'run_4RCYyYzX9m41WQicoJtUQAb8', 'last_id' => 'run_4RCYyYzX9m41WQicoJtUQAb8', 'has_more' => false, ]; } PKS%W]VOg(VV[client/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'msg_KNsDDwE41BUAHhcPNpDkdHWZ', 'object' => 'thread.message', 'created_at' => 1_699_623_839, 'thread_id' => 'thread_agvtHUGezjTCt4SKgQg0NJ2Y', 'status' => 'in_progress', 'incomplete_details' => null, 'completed_at' => null, 'incomplete_at' => null, 'role' => 'user', 'content' => [ [ 'type' => 'text', 'text' => [ 'value' => 'How does AI work? Explain it in simple terms.', 'annotations' => [ ], ], ], ], 'attachments' => [ [ 'file_id' => 'file-DhxjnFCaSHc4ZELRGKwTMFtI', 'tools' => [['type' => 'file_search']], ], ], 'assistant_id' => null, 'run_id' => null, 'metadata' => [], ], ], 'first_id' => 'msg_KNsDDwE41BUAHhcPNpDkdHWZ', 'last_id' => 'msg_KNsDDwE41BUAHhcPNpDkdHWZ', 'has_more' => false, ]; } PKS%W] ahY]client/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageDeleteResponseFixture.phpnu„[µü¤ 'msg_KNsDDwE41BUAHhcPNpDkdHWZ', 'object' => 'thread.message.deleted', 'deleted' => true, ]; } PKS%W]ÈÞ<ä��Wclient/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageResponseFixture.phpnu„[µü¤ 'msg_KNsDDwE41BUAHhcPNpDkdHWZ', 'object' => 'thread.message', 'created_at' => 1_699_623_839, 'thread_id' => 'thread_agvtHUGezjTCt4SKgQg0NJ2Y', 'status' => 'in_progress', 'incomplete_details' => null, 'completed_at' => null, 'incomplete_at' => null, 'role' => 'user', 'content' => [ [ 'type' => 'text', 'text' => [ 'value' => 'How does AI work? Explain it in simple terms.', 'annotations' => [ ], ], ], ], 'attachments' => [ [ 'file_id' => 'file-DhxjnFCaSHc4ZELRGKwTMFtI', 'tools' => [['type' => 'file_search']], ], ], 'assistant_id' => null, 'run_id' => null, 'metadata' => [], ]; } PKS%W]Ò8éÉCCJclient/src/Testing/Responses/Fixtures/Batches/BatchListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'batch_abc123', 'object' => 'batch', 'endpoint' => '/v1/chat/completions', 'errors' => null, 'input_file_id' => 'file-abc123', 'completion_window' => '24h', 'status' => 'completed', 'output_file_id' => 'file-cvaTdG', 'error_file_id' => 'file-HOWS94', 'created_at' => 1_711_471_533, 'in_progress_at' => 1_711_471_538, 'expires_at' => 1_711_557_933, 'finalizing_at' => 1_711_493_133, 'completed_at' => 1_711_493_163, 'failed_at' => null, 'expired_at' => null, 'cancelling_at' => null, 'cancelled_at' => null, 'request_counts' => [ 'total' => 100, 'completed' => 95, 'failed' => 5, ], 'metadata' => [ 'customer_id' => 'user_123456789', 'batch_description' => 'Nightly job', ], ], ], 'first_id' => 'batch_abc123', 'last_id' => 'batch_abc456', 'has_more' => true, ]; } PKS%W]Þk†rrFclient/src/Testing/Responses/Fixtures/Batches/BatchResponseFixture.phpnu„[µü¤ 'batch_abc123', 'object' => 'batch', 'endpoint' => '/v1/chat/completions', 'errors' => null, 'input_file_id' => 'file-abc123', 'completion_window' => '24h', 'status' => 'validating', 'output_file_id' => null, 'error_file_id' => null, 'created_at' => 1_711_471_533, 'in_progress_at' => null, 'expires_at' => null, 'finalizing_at' => null, 'completed_at' => null, 'failed_at' => null, 'expired_at' => null, 'cancelling_at' => null, 'cancelled_at' => null, 'request_counts' => [ 'total' => 0, 'completed' => 0, 'failed' => 0, ], 'metadata' => [ 'customer_id' => 'user_123456789', 'batch_description' => 'Nightly eval job', ], ]; } PKS%W]Õÿ§ÆHclient/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.phpnu„[µü¤ 'text-babbage:001', 'object' => 'model', 'created' => 1_642_018_370, 'owned_by' => 'openai', ]; } PKS%W]�§åýþþFclient/src/Testing/Responses/Fixtures/Models/DeleteResponseFixture.phpnu„[µü¤ 'curie:ft-acmeco-2021-03-03-21-44-20', 'object' => 'model', 'deleted' => true, ]; } PKS%W]¶? ËõõDclient/src/Testing/Responses/Fixtures/Models/ListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ RetrieveResponseFixture::ATTRIBUTES, ], ]; } PKS%W]䟣ÖÖEclient/src/Testing/Responses/Fixtures/Edits/CreateResponseFixture.phpnu„[µü¤ 'edit', 'created' => 1_664_135_921, 'choices' => [[ 'text' => "This is a fake edit response.\n", 'index' => 0, ]], 'usage' => [ 'prompt_tokens' => 25, 'completion_tokens' => 30, 'total_tokens' => 55, ], ]; } PKS%W]ºš ‘ÛÛKclient/src/Testing/Responses/Fixtures/Completions/CreateResponseFixture.phpnu„[µü¤ 'cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7', 'object' => 'text_completion', 'created' => 1_589_478_378, 'model' => 'gpt-3.5-turbo-instruct', 'choices' => [ [ 'text' => "\n\nThis is a fake completion response.", 'index' => 0, 'logprobs' => null, 'finish_reason' => 'length', ], ], 'usage' => [ 'prompt_tokens' => 5, 'completion_tokens' => 7, 'total_tokens' => 12, ], ]; } PKS%W]!Z–<ÆÆSclient/src/Testing/Responses/Fixtures/Completions/CreateStreamedResponseFixture.txtnu„[µü¤data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " everyone", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": "!", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": "\n", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": "\n", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": "This", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " is", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " a", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " fake", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " completion", "index": 0, "logprobs": null, "finish_reason": null}], "model": "gpt-3.5-turbo-instruct"} data: {"id": "cmpl-6ynJi2uZZnKntnEZreDcjGyoPbVAn", "object": "text_completion", "created": 1679430847, "choices": [{"text": " response.", "index": 0, "logprobs": null, "finish_reason": "length"}], "model": "gpt-3.5-turbo-instruct"} data: [DONE] PKS%W]´»Y+ÙÙDclient/src/Testing/Responses/Fixtures/Chat/CreateResponseFixture.phpnu„[µü¤ 'chatcmpl-123', 'object' => 'chat.completion', 'created' => 1_677_652_288, 'model' => 'gpt-3.5-turbo', 'system_fingerprint' => null, 'choices' => [ [ 'index' => 0, 'message' => [ 'role' => 'assistant', 'content' => "\n\nHello there, this is a fake chat response.", 'function_call' => null, 'tool_calls' => [], ], 'logprobs' => null, 'finish_reason' => 'stop', ], ], 'usage' => [ 'prompt_tokens' => 9, 'completion_tokens' => 12, 'total_tokens' => 21, ], ]; } PKS%W]®œ-¤¤Lclient/src/Testing/Responses/Fixtures/Chat/CreateStreamedResponseFixture.txtnu„[µü¤data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"role":"assistant"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":"Hello"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":"!"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" This"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" is"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" a"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" fake"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" chat"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":" response"},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{"content":"."},"index":0,"finish_reason":null}]} data: {"id":"chatcmpl-6yo21W6LVo8Tw2yBf7aGf2g17IeIl","object":"chat.completion.chunk","created":1679432086,"model":"gpt-4-0314","choices":[{"delta":{},"index":0,"finish_reason":"stop"}]} data: [DONE] PKS%W]ÕgÓ((Dclient/src/Testing/Responses/Fixtures/Images/EditResponseFixture.phpnu„[µü¤ 1_664_136_088, 'data' => [ [ 'url' => 'https://openai.com/fake-image.png', ], ], ]; } PKS%W]ÐÇR--Iclient/src/Testing/Responses/Fixtures/Images/VariationResponseFixture.phpnu„[µü¤ 1_664_136_088, 'data' => [ [ 'url' => 'https://openai.com/fake-image.png', ], ], ]; } PKS%W]/:z**Fclient/src/Testing/Responses/Fixtures/Images/CreateResponseFixture.phpnu„[µü¤ 1_664_136_088, 'data' => [ [ 'url' => 'https://openai.com/fake-image.png', ], ], ]; } PKS%W]ÿÏV>……Vclient/src/Testing/Responses/Fixtures/Realtime/TranscriptionSessionResponseFixture.phpnu„[µü¤ [ 'expires_at' => 1735680000, 'value' => 'ek_secret_123', ], 'input_audio_format' => 'pcm16', 'input_audio_transcription' => null, 'modalities' => null, 'turn_detection' => [ 'prefix_padding_ms' => 300, 'silence_duration_ms' => 200, 'threshold' => 0.5, 'type' => 'server_vad', ], ]; } PKS%W]™ý¸øøIclient/src/Testing/Responses/Fixtures/Realtime/SessionResponseFixture.phpnu„[µü¤ [ 'expires_at' => 1735680000, 'value' => 'ek_secret_123', ], 'input_audio_format' => 'pcm16', 'input_audio_transcription' => null, 'instructions' => 'Your knowledge cutoff is 2023-10. You are a helpful assistant.', 'max_response_output_tokens' => 'inf', 'modalities' => [ 'audio', 'text', ], 'output_audio_format' => 'pcm16', 'temperature' => 0.7, 'tool_choice' => 'auto', 'tools' => [], 'turn_detection' => [ 'prefix_padding_ms' => 100, 'silence_duration_ms' => 500, 'threshold' => 0.5, 'type' => 'server_vad', ], 'voice' => 'alloy', ]; } PKS%W][f<Ýääbclient/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseFileFixture.phpnu„[µü¤ 'file_abc123', 'filename' => 'document.pdf', 'score' => 0.95, 'attributes' => [ 'author' => 'John Doe', 'date' => '2023-01-01', ], 'content' => [ VectorStoreSearchResponseContentFixture::ATTRIBUTES, ], ]; } PKS%W]�Èÿ|ÀÀ^client/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseFixture.phpnu„[µü¤ 'vector_store.search_results.page', 'search_query' => 'What is the return policy?', 'data' => [ VectorStoreSearchResponseFileFixture::ATTRIBUTES, [ 'file_id' => 'file_xyz789', 'filename' => 'notes.txt', 'score' => 0.89, 'attributes' => [ 'author' => 'Jane Smith', 'date' => '2023-01-02', ], 'content' => [ [ 'type' => 'text', 'text' => 'Sample text content from the vector store.', ], ], ], ], 'has_more' => false, 'next_page' => null, ]; } PKS%W]û¯®ùeclient/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseContentFixture.phpnu„[µü¤ 'text', 'text' => 'Sample text content from the vector store.', ]; } PKS%W]Í÷W……Uclient/src/Testing/Responses/Fixtures/VectorStores/VectorStoreListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'vs_8VE2cQq1jTFlH7FizhYCzUz0', 'object' => 'vector_store', 'name' => 'Product Knowledge Base', 'status' => 'completed', 'attributes' => [], 'usage_bytes' => 29882, 'created_at' => 1_715_953_317, 'file_counts' => [ 'in_progress' => 0, 'completed' => 1, 'failed' => 0, 'cancelled' => 0, 'total' => 1, ], 'metadata' => [], 'expires_after' => null, 'expires_at' => null, 'last_active_at' => 1_715_953_317, ], [ 'id' => 'vs_xzlnkCbIQE50B9A8RzmcFmtP', 'object' => 'vector_store', 'name' => null, 'status' => 'completed', 'attributes' => [], 'usage_bytes' => 0, 'created_at' => 1_710_869_420, 'file_counts' => [ 'in_progress' => 0, 'completed' => 1, 'failed' => 0, 'cancelled' => 0, 'total' => 1, ], 'metadata' => [], 'expires_after' => null, 'expires_at' => null, 'last_active_at' => 1_710_869_420, ], ], 'first_id' => 'vs_8VE2cQq1jTFlH7FizhYCzUz0', 'last_id' => 'vs_xzlnkCbIQE50B9A8RzmcFmtP', 'has_more' => true, ]; } PKS%W]<®pfééQclient/src/Testing/Responses/Fixtures/VectorStores/VectorStoreResponseFixture.phpnu„[µü¤ 'vs_8VE2cQq1jTFlH7FizhYCzUz0', 'object' => 'vector_store', 'name' => 'Product Knowledge Base', 'status' => 'in_progress', 'usage_bytes' => 0, 'created_at' => 1_715_953_317, 'file_counts' => [ 'in_progress' => 1, 'completed' => 0, 'failed' => 0, 'cancelled' => 0, 'total' => 1, ], 'metadata' => [], 'expires_after' => null, 'expires_at' => null, 'last_active_at' => 1_715_953_317, ]; } PKS%W] îîÕ11_client/src/Testing/Responses/Fixtures/VectorStores/Files/VectorStoreFileListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'file-HuwUghQzWasTZeX3uRRawY5R', 'object' => 'vector_store.file', 'usage_bytes' => 29882, 'created_at' => 1_715_956_697, 'vector_store_id' => 'vs_xds05V7ep0QMGI5JmYnWsJwb', 'status' => 'completed', 'attributes' => [], 'last_error' => null, ], ], 'first_id' => 'file-HuwUghQzWasTZeX3uRRawY5R', 'last_id' => 'file-HuwUghQzWasTZeX3uRRawY5R', 'has_more' => false, ]; } PKS%W]HŒ,ð[client/src/Testing/Responses/Fixtures/VectorStores/Files/VectorStoreFileResponseFixture.phpnu„[µü¤ 'file-HuwUghQzWasTZeX3uRRawY5R', 'object' => 'vector_store.file', 'usage_bytes' => 29882, 'created_at' => 1_715_956_697, 'vector_store_id' => 'vs_xds05V7ep0QMGI5JmYnWsJwb', 'status' => 'completed', 'attributes' => [], 'last_error' => null, ]; } PKS%W]ß,„&''aclient/src/Testing/Responses/Fixtures/VectorStores/Files/VectorStoreFileDeleteResponseFixture.phpnu„[µü¤ 'file-HuwUghQzWasTZeX3uRRawY5R', 'object' => 'vector_store.file.deleted', 'deleted' => true, ]; } PKS%W]%_†Wclient/src/Testing/Responses/Fixtures/VectorStores/VectorStoreDeleteResponseFixture.phpnu„[µü¤ 'vs_xzlnkCbIQE50B9A8RzmcFmtP', 'object' => 'vector_store.deleted', 'deleted' => true, ]; } PKS%W]¢rÀ½Lclient/src/Testing/Responses/Fixtures/FineTuning/ListJobsResponseFixture.phpnu„[µü¤ 'list', 'data' => [ RetrieveJobResponseFixture::ATTRIBUTES, ], 'has_more' => false, ]; } PKS%W]ËÏÖ ××Oclient/src/Testing/Responses/Fixtures/FineTuning/RetrieveJobResponseFixture.phpnu„[µü¤ 'ftjob-AF1WoRqd3aJAHsqc9NY7iL8F', 'object' => 'fine_tuning.job', 'model' => 'gpt-3.5-turbo-0613', 'created_at' => 1_614_807_352, 'finished_at' => 1_692_819_450, 'fine_tuned_model' => 'ft:gpt-3.5-turbo-0613:gehri-dev::7qnxQ0sQ', 'hyperparameters' => [ 'n_epochs' => 9, 'batch_size' => 1, 'learning_rate_multiplier' => 2, ], 'organization_id' => 'org-jwe45798ASN82s', 'result_files' => [ 'file-1bl05WrhsKDDEdg8XSP617QF', ], 'status' => 'succeeded', 'validation_file' => null, 'training_file' => 'file-abc123', 'trained_tokens' => 5049, 'error' => null, ]; } PKS%W]Ï¥·{{Qclient/src/Testing/Responses/Fixtures/FineTuning/ListJobEventsResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'object' => 'fine_tuning.job.event', 'id' => 'ft-event-ddTJfwuMVpfLXseO0Am0Gqjm', 'created_at' => 1_692_407_401, 'level' => 'info', 'message' => 'Fine tuning job successfully completed', 'data' => null, 'type' => 'message', ], ], 'has_more' => false, ]; } PKS%W]ZÞ°Û??Jclient/src/Testing/Responses/Fixtures/Embeddings/CreateResponseFixture.phpnu„[µü¤ 'list', 'model' => 'text-embedding-3-small', 'data' => [ [ 'object' => 'embedding', 'index' => 0, 'embedding' => [ -0.008906792, -0.013743395, ], ], ], 'usage' => [ 'prompt_tokens' => 8, 'total_tokens' => 8, ], ]; } PKS%W];k‡\\Kclient/src/Testing/Responses/Fixtures/Responses/RetrieveResponseFixture.phpnu„[µü¤ 'resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c', 'object' => 'response', 'created_at' => 1741484430, 'status' => 'completed', 'error' => null, 'incomplete_details' => null, 'instructions' => null, 'max_output_tokens' => null, 'model' => 'gpt-4o-2024-08-06', 'output' => [ [ 'type' => 'web_search_call', 'id' => 'ws_67ccf18f64008190a39b619f4c8455ef087bb177ab789d5c', 'status' => 'completed', ], [ 'type' => 'message', 'id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'status' => 'completed', 'role' => 'assistant', 'content' => [ [ 'type' => 'output_text', 'text' => 'As of today, March 9, 2025, one notable positive news story...', 'annotations' => [ [ 'type' => 'url_citation', 'start_index' => 442, 'end_index' => 557, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 962, 'end_index' => 1077, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 1336, 'end_index' => 1451, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], ], ], ], ], ], 'parallel_tool_calls' => true, 'previous_response_id' => null, 'reasoning' => [ 'effort' => null, 'generate_summary' => null, ], 'store' => true, 'temperature' => 1.0, 'text' => [ 'format' => [ 'type' => 'text', ], ], 'tool_choice' => 'auto', 'tools' => [ [ 'type' => 'web_search_preview', 'domains' => [], 'search_context_size' => 'medium', 'user_location' => [ 'type' => 'approximate', 'city' => 'San Francisco', 'country' => 'US', 'region' => 'California', 'timezone' => 'America/Los_Angeles', ], ], ], 'top_p' => 1.0, 'truncation' => 'disabled', 'usage' => [ 'input_tokens' => 328, 'input_tokens_details' => [ 'cached_tokens' => 0, ], 'output_tokens' => 356, 'output_tokens_details' => [ 'reasoning_tokens' => 0, ], 'total_tokens' => 684, ], 'user' => null, 'metadata' => [], ]; } PKS%W]j>bF��Iclient/src/Testing/Responses/Fixtures/Responses/ListInputItemsFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'content' => [ [ 'text' => 'What was a positive news story from today?', 'type' => 'input_text', 'annotations' => [], ], ], 'id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'role' => 'user', 'status' => 'completed', 'type' => 'message', ], ], 'first_id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'last_id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'has_more' => false, ]; } PKS%W]pÁ‹EZZIclient/src/Testing/Responses/Fixtures/Responses/CancelResponseFixture.phpnu„[µü¤ 'resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c', 'object' => 'response', 'created_at' => 1741484430, 'status' => 'completed', 'error' => null, 'incomplete_details' => null, 'instructions' => null, 'max_output_tokens' => null, 'model' => 'gpt-4o-2024-08-06', 'output' => [ [ 'type' => 'web_search_call', 'id' => 'ws_67ccf18f64008190a39b619f4c8455ef087bb177ab789d5c', 'status' => 'completed', ], [ 'type' => 'message', 'id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'status' => 'completed', 'role' => 'assistant', 'content' => [ [ 'type' => 'output_text', 'text' => 'As of today, March 9, 2025, one notable positive news story...', 'annotations' => [ [ 'type' => 'url_citation', 'start_index' => 442, 'end_index' => 557, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 962, 'end_index' => 1077, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 1336, 'end_index' => 1451, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], ], ], ], ], ], 'parallel_tool_calls' => true, 'previous_response_id' => null, 'reasoning' => [ 'effort' => null, 'generate_summary' => null, ], 'store' => true, 'temperature' => 1.0, 'text' => [ 'format' => [ 'type' => 'text', ], ], 'tool_choice' => 'auto', 'tools' => [ [ 'type' => 'web_search_preview', 'domains' => [], 'search_context_size' => 'medium', 'user_location' => [ 'type' => 'approximate', 'city' => 'San Francisco', 'country' => 'US', 'region' => 'California', 'timezone' => 'America/Los_Angeles', ], ], ], 'top_p' => 1.0, 'truncation' => 'disabled', 'usage' => [ 'input_tokens' => 328, 'input_tokens_details' => [ 'cached_tokens' => 0, ], 'output_tokens' => 356, 'output_tokens_details' => [ 'reasoning_tokens' => 0, ], 'total_tokens' => 684, ], 'user' => null, 'metadata' => [], ]; } PKS%W]ßÕÌIclient/src/Testing/Responses/Fixtures/Responses/DeleteResponseFixture.phpnu„[µü¤ 'resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c', 'object' => 'response', 'deleted' => true, ]; } PKS%W]$®  ZZIclient/src/Testing/Responses/Fixtures/Responses/ResponseObjectFixture.phpnu„[µü¤ 'resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c', 'object' => 'response', 'created_at' => 1741484430, 'status' => 'completed', 'error' => null, 'incomplete_details' => null, 'instructions' => null, 'max_output_tokens' => null, 'model' => 'gpt-4o-2024-08-06', 'output' => [ [ 'type' => 'web_search_call', 'id' => 'ws_67ccf18f64008190a39b619f4c8455ef087bb177ab789d5c', 'status' => 'completed', ], [ 'type' => 'message', 'id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'status' => 'completed', 'role' => 'assistant', 'content' => [ [ 'type' => 'output_text', 'text' => 'As of today, March 9, 2025, one notable positive news story...', 'annotations' => [ [ 'type' => 'url_citation', 'start_index' => 442, 'end_index' => 557, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 962, 'end_index' => 1077, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 1336, 'end_index' => 1451, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], ], ], ], ], ], 'parallel_tool_calls' => true, 'previous_response_id' => null, 'reasoning' => [ 'effort' => null, 'generate_summary' => null, ], 'store' => true, 'temperature' => 1.0, 'text' => [ 'format' => [ 'type' => 'text', ], ], 'tool_choice' => 'auto', 'tools' => [ [ 'type' => 'web_search_preview', 'domains' => [], 'search_context_size' => 'medium', 'user_location' => [ 'type' => 'approximate', 'city' => 'San Francisco', 'country' => 'US', 'region' => 'California', 'timezone' => 'America/Los_Angeles', ], ], ], 'top_p' => 1.0, 'truncation' => 'disabled', 'usage' => [ 'input_tokens' => 328, 'input_tokens_details' => [ 'cached_tokens' => 0, ], 'output_tokens' => 356, 'output_tokens_details' => [ 'reasoning_tokens' => 0, ], 'total_tokens' => 684, ], 'user' => null, 'metadata' => [], ]; } PKS%W]-Å«ZZIclient/src/Testing/Responses/Fixtures/Responses/CreateResponseFixture.phpnu„[µü¤ 'resp_67ccf18ef5fc8190b16dbee19bc54e5f087bb177ab789d5c', 'object' => 'response', 'created_at' => 1741484430, 'status' => 'completed', 'error' => null, 'incomplete_details' => null, 'instructions' => null, 'max_output_tokens' => null, 'model' => 'gpt-4o-2024-08-06', 'output' => [ [ 'type' => 'web_search_call', 'id' => 'ws_67ccf18f64008190a39b619f4c8455ef087bb177ab789d5c', 'status' => 'completed', ], [ 'type' => 'message', 'id' => 'msg_67ccf190ca3881909d433c50b1f6357e087bb177ab789d5c', 'status' => 'completed', 'role' => 'assistant', 'content' => [ [ 'type' => 'output_text', 'text' => 'As of today, March 9, 2025, one notable positive news story...', 'annotations' => [ [ 'type' => 'url_citation', 'start_index' => 442, 'end_index' => 557, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 962, 'end_index' => 1077, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], [ 'type' => 'url_citation', 'start_index' => 1336, 'end_index' => 1451, 'url' => 'https://.../?utm_source=chatgpt.com', 'title' => '...', ], ], ], ], ], ], 'parallel_tool_calls' => true, 'previous_response_id' => null, 'reasoning' => [ 'effort' => null, 'generate_summary' => null, ], 'store' => true, 'temperature' => 1.0, 'text' => [ 'format' => [ 'type' => 'text', ], ], 'tool_choice' => 'auto', 'tools' => [ [ 'type' => 'web_search_preview', 'domains' => [], 'search_context_size' => 'medium', 'user_location' => [ 'type' => 'approximate', 'city' => 'San Francisco', 'country' => 'US', 'region' => 'California', 'timezone' => 'America/Los_Angeles', ], ], ], 'top_p' => 1.0, 'truncation' => 'disabled', 'usage' => [ 'input_tokens' => 328, 'input_tokens_details' => [ 'cached_tokens' => 0, ], 'output_tokens' => 356, 'output_tokens_details' => [ 'reasoning_tokens' => 0, ], 'total_tokens' => 684, ], 'user' => null, 'metadata' => [], ]; } PKS%W]ÝP›3 3 Qclient/src/Testing/Responses/Fixtures/Responses/CreateStreamedResponseFixture.txtnu„[µü¤data: {"type":"response.created","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"in_progress","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4o-2024-08-06","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} data: {"type":"response.in_progress","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"in_progress","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4o-2024-08-06","output":[],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":null,"user":null,"metadata":{}}} data: {"type":"response.output_item.added","output_index":0,"item":{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"in_progress","role":"assistant","content":[]}} data: {"type":"response.content_part.added","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"part":{"type":"output_text","text":"","annotations":[]}} data: {"type":"response.output_text.delta","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"delta":"Hi"} data: {"type":"response.output_text.done","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"text":"Hi there! How can I assist you today?"} data: {"type":"response.content_part.done","item_id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","output_index":0,"content_index":0,"part":{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}} data: {"type":"response.output_item.done","output_index":0,"item":{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}]}} data: {"type":"response.completed","response":{"id":"resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654","object":"response","created_at":1741290958,"status":"completed","error":null,"incomplete_details":null,"instructions":"You are a helpful assistant.","max_output_tokens":null,"model":"gpt-4o-2024-08-06","output":[{"id":"msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654","type":"message","status":"completed","role":"assistant","content":[{"type":"output_text","text":"Hi there! How can I assist you today?","annotations":[]}]}],"parallel_tool_calls":true,"previous_response_id":null,"reasoning":{"effort":null,"summary":null},"store":true,"temperature":1.0,"text":{"format":{"type":"text"}},"tool_choice":"auto","tools":[],"top_p":1.0,"truncation":"disabled","usage":{"input_tokens":37,"output_tokens":11,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":48},"user":null,"metadata":{}}} PKS%W]KißÃÚÚGclient/src/Testing/Responses/Fixtures/Files/RetrieveResponseFixture.phpnu„[µü¤ 'file-XjGxS3KTG0uNmNOK362iJua3', 'object' => 'file', 'bytes' => 140, 'created_at' => 1_613_779_121, 'filename' => 'fake-file.jsonl', 'purpose' => 'fine-tune', 'status' => 'succeeded', 'status_details' => null, ]; } PKS%W] J÷¹ööEclient/src/Testing/Responses/Fixtures/Files/DeleteResponseFixture.phpnu„[µü¤ 'file-XjGxS3KTG0uNmNOK362iJua3', 'object' => 'file', 'deleted' => true, ]; } PKS%W]fMppCclient/src/Testing/Responses/Fixtures/Files/ListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'id' => 'file-XjGxS3KTG0uNmNOK362iJua3', 'object' => 'file', 'bytes' => 140, 'created_at' => 1_613_779_121, 'filename' => 'fake-file.jsonl', 'purpose' => 'fine-tune', 'status' => 'succeeded', 'status_details' => null, ], ], ]; } PKS%W]tFÐØØEclient/src/Testing/Responses/Fixtures/Files/CreateResponseFixture.phpnu„[µü¤ 'file-XjGxS3KTG0uNmNOK362iJua3', 'object' => 'file', 'bytes' => 140, 'created_at' => 1_613_779_121, 'filename' => 'fake-file.jsonl', 'purpose' => 'fine-tune', 'status' => 'succeeded', 'status_details' => null, ]; } PKS%W]â&™tffKclient/src/Testing/Responses/Fixtures/FineTunes/RetrieveResponseFixture.phpnu„[µü¤ 'ft-AF1WoRqd3aJAHsqc9NY7iL8F', 'object' => 'fine-tune', 'model' => 'curie', 'created_at' => 1_614_807_352, 'events' => [ [ 'object' => 'fine-tune-event', 'created_at' => 1_614_807_352, 'level' => 'info', 'message' => 'Job enqueued. Waiting for jobs ahead to complete. Queue number => 0.', ], ], 'fine_tuned_model' => 'curie => ft-acmeco-2021-03-03-21-44-20', 'hyperparams' => [ 'batch_size' => 4, 'learning_rate_multiplier' => 0.1, 'n_epochs' => 4, 'prompt_loss_weight' => 0.1, ], 'organization_id' => 'org-jwe45798ASN82s', 'result_files' => [ CreateResponseFixture::ATTRIBUTES, ], 'status' => 'succeeded', 'validation_files' => [ CreateResponseFixture::ATTRIBUTES, ], 'training_files' => [ CreateResponseFixture::ATTRIBUTES, ], 'updated_at' => 1_614_807_865, ]; } PKS%W]Z­`ÝVVXclient/src/Testing/Responses/Fixtures/FineTunes/RetrieveStreamedResponseEventFixture.txtnu„[µü¤data: {"object": "fine-tune-event", "level": "info", "message": "Created fine-tune: ft-y3OpNlc8B5qBVGCCVsLZsDST", "created_at": 1668021917} data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune costs $0.00", "created_at": 1668021926} data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune enqueued. Queue number: 0", "created_at": 1668021927} data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune started", "created_at": 1668021929} data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 1/4", "created_at": 1668021976} data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 2/4", "created_at": 1668021977} data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 3/4", "created_at": 1668021978} data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 4/4", "created_at": 1668021978} data: {"object": "fine-tune-event", "level": "info", "message": "Uploaded model: curie:ft-gehri-dev-2022-11-09-19-26-40", "created_at": 1668022001} data: {"object": "fine-tune-event", "level": "info", "message": "Uploaded result file: file-ajLKUCMsFPrT633zqwr0eI4l", "created_at": 1668022002} data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune succeeded", "created_at": 1668022002} data: [DONE] PKS%W]n,éFøøGclient/src/Testing/Responses/Fixtures/FineTunes/ListResponseFixture.phpnu„[µü¤ 'list', 'data' => [ RetrieveResponseFixture::ATTRIBUTES, ], ]; } PKS%W]콸ÝÝMclient/src/Testing/Responses/Fixtures/FineTunes/ListEventsResponseFixture.phpnu„[µü¤ 'list', 'data' => [ [ 'object' => 'fine-tune-event', 'created_at' => 1_614_807_352, 'level' => 'info', 'message' => 'Job enqueued. Waiting for jobs ahead to complete. Queue number => 0.', ], ], ]; } PKS%W]WbÎÈÈ9client/src/Testing/Resources/VectorStoresTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $vectorStoreId): VectorStoreResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $vectorStoreId): VectorStoreDeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } public function create(array $parameters): VectorStoreResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(array $parameters = []): VectorStoreListResponse { return $this->record(__FUNCTION__, func_get_args()); } /** * @param array $parameters */ public function search(string $vectorStoreId, array $parameters = []): VectorStoreSearchResponse { return $this->record(__FUNCTION__, func_get_args()); } public function files(): VectorStoresFilesContract { return new VectorStoresFilesTestResource($this->fake); } public function batches(): VectorStoresFileBatchesContract { return new VectorStoresFileBatchesTestResource($this->fake); } } PKS%W]¶¨)@ÂÂ4client/src/Testing/Resources/BatchesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $id): BatchResponse { return $this->record(__FUNCTION__, func_get_args()); } public function cancel(string $id): BatchResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(array $parameters = []): BatchListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]É»â#Dclient/src/Testing/Resources/VectorStoresFileBatchesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function cancel(string $vectorStoreId, string $fileBatchId): VectorStoreFileBatchResponse { return $this->record(__FUNCTION__, func_get_args()); } public function create(string $vectorStoreId, array $parameters): VectorStoreFileBatchResponse { return $this->record(__FUNCTION__, func_get_args()); } public function listFiles(string $vectorStoreId, string $fileBatchId, array $parameters = []): VectorStoreFileListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]å7??7client/src/Testing/Resources/ContainersTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $id): RetrieveContainer { return $this->record(__FUNCTION__, func_get_args()); } public function list(array $parameters = []): ListContainers { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $id): DeleteContainer { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]¨T[<<6client/src/Testing/Resources/FineTunesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function list(): ListResponse { return $this->record(__FUNCTION__); } public function retrieve(string $fineTuneId): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function cancel(string $fineTuneId): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function listEvents(string $fineTuneId): ListEventsResponse { return $this->record(__FUNCTION__, func_get_args()); } public function listEventsStreamed(string $fineTuneId): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]¿ÌŒŒ2client/src/Testing/Resources/FilesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $file): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function download(string $file): string { return $this->record(__FUNCTION__, func_get_args()); } public function upload(array $parameters): CreateResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $file): DeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]±ˆA—ll3client/src/Testing/Resources/ImagesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function edit(array $parameters): EditResponse { return $this->record(__FUNCTION__, func_get_args()); } public function variation(array $parameters): VariationResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]—¤ÇgÅÅ7client/src/Testing/Resources/AssistantsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $id): AssistantResponse { return $this->record(__FUNCTION__, func_get_args()); } public function modify(string $id, array $parameters): AssistantResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $id): AssistantDeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(array $parameters = []): AssistantListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]BÄ5ïðð5client/src/Testing/Resources/RealtimeTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function transcribeToken(array $parameters = []): TranscriptionSessionResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]TÒßü÷÷>client/src/Testing/Resources/VectorStoresFilesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function delete(string $vectorStoreId, string $fileId): VectorStoreFileDeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } public function create(string $vectorStoreId, array $parameters): VectorStoreFileResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(string $vectorStoreId, array $parameters = []): VectorStoreFileListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]Æsn¿™™2client/src/Testing/Resources/Concerns/Testable.phpnu„[µü¤ $args */ protected function record(string $method, array $args = []): ResponseContract|ResponseStreamContract|string { return $this->fake->record(new TestRequest($this->resource(), $method, $args)); } public function assertSent(callable|int|null $callback = null): void { $this->fake->assertSent($this->resource(), $callback); } public function assertNotSent(callable|int|null $callback = null): void { $this->fake->assertNotSent($this->resource(), $callback); } } PKS%W]§b…ää7client/src/Testing/Resources/FineTuningTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function listJobs(array $parameters = []): ListJobsResponse { return $this->record(__FUNCTION__, func_get_args()); } public function retrieveJob(string $jobId): RetrieveJobResponse { return $this->record(__FUNCTION__, func_get_args()); } public function cancelJob(string $jobId): RetrieveJobResponse { return $this->record(__FUNCTION__, func_get_args()); } public function listJobEvents(string $jobId, array $parameters = []): ListJobEventsResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]ãž}tt6client/src/Testing/Resources/ResponsesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function createStreamed(array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function retrieve(string $id): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(string $id, array $parameters = []): ListInputItems { return $this->record(__FUNCTION__, func_get_args()); } public function cancel(string $id): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $id): DeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]9©M¾ÔÔ8client/src/Testing/Resources/CompletionsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function createStreamed(array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]Ú �VV4client/src/Testing/Resources/ThreadsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function createAndRun(array $parameters): ThreadRunResponse { return $this->record(__FUNCTION__, func_get_args()); } public function createAndRunStreamed(array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function retrieve(string $id): ThreadResponse { return $this->record(__FUNCTION__, func_get_args()); } public function modify(string $id, array $parameters): ThreadResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $id): ThreadDeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } public function messages(): ThreadsMessagesTestResource { return new ThreadsMessagesTestResource($this->fake); } public function runs(): ThreadsRunsTestResource { return new ThreadsRunsTestResource($this->fake); } } PKS%W] z¢±±8client/src/Testing/Resources/ThreadsRunsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function createStreamed(string $threadId, array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function retrieve(string $threadId, string $runId): ThreadRunResponse { return $this->record(__FUNCTION__, func_get_args()); } public function modify(string $threadId, string $runId, array $parameters): ThreadRunResponse { return $this->record(__FUNCTION__, func_get_args()); } public function submitToolOutputs(string $threadId, string $runId, array $parameters): ThreadRunResponse { return $this->record(__FUNCTION__, func_get_args()); } public function submitToolOutputsStreamed(string $threadId, string $runId, array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function cancel(string $threadId, string $runId): ThreadRunResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(string $threadId, array $parameters = []): ThreadRunListResponse { return $this->record(__FUNCTION__, func_get_args()); } public function steps(): ThreadsRunsStepsTestResource { return new ThreadsRunsStepsTestResource($this->fake); } } PKS%W]x`,ö<client/src/Testing/Resources/ThreadsMessagesTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function retrieve(string $threadId, string $messageId): ThreadMessageResponse { return $this->record(__FUNCTION__, func_get_args()); } public function modify(string $threadId, string $messageId, array $parameters): ThreadMessageResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $threadId, string $messageId): ThreadMessageDeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } public function list(string $threadId, array $parameters = []): ThreadMessageListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]rv±õ7client/src/Testing/Resources/EmbeddingsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } } PKS%W]ňYÞ??3client/src/Testing/Resources/ModelsTestResource.phpnu„[µü¤record(__FUNCTION__); } public function retrieve(string $model): RetrieveResponse { return $this->record(__FUNCTION__, func_get_args()); } public function delete(string $model): DeleteResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W] •ûû2client/src/Testing/Resources/EditsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } } PKS%W]îˆÐéÍÍ2client/src/Testing/Resources/AudioTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function speechStreamed(array $parameters): SpeechStreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function transcribe(array $parameters): TranscriptionResponse { return $this->record(__FUNCTION__, func_get_args()); } public function transcribeStreamed(array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } public function translate(array $parameters): TranslationResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]Éb¤Ô8client/src/Testing/Resources/ModerationsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } } PKS%W]~dÏZ^^=client/src/Testing/Resources/ThreadsRunsStepsTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function list(string $threadId, string $runId, array $parameters = []): ThreadRunStepListResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]�yypªª1client/src/Testing/Resources/ChatTestResource.phpnu„[µü¤record(__FUNCTION__, func_get_args()); } public function createStreamed(array $parameters): StreamResponse { return $this->record(__FUNCTION__, func_get_args()); } } PKS%W]f)Þ'††/client/src/Exceptions/UnknownEventException.phpnu„[µü¤getMessage(), 0, $exception); } } PKS%W]€-¥x``0client/src/Exceptions/UnserializableResponse.phpnu„[µü¤getMessage(), 0, $exception); } } PKS%W] ¢""(client/src/Exceptions/ErrorException.phpnu„[µü¤, type: ?string, code: string|int|null} $contents */ public function __construct(private readonly array $contents, private readonly int $statusCode) { $message = ($contents['message'] ?: (string) $this->contents['code']) ?: 'Unknown error'; if (is_array($message)) { $message = implode(PHP_EOL, $message); } parent::__construct($message); } /** * Returns the HTTP status code. * * **Note: For streamed requests it might be 200 even in case of an error.** */ public function getStatusCode(): int { return $this->statusCode; } /** * Returns the error message. */ public function getErrorMessage(): string { return $this->getMessage(); } /** * Returns the error type. */ public function getErrorType(): ?string { return $this->contents['type']; } /** * Returns the error code. */ public function getErrorCode(): string|int|null { return $this->contents['code']; } } PKS%W] ’é.‰‰2client/src/Exceptions/InvalidArgumentException.phpnu„[µü¤toRequest($this->baseUri, $this->headers, $this->queryParams); $response = $this->sendRequest(fn (): \Psr\Http\Message\ResponseInterface => $this->client->sendRequest($request)); $contents = (string) $response->getBody(); if (str_contains($response->getHeaderLine('Content-Type'), ContentType::TEXT_PLAIN->value)) { return Response::from($contents, $response->getHeaders()); } $this->throwIfJsonError($response, $contents); try { /** @var array{error?: array{message: string, type: string, code: string}} $data */ $data = json_decode($contents, true, flags: JSON_THROW_ON_ERROR); } catch (JsonException $jsonException) { throw new UnserializableResponse($jsonException); } return Response::from($data, $response->getHeaders()); } /** * {@inheritDoc} */ public function requestContent(Payload $payload): string { $request = $payload->toRequest($this->baseUri, $this->headers, $this->queryParams); $response = $this->sendRequest(fn (): \Psr\Http\Message\ResponseInterface => $this->client->sendRequest($request)); $contents = (string) $response->getBody(); $this->throwIfJsonError($response, $contents); return $contents; } /** * {@inheritDoc} */ public function requestStream(Payload $payload): ResponseInterface { $request = $payload->toRequest($this->baseUri, $this->headers, $this->queryParams); $response = $this->sendRequest(fn () => ($this->streamHandler)($request)); $this->throwIfJsonError($response, $response); return $response; } private function sendRequest(Closure $callable): ResponseInterface { try { return $callable(); } catch (ClientExceptionInterface $clientException) { if ($clientException instanceof ClientException) { $this->throwIfJsonError($clientException->getResponse(), (string) $clientException->getResponse()->getBody()); } throw new TransporterException($clientException); } } private function throwIfJsonError(ResponseInterface $response, string|ResponseInterface $contents): void { if ($response->getStatusCode() < 400) { return; } if (! str_contains($response->getHeaderLine('Content-Type'), ContentType::JSON->value)) { return; } $statusCode = $response->getStatusCode(); if ($contents instanceof ResponseInterface) { $contents = (string) $contents->getBody(); } try { /** @var array{error?: array{message: string|array, type: string, code: string}} $response */ $response = json_decode($contents, true, flags: JSON_THROW_ON_ERROR); if (isset($response['error'])) { throw new ErrorException($response['error'], $statusCode); } } catch (JsonException $jsonException) { throw new UnserializableResponse($jsonException); } } } PKS%W]Ö¡ØÛÛ,client/src/Contracts/TransporterContract.phpnu„[µü¤|string> * * @throws ErrorException|UnserializableResponse|TransporterException */ public function requestObject(Payload $payload): Response; /** * Sends a content request to a server. * * @throws ErrorException|TransporterException */ public function requestContent(Payload $payload): string; /** * Sends a stream request to a server. ** * @throws ErrorException */ public function requestStream(Payload $payload): ResponseInterface; } PKS%W]�1ˆÈÈ;client/src/Contracts/ResponseHasMetaInformationContract.phpnu„[µü¤, value-of> * * @internal */ interface ResponseContract extends ArrayAccess { /** * Returns the array representation of the Response. * * @return TArray */ public function toArray(): array; /** * @param key-of $offset */ public function offsetExists(mixed $offset): bool; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset * * @return TArray[TOffsetKey] */ public function offsetGet(mixed $offset): mixed; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset * @param TArray[TOffsetKey] $value */ public function offsetSet(mixed $offset, mixed $value): never; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset */ public function offsetUnset(mixed $offset): never; } PKS%W]&S®F&&0client/src/Contracts/MetaInformationContract.phpnu„[µü¤, value-of> * * @internal */ interface MetaInformationContract extends ArrayAccess { /** * Returns the array representation of the meta information. * * @return TArray */ public function toArray(): array; /** * @param key-of $offset */ public function offsetExists(mixed $offset): bool; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset * * @return TArray[TOffsetKey] */ public function offsetGet(mixed $offset): mixed; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset * @param TArray[TOffsetKey] $value */ public function offsetSet(mixed $offset, mixed $value): never; /** * @template TOffsetKey of key-of * @param TOffsetKey $offset */ public function offsetUnset(mixed $offset): never; } PKS%W]ž ¸DD:client/src/Contracts/Resources/ThreadsMessagesContract.phpnu„[µü¤ $parameters */ public function create(string $threadId, array $parameters): ThreadMessageResponse; /** * Retrieve a message. * * @see https://platform.openai.com/docs/api-reference/messages/getMessage */ public function retrieve(string $threadId, string $messageId): ThreadMessageResponse; /** * Modifies a message. * * @see https://platform.openai.com/docs/api-reference/messages/modifyMessage * * @param array $parameters */ public function modify(string $threadId, string $messageId, array $parameters): ThreadMessageResponse; /** * Deletes a message. * * @see https://platform.openai.com/docs/api-reference/messages/deleteMessage */ public function delete(string $threadId, string $messageId): ThreadMessageDeleteResponse; /** * Returns a list of messages for a given thread. * * @see https://platform.openai.com/docs/api-reference/messages/listMessages * * @param array $parameters */ public function list(string $threadId, array $parameters = []): ThreadMessageListResponse; } PKS%W]Êudˆ2 2 7client/src/Contracts/Resources/VectorStoresContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): VectorStoreResponse; /** * Returns a list of vector stores. * * @see https://platform.openai.com/docs/api-reference/vector-stores/list * * @param array $parameters */ public function list(array $parameters = []): VectorStoreListResponse; /** * Retrieves a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores/retrieve */ public function retrieve(string $vectorStoreId): VectorStoreResponse; /** * Modify a vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores/modify * * @param array $parameters */ public function modify(string $vectorStoreId, array $parameters): VectorStoreResponse; /** * Delete a vector store. * * https://platform.openai.com/docs/api-reference/vector-stores/delete */ public function delete(string $vectorStoreId): VectorStoreDeleteResponse; /** * Manage the files related to the vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-files */ public function files(): VectorStoresFilesContract; /** * Manage the file batches related to the vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches */ public function batches(): VectorStoresFileBatchesContract; /** * Search a vector store for relevant chunks based on a query and file attributes filter. * * @see https://platform.openai.com/docs/api-reference/vector-stores/search * * @param array $parameters */ public function search(string $vectorStoreId, array $parameters = []): VectorStoreSearchResponse; } PKS%W]ÊýOO3client/src/Contracts/Resources/RealtimeContract.phpnu„[µü¤ $parameters */ public function token(array $parameters = []): SessionResponse; /** * Create an ephemeral API token for real time transcription sessions. * * @see https://platform.openai.com/docs/api-reference/realtime-sessions/create-transcription * * @param array $parameters */ public function transcribeToken(array $parameters = []): TranscriptionSessionResponse; } PKS%W]Û°$ðÂÂBclient/src/Contracts/Resources/VectorStoresFileBatchesContract.phpnu„[µü¤ $parameters */ public function create(string $vectorStoreId, array $parameters): VectorStoreFileBatchResponse; /** * Retrieves a file batch within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/getBatch */ public function retrieve(string $vectorStoreId, string $fileBatchId): VectorStoreFileBatchResponse; /** * Cancel a vector store file batch * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/cancelBatch */ public function cancel(string $vectorStoreId, string $fileBatchId): VectorStoreFileBatchResponse; /** * Lists the files within a file batch within a vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/listBatchFiles * * @param array $parameters */ public function listFiles(string $vectorStoreId, string $fileBatchId, array $parameters = []): VectorStoreFileListResponse; } PKS%W]_šÖuxx4client/src/Contracts/Resources/FineTunesContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): RetrieveResponse; /** * List your organization's fine-tuning jobs. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/list */ public function list(): ListResponse; /** * Gets info about the fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/list */ public function retrieve(string $fineTuneId): RetrieveResponse; /** * Immediately cancel a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/cancel */ public function cancel(string $fineTuneId): RetrieveResponse; /** * Get fine-grained status updates for a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/events */ public function listEvents(string $fineTuneId): ListEventsResponse; /** * Get streamed fine-grained status updates for a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/events * * @return StreamResponse */ public function listEventsStreamed(string $fineTuneId): StreamResponse; } PKS%W]ÿß/ïee0client/src/Contracts/Resources/EditsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; } PKS%W]lÕ¸™ÿÿ;client/src/Contracts/Resources/ThreadsRunsStepsContract.phpnu„[µü¤ $parameters */ public function list(string $threadId, string $runId, array $parameters = []): ThreadRunStepListResponse; } PKS%W]ÖË㟟5client/src/Contracts/Resources/FineTuningContract.phpnu„[µü¤ $parameters */ public function createJob(array $parameters): RetrieveJobResponse; /** * List your organization's fine-tuning jobs. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/undefined * * @param array $parameters */ public function listJobs(array $parameters = []): ListJobsResponse; /** * Get info about a fine-tuning job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/retrieve */ public function retrieveJob(string $jobId): RetrieveJobResponse; /** * Immediately cancel a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/cancel */ public function cancelJob(string $jobId): RetrieveJobResponse; /** * Get status updates for a fine-tuning job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/list-events * * @param array $parameters */ public function listJobEvents(string $jobId, array $parameters = []): ListJobEventsResponse; } PKS%W]½mí &&/client/src/Contracts/Resources/ChatContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; /** * Creates a streamed completion for the chat message * * @see https://platform.openai.com/docs/api-reference/chat/create * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse; } PKS%W]˨°–1client/src/Contracts/Resources/ImagesContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; /** * Creates an edited or extended image given an original image and a prompt. * * @see https://platform.openai.com/docs/api-reference/images/create-edit * * @param array $parameters */ public function edit(array $parameters): EditResponse; /** * Creates a variation of a given image. * * @see https://platform.openai.com/docs/api-reference/images/create-variation * * @param array $parameters */ public function variation(array $parameters): VariationResponse; } PKS%W]š.d››5client/src/Contracts/Resources/EmbeddingsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; } PKS%W]�Ì‚fÁÁ2client/src/Contracts/Resources/ThreadsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): ThreadResponse; /** * Create a thread and run it in one request. * * @see https://platform.openai.com/docs/api-reference/runs/createThreadAndRun * * @param array $parameters */ public function createAndRun(array $parameters): ThreadRunResponse; /** * Create a thread and run it in one request, returning a stream. * * @see https://platform.openai.com/docs/api-reference/runs/createThreadAndRun * * @param array $parameters * * @return StreamResponse */ public function createAndRunStreamed(array $parameters): StreamResponse; /** * Retrieves a thread. * * @see https://platform.openai.com/docs/api-reference/threads/getThread */ public function retrieve(string $id): ThreadResponse; /** * Modifies a thread. * * @see https://platform.openai.com/docs/api-reference/threads/modifyThread * * @param array $parameters */ public function modify(string $id, array $parameters): ThreadResponse; /** * Delete a thread. * * @see https://platform.openai.com/docs/api-reference/threads/deleteThread */ public function delete(string $id): ThreadDeleteResponse; /** * Manage messages attached to a thread. * * @see https://platform.openai.com/docs/api-reference/messages */ public function messages(): ThreadsMessagesContract; /** * Represents an execution run on a thread. * * @see https://platform.openai.com/docs/api-reference/runs */ public function runs(): ThreadsRunsContract; } PKS%W]l~2ƒƒ6client/src/Contracts/Resources/CompletionsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; /** * Creates a streamed completion for the provided prompt and parameters * * @see https://platform.openai.com/docs/api-reference/completions/create-completion * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse; } PKS%W]aÒùSšš6client/src/Contracts/Resources/ModerationsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; } PKS%W]>…Ñòšš0client/src/Contracts/Resources/FilesContract.phpnu„[µü¤ $parameters */ public function list(array $parameters = []): ListResponse; /** * Returns information about a specific file. * * @see https://platform.openai.com/docs/api-reference/files/retrieve */ public function retrieve(string $file): RetrieveResponse; /** * Returns the contents of the specified file. * * @see https://platform.openai.com/docs/api-reference/files/retrieve-content */ public function download(string $file): string; /** * Upload a file that contains document(s) to be used across various endpoints/features. * * @see https://platform.openai.com/docs/api-reference/files/upload * * @param array $parameters */ public function upload(array $parameters): CreateResponse; /** * Delete a file. * * @see https://platform.openai.com/docs/api-reference/files/delete */ public function delete(string $file): DeleteResponse; } PKS%W]Z3#¯……<client/src/Contracts/Resources/VectorStoresFilesContract.phpnu„[µü¤ $parameters */ public function create(string $vectorStoreId, array $parameters): VectorStoreFileResponse; /** * Returns a list of files within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-files/listFiles * * @param array $parameters */ public function list(string $vectorStoreId, array $parameters = []): VectorStoreFileListResponse; /** * Retrieves a file within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-files/getFile */ public function retrieve(string $vectorStoreId, string $fileId): VectorStoreFileResponse; /** * Delete a file within a vector store. * * https://platform.openai.com/docs/api-reference/vector-stores/delete */ public function delete(string $vectorStoreId, string $fileId): VectorStoreFileDeleteResponse; } PKS%W]7Ÿˆh h 6client/src/Contracts/Resources/ThreadsRunsContract.phpnu„[µü¤ $parameters */ public function create(string $threadId, array $parameters): ThreadRunResponse; /** * Create a streamed run. * * @see https://platform.openai.com/docs/api-reference/runs/createRun * * @param array $parameters * * @return StreamResponse */ public function createStreamed(string $threadId, array $parameters): StreamResponse; /** * Retrieves a run. * * @see https://platform.openai.com/docs/api-reference/runs/getRun */ public function retrieve(string $threadId, string $runId): ThreadRunResponse; /** * Modifies a run. * * @see https://platform.openai.com/docs/api-reference/runs/modifyRun * * @param array $parameters */ public function modify(string $threadId, string $runId, array $parameters): ThreadRunResponse; /** * This endpoint can be used to submit the outputs from the tool calls once they're all completed. * * @see https://platform.openai.com/docs/api-reference/runs/submitToolOutputs * * @param array $parameters */ public function submitToolOutputs(string $threadId, string $runId, array $parameters): ThreadRunResponse; /** * This endpoint can be used to submit the outputs from the tool calls once they're all completed. * And stream back the response * * @see https://platform.openai.com/docs/api-reference/runs/submitToolOutputs * * @param array $parameters * * @return StreamResponse */ public function submitToolOutputsStreamed(string $threadId, string $runId, array $parameters): StreamResponse; /** * Cancels a run that is `in_progress`. * * @see https://platform.openai.com/docs/api-reference/runs/cancelRun */ public function cancel(string $threadId, string $runId): ThreadRunResponse; /** * Returns a list of runs belonging to a thread. * * @see https://platform.openai.com/docs/api-reference/runs/listRuns * * @param array $parameters */ public function list(string $threadId, array $parameters = []): ThreadRunListResponse; /** * Get steps attached to a run. * * @see https://platform.openai.com/docs/api-reference/runs/step-object */ public function steps(): ThreadsRunsStepsContract; } PKS%W]ƒ#XOèè1client/src/Contracts/Resources/ModelsContract.phpnu„[µü¤ $parameters */ public function speech(array $parameters): string; /** * Generates streamed audio from the input text. * * @see https://platform.openai.com/docs/api-reference/audio/createSpeech * * @param array $parameters */ public function speechStreamed(array $parameters): SpeechStreamResponse; /** * Transcribes audio into the input language. * * @see https://platform.openai.com/docs/api-reference/audio/createTranscription * * @param array $parameters */ public function transcribe(array $parameters): TranscriptionResponse; /** * Transcribes audio input the streamed events. * * @see https://platform.openai.com/docs/api-reference/audio/createTranscription#audio-createtranscription-stream * * @param array $parameters * * @return StreamResponse */ public function transcribeStreamed(array $parameters): StreamResponse; /** * Translates audio into English. * * @see https://platform.openai.com/docs/api-reference/audio/createTranslation * * @param array $parameters */ public function translate(array $parameters): TranslationResponse; } PKS%W]¦îËB5client/src/Contracts/Resources/ContainersContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateContainer; /** * Retrieves a container with the given ID. * * @see https://platform.openai.com/docs/api-reference/containers/retrieveContainer */ public function retrieve(string $id): RetrieveContainer; /** * Delete a container with the given ID. * * @see https://platform.openai.com/docs/api-reference/containers/deleteContainer */ public function delete(string $id): DeleteContainer; /** * List containers * * @see https://platform.openai.com/docs/api-reference/containers/listContainers * * @param array $parameters */ public function list(array $parameters = []): ListContainers; } PKS%W]`Äá®~~4client/src/Contracts/Resources/ResponsesContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse; /** * Create a streamed response. * * @see https://platform.openai.com/docs/api-reference/responses/create * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse; /** * Retrieves a model response with the given ID. * * @see https://platform.openai.com/docs/api-reference/responses/retrieve */ public function retrieve(string $id): RetrieveResponse; /** * Cancels a model response with the given ID. Must be marked as 'background' to be cancellable. * * @see https://platform.openai.com/docs/api-reference/responses/cancel */ public function cancel(string $id): RetrieveResponse; /** * Deletes a model response with the given ID. * * @see https://platform.openai.com/docs/api-reference/responses/delete */ public function delete(string $id): DeleteResponse; /** * Returns a list of input items for a given response. * * @see https://platform.openai.com/docs/api-reference/responses/input-items * * @param array $parameters */ public function list(string $id, array $parameters = []): ListInputItems; } PKS%W]Oç„==2client/src/Contracts/Resources/BatchesContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): BatchResponse; /** * Retrieves a batch. * * * @see https://platform.openai.com/docs/api-reference/batch/retrieve */ public function retrieve(string $id): BatchResponse; /** * Cancels an in-progress batch. * * * @see https://platform.openai.com/docs/api-reference/batch/cancel */ public function cancel(string $id): BatchResponse; /** * List your organization's batches. * * @see https://platform.openai.com/docs/api-reference/batch/list * * @param array $parameters */ public function list(array $parameters = []): BatchListResponse; } PKS%W]'úx+ËË5client/src/Contracts/Resources/AssistantsContract.phpnu„[µü¤ $parameters */ public function create(array $parameters): AssistantResponse; /** * Retrieves an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/getAssistant */ public function retrieve(string $id): AssistantResponse; /** * Modifies an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/modifyAssistant * * @param array $parameters */ public function modify(string $id, array $parameters): AssistantResponse; /** * Delete an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/deleteAssistant */ public function delete(string $id): AssistantDeleteResponse; /** * Returns a list of assistants. * * @see https://platform.openai.com/docs/api-reference/assistants/listAssistants * * @param array $parameters */ public function list(array $parameters = []): AssistantListResponse; } PKS%W]G¡U ää/client/src/Contracts/ResponseStreamContract.phpnu„[µü¤ * * @internal */ interface ResponseStreamContract extends IteratorAggregate {} PKS%W]K�êää+client/src/Contracts/StringableContract.phpnu„[µü¤transporter); } /** * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities * of alternative tokens at each position. * * @see https://platform.openai.com/docs/api-reference/completions */ public function completions(): Completions { return new Completions($this->transporter); } /** * Given a chat conversation, the model will return a chat completion response. * * @see https://platform.openai.com/docs/api-reference/chat */ public function chat(): Chat { return new Chat($this->transporter); } /** * Create and manage containers for use with the Code Interpreter tool. * * @see https://platform.openai.com/docs/api-reference/containers */ public function containers(): Containers { return new Containers($this->transporter); } /** * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. * * @see https://platform.openai.com/docs/api-reference/embeddings */ public function embeddings(): Embeddings { return new Embeddings($this->transporter); } /** * Learn how to turn audio into text. * * @see https://platform.openai.com/docs/api-reference/audio */ public function audio(): Audio { return new Audio($this->transporter); } /** * Given a prompt and an instruction, the model will return an edited version of the prompt. * * @see https://platform.openai.com/docs/api-reference/edits */ public function edits(): Edits { return new Edits($this->transporter); } /** * Files are used to upload documents that can be used with features like Fine-tuning. * * @see https://platform.openai.com/docs/api-reference/files */ public function files(): Files { return new Files($this->transporter); } /** * List and describe the various models available in the API. * * @see https://platform.openai.com/docs/api-reference/models */ public function models(): Models { return new Models($this->transporter); } /** * Manage fine-tuning jobs to tailor a model to your specific training data. * * @see https://platform.openai.com/docs/api-reference/fine-tuning */ public function fineTuning(): FineTuning { return new FineTuning($this->transporter); } /** * Manage fine-tuning jobs to tailor a model to your specific training data. * * @deprecated OpenAI has deprecated this endpoint and will stop working by January 4, 2024. * https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates#updated-gpt-3-models * @see https://platform.openai.com/docs/api-reference/fine-tunes */ public function fineTunes(): FineTunes { return new FineTunes($this->transporter); } /** * Given an input text, outputs if the model classifies it as violating OpenAI's content policy. * * @see https://platform.openai.com/docs/api-reference/moderations */ public function moderations(): Moderations { return new Moderations($this->transporter); } /** * Given a prompt and/or an input image, the model will generate a new image. * * @see https://platform.openai.com/docs/api-reference/images */ public function images(): Images { return new Images($this->transporter); } /** * Build assistants that can call models and use tools to perform tasks. * * @see https://platform.openai.com/docs/api-reference/assistants */ public function assistants(): Assistants { return new Assistants($this->transporter); } /** * Communicate with a model in real time using WebRTC or WebSockets. * * @see https://platform.openai.com/docs/api-reference/realtime */ public function realtime(): RealtimeContract { return new Realtime($this->transporter); } /** * Create threads that assistants can interact with. * * @see https://platform.openai.com/docs/api-reference/threads */ public function threads(): ThreadsContract { return new Threads($this->transporter); } /** * Create large batches of API requests for asynchronous processing. The Batch API returns completions within 24 hours. * * @see https://platform.openai.com/docs/api-reference/batch */ public function batches(): Batches { return new Batches($this->transporter); } /** * Create and update vector stores that assistants can interact with * * @see https://platform.openai.com/docs/api-reference/vector-stores */ public function vectorStores(): VectorStoresContract { return new VectorStores($this->transporter); } } PKS%W]kàˆhmm5client/src/Responses/Assistants/AssistantResponse.phpnu„[µü¤}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: string}}> */ final class AssistantResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: string}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $tools * @param array $metadata */ private function __construct( public string $id, public string $object, public int $createdAt, public ?string $name, public ?string $reasoningEffort, public ?string $description, public string $model, public ?string $instructions, public array $tools, public ?AssistantResponseToolResources $toolResources, public array $metadata, public ?float $temperature, public ?float $topP, public string|AssistantResponseResponseFormat $responseFormat, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, name: ?string, reasoning_effort?: ?string, description: ?string, model: string, instructions: ?string, tools: array}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $tools = array_map( fn (array $tool): AssistantResponseToolCodeInterpreter|AssistantResponseToolFileSearch|AssistantResponseToolFunction => match ($tool['type']) { 'code_interpreter' => AssistantResponseToolCodeInterpreter::from($tool), 'file_search' => AssistantResponseToolFileSearch::from($tool), 'function' => AssistantResponseToolFunction::from($tool), }, $attributes['tools'], ); $responseFormat = is_array($attributes['response_format']) ? AssistantResponseResponseFormat::from($attributes['response_format']) : $attributes['response_format']; return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['name'], $attributes['reasoning_effort'] ?? null, $attributes['description'], $attributes['model'], $attributes['instructions'], $tools, isset($attributes['tool_resources']) ? AssistantResponseToolResources::from($attributes['tool_resources']) : null, $attributes['metadata'], $attributes['temperature'], $attributes['top_p'], $responseFormat, $meta ); } /** * {@inheritDoc} */ public function toArray(): array { $response = [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'name' => $this->name, 'reasoning_effort' => $this->reasoningEffort, 'description' => $this->description, 'model' => $this->model, 'instructions' => $this->instructions, 'tools' => array_map(fn (AssistantResponseToolCodeInterpreter|AssistantResponseToolFileSearch|AssistantResponseToolFunction $tool): array => $tool->toArray(), $this->tools), 'tool_resources' => $this->toolResources?->toArray(), 'metadata' => $this->metadata, 'temperature' => $this->temperature, 'top_p' => $this->topP, 'response_format' => is_string($this->responseFormat) ? $this->responseFormat : $this->responseFormat->toArray(), ]; // Only reasoning models will have this property. if (! $this->reasoningEffort) { unset($response['reasoning_effort']); } return $response; } } PKS%W]Z1š¸ŽŽAclient/src/Responses/Assistants/AssistantResponseToolFunction.phpnu„[µü¤}}> */ final class AssistantResponseToolFunction implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public AssistantResponseToolFunctionFunction $function, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'function', function: array{description: ?string, name: string, parameters: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], AssistantResponseToolFunctionFunction::from($attributes['function']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'function' => $this->function->toArray(), ]; } } PKS%W]{#By>>Pclient/src/Responses/Assistants/AssistantResponseToolResourceCodeInterpreter.phpnu„[µü¤}> */ final class AssistantResponseToolResourceCodeInterpreter implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $fileIds */ private function __construct( public array $fileIds, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_ids: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['file_ids'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_ids' => $this->fileIds, ]; } } PKS%W]-:G쨨Iclient/src/Responses/Assistants/AssistantResponseToolFunctionFunction.phpnu„[µü¤}> */ final class AssistantResponseToolFunctionFunction implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $parameters */ private function __construct( public ?string $description, public string $name, public array $parameters, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{description: ?string, name: string, parameters: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['description'], $attributes['name'], $attributes['parameters'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'description' => $this->description, 'parameters' => $this->parameters, ]; } } PKS%W]…o½lÂÂCclient/src/Responses/Assistants/AssistantResponseToolFileSearch.phpnu„[µü¤ */ final class AssistantResponseToolFileSearch implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'file_search'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]AË:¬ƒƒ9client/src/Responses/Assistants/AssistantListResponse.phpnu„[µü¤}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class AssistantListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}}>, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): AssistantResponse => AssistantResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (AssistantResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]vÂè,'';client/src/Responses/Assistants/AssistantDeleteResponse.phpnu„[µü¤ */ final class AssistantDeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]›©ÉÉCclient/src/Responses/Assistants/AssistantResponseResponseFormat.phpnu„[µü¤ */ final class AssistantResponseResponseFormat implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'text'|'json_object'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]ÊJÚ3vvKclient/src/Responses/Assistants/AssistantResponseToolResourceFileSearch.phpnu„[µü¤}> */ final class AssistantResponseToolResourceFileSearch implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $vectorStoreIds */ private function __construct( public array $vectorStoreIds, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{vector_store_ids: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['vector_store_ids'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'vector_store_ids' => $this->vectorStoreIds, ]; } } PKS%W]‚™ÌÌHclient/src/Responses/Assistants/AssistantResponseToolCodeInterpreter.phpnu„[µü¤ */ final class AssistantResponseToolCodeInterpreter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'code_interpreter'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]�ÒR¾¾Bclient/src/Responses/Assistants/AssistantResponseToolResources.phpnu„[µü¤}, file_search?: array{vector_store_ids: array}}> */ final class AssistantResponseToolResources implements ResponseContract { /** * @use ArrayAccessible}, file_search?: array{vector_store_ids: array}}> */ use ArrayAccessible; use Fakeable; private function __construct( public ?AssistantResponseToolResourceCodeInterpreter $codeInterpreter, public ?AssistantResponseToolResourceFileSearch $fileSearch, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}} $attributes */ public static function from(array $attributes): self { return new self( isset($attributes['code_interpreter']) ? AssistantResponseToolResourceCodeInterpreter::from($attributes['code_interpreter']) : null, isset($attributes['file_search']) ? AssistantResponseToolResourceFileSearch::from($attributes['file_search']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'code_interpreter' => $this->codeInterpreter?->toArray(), 'file_search' => $this->fileSearch?->toArray(), ]); } } PKS%W],î¿¿Gclient/src/Responses/Assistants/AssistantResponseResponseFormatText.phpnu„[µü¤ */ final class AssistantResponseResponseFormatText implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'text'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]$›Ù«g g 3client/src/Responses/Moderations/CreateResponse.phpnu„[µü¤, category_scores: array, flagged: bool, category_applied_input_types?: array>}>}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, category_scores: array, flagged: bool, category_applied_input_types?: array>}>}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $results */ private function __construct( public readonly string $id, public readonly string $model, public readonly array $results, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, model: string, results: array, category_scores: array, flagged: bool, category_applied_input_types?: array>}>} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $results = array_map(fn (array $result): CreateResponseResult => CreateResponseResult::from( $result ), $attributes['results']); return new self( $attributes['id'], $attributes['model'], $results, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'model' => $this->model, 'results' => array_map( static fn (CreateResponseResult $result): array => $result->toArray(), $this->results, ), ]; } } PKS%W]Ljý ] ] 9client/src/Responses/Moderations/CreateResponseResult.phpnu„[µü¤ $categories * @param array> $categoryAppliedInputTypes */ private function __construct( public readonly array $categories, public readonly bool $flagged, public readonly ?array $categoryAppliedInputTypes, ) { // .. } /** * @param array{categories: array, category_scores: array, flagged: bool, category_applied_input_types?: array>} $attributes */ public static function from(array $attributes): self { /** @var array $categories */ $categories = []; foreach (Category::cases() as $category) { if (! isset($attributes['category_scores'][$category->value])) { continue; } $categories[$category->value] = CreateResponseCategory::from([ 'category' => $category->value, 'violated' => $attributes['categories'][$category->value], 'score' => $attributes['category_scores'][$category->value], ]); } return new CreateResponseResult( $categories, $attributes['flagged'], $attributes['category_applied_input_types'] ?? null, ); } /** * @return array{ categories: array, category_scores: array, flagged: bool, category_applied_input_types?: array>} */ public function toArray(): array { $categories = []; $categoryScores = []; foreach ($this->categories as $category) { $categories[$category->category->value] = $category->violated; $categoryScores[$category->category->value] = $category->score; } $result = [ 'categories' => $categories, 'category_scores' => $categoryScores, 'flagged' => $this->flagged, ]; if ($this->categoryAppliedInputTypes !== null) { $result['category_applied_input_types'] = $this->categoryAppliedInputTypes; } return $result; } } PKS%W]öOÀ††;client/src/Responses/Moderations/CreateResponseCategory.phpnu„[µü¤|null, delta: string} * * @implements ResponseContract */ final class TranscriptTextDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array|null $logprobs */ private function __construct( public readonly ?array $logprobs, public readonly string $delta, public readonly MetaInformation $meta, ) {} /** * @param TranscriptTextDeltaType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { if (isset($attributes['logprobs'])) { $logprobs = array_map( fn (array $logprob): Logprobs => Logprobs::from($logprob, $meta), $attributes['logprobs'] ); } return new self( logprobs: $logprobs ?? null, delta: $attributes['delta'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'logprobs' => $this->logprobs ? array_map( fn (Logprobs $logprob): array => $logprob->toArray(), $this->logprobs ) : null, 'delta' => $this->delta, ]; } } PKS%W]KKÑ�ƒƒ;client/src/Responses/Audio/Streaming/TranscriptTextDone.phpnu„[µü¤|null, text: string} * * @implements ResponseContract */ final class TranscriptTextDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array|null $logprobs */ private function __construct( public readonly ?array $logprobs, public readonly string $text, public readonly MetaInformation $meta, ) {} /** * @param TranscriptTextDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { if (isset($attributes['logprobs'])) { $logprobs = array_map( fn (array $logprob): Logprobs => Logprobs::from($logprob, $meta), $attributes['logprobs'] ); } return new self( logprobs: $logprobs ?? null, text: $attributes['text'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'logprobs' => $this->logprobs ? array_map( fn (Logprobs $logprob): array => $logprob->toArray(), $this->logprobs ) : null, 'text' => $this->text, ]; } } PKS%W]†êª''1client/src/Responses/Audio/Streaming/Logprobs.phpnu„[µü¤, logprobs: int, token: string} * * @implements ResponseContract */ final class Logprobs implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $bytes */ private function __construct( public readonly array $bytes, public readonly int $logprobs, public readonly string $token, public readonly MetaInformation $meta, ) {} /** * @param LogprobsType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( bytes: $attributes['bytes'], logprobs: $attributes['logprobs'], token: $attributes['token'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'bytes' => $this->bytes, 'logprobs' => $this->logprobs, 'token' => $this->token, ]; } } PKS%W]ÂÕ«04 4 ;client/src/Responses/Audio/TranscriptionResponseSegment.phpnu„[µü¤, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}> */ final class TranscriptionResponseSegment implements ResponseContract { /** * @use ArrayAccessible, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}> */ use ArrayAccessible; /** * @param array $tokens */ private function __construct( public readonly int $id, public readonly int $seek, public readonly float $start, public readonly float $end, public readonly string $text, public readonly array $tokens, public readonly float $temperature, public readonly float $avgLogprob, public readonly float $compressionRatio, public readonly float $noSpeechProb, public readonly ?bool $transient, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: int, seek: int, start: float, end: float, text: string, tokens: array, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['seek'], $attributes['start'], $attributes['end'], $attributes['text'], $attributes['tokens'], $attributes['temperature'], $attributes['avg_logprob'], $attributes['compression_ratio'], $attributes['no_speech_prob'], $attributes['transient'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { $data = [ 'id' => $this->id, 'seek' => $this->seek, 'start' => $this->start, 'end' => $this->end, 'text' => $this->text, 'tokens' => $this->tokens, 'temperature' => $this->temperature, 'avg_logprob' => $this->avgLogprob, 'compression_ratio' => $this->compressionRatio, 'no_speech_prob' => $this->noSpeechProb, ]; if ($this->transient !== null) { $data['transient'] = $this->transient; } return $data; } } PKS%W]šW)¹3client/src/Responses/Audio/SpeechStreamResponse.phpnu„[µü¤ */ final class SpeechStreamResponse implements ResponseHasMetaInformationContract, ResponseStreamContract { public function __construct( private readonly ResponseInterface $response, ) { // } /** * {@inheritDoc} */ public function getIterator(): Generator { while (! $this->response->getBody()->eof()) { yield $this->response->getBody()->read(1024); } } public function meta(): MetaInformation { // @phpstan-ignore-next-line return MetaInformation::from($this->response->getHeaders()); } public static function fake(?string $content = null, ?MetaInformation $meta = null): static { $psr17Factory = new Psr17Factory; $response = $psr17Factory->createResponse() ->withBody($psr17Factory->createStream($content ?? (string) file_get_contents(__DIR__ . '/../../Testing/Responses/Fixtures/Audio/speech-streamed.mp3'))); if ($meta instanceof \OpenAI\Responses\Meta\MetaInformation) { foreach ($meta->toArray() as $key => $value) { $response = $response->withHeader($key, (string) $value); } } return new self($response); } } PKS%W] ¥”X¨¨:client/src/Responses/Audio/TranscriptionStreamResponse.phpnu„[µü¤} * * @implements ResponseContract */ final class TranscriptionStreamResponse implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use FakeableForStreamedResponse; private function __construct( public readonly string $event, public readonly TranscriptTextDelta|TranscriptTextDone $response, ) {} /** * @param array $attributes */ public static function from(array $attributes): self { $event = $attributes['type'] ?? throw new UnknownEventException('Missing event type in streamed response'); $meta = $attributes['__meta']; unset($attributes['__meta']); $response = match ($event) { 'transcript.text.delta' => TranscriptTextDelta::from($attributes, $meta), // @phpstan-ignore-line 'transcript.text.done' => TranscriptTextDone::from($attributes, $meta), // @phpstan-ignore-line default => throw new UnknownEventException('Unknown Audio Transcription streaming event: ' . $event), }; return new self( event: $event, // @phpstan-ignore-line response: $response, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'event' => $this->event, 'data' => $this->response->toArray(), ]; } } PKS%W]—L)ÒÒ4client/src/Responses/Audio/TranscriptionResponse.phpnu„[µü¤, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, words: array, text: string}> */ final class TranscriptionResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, words: array, text: string}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $segments * @param array $words */ private function __construct( public readonly ?string $task, public readonly ?string $language, public readonly ?float $duration, public readonly array $segments, public readonly array $words, public readonly string $text, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{task: ?string, language: ?string, duration: ?float, segments: array, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, words: array, text: string}|string $attributes */ public static function from(array|string $attributes, MetaInformation $meta): self { if (is_string($attributes)) { $attributes = ['text' => $attributes]; } $segments = isset($attributes['segments']) ? array_map(fn (array $result): TranscriptionResponseSegment => TranscriptionResponseSegment::from( $result ), $attributes['segments']) : []; $words = isset($attributes['words']) ? array_map(fn (array $result): TranscriptionResponseWord => TranscriptionResponseWord::from( $result ), $attributes['words']) : []; return new self( $attributes['task'] ?? null, $attributes['language'] ?? null, $attributes['duration'] ?? null, $segments, $words, $attributes['text'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'task' => $this->task, 'language' => $this->language, 'duration' => $this->duration, 'segments' => array_map( static fn (TranscriptionResponseSegment $result): array => $result->toArray(), $this->segments, ), 'words' => array_map( static fn (TranscriptionResponseWord $result): array => $result->toArray(), $this->words, ), 'text' => $this->text, ]; } } PKS%W]‘u5¤™™8client/src/Responses/Audio/TranscriptionResponseWord.phpnu„[µü¤ */ final class TranscriptionResponseWord implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $word, public readonly float $start, public readonly float $end, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{word: string, start: float, end: float} $attributes */ public static function from(array $attributes): self { return new self( $attributes['word'], $attributes['start'], $attributes['end'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'word' => $this->word, 'start' => $this->start, 'end' => $this->end, ]; } } PKS%W]z·O  2client/src/Responses/Audio/TranslationResponse.phpnu„[µü¤, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, text: string}> */ final class TranslationResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, text: string}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $segments */ private function __construct( public readonly ?string $task, public readonly ?string $language, public readonly ?float $duration, public readonly array $segments, public readonly string $text, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{task: ?string, language: ?string, duration: ?float, segments: array, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, text: string} $attributes */ public static function from(array|string $attributes, MetaInformation $meta): self { if (is_string($attributes)) { $attributes = ['text' => $attributes]; } $segments = isset($attributes['segments']) ? array_map(fn (array $result): TranslationResponseSegment => TranslationResponseSegment::from( $result ), $attributes['segments']) : []; return new self( $attributes['task'] ?? null, $attributes['language'] ?? null, $attributes['duration'] ?? null, $segments, $attributes['text'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'task' => $this->task, 'language' => $this->language, 'duration' => $this->duration, 'segments' => array_map( static fn (TranslationResponseSegment $result): array => $result->toArray(), $this->segments, ), 'text' => $this->text, ]; } } PKS%W]”ÝšÕ2 2 9client/src/Responses/Audio/TranslationResponseSegment.phpnu„[µü¤, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}> */ final class TranslationResponseSegment implements ResponseContract { /** * @use ArrayAccessible, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}> */ use ArrayAccessible; /** * @param array $tokens */ private function __construct( public readonly int $id, public readonly int $seek, public readonly float $start, public readonly float $end, public readonly string $text, public readonly array $tokens, public readonly float $temperature, public readonly float $avgLogprob, public readonly float $compressionRatio, public readonly float $noSpeechProb, public readonly ?bool $transient, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: int, seek: int, start: float, end: float, text: string, tokens: array, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['seek'], $attributes['start'], $attributes['end'], $attributes['text'], $attributes['tokens'], $attributes['temperature'], $attributes['avg_logprob'], $attributes['compression_ratio'], $attributes['no_speech_prob'], $attributes['transient'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { $data = [ 'id' => $this->id, 'seek' => $this->seek, 'start' => $this->start, 'end' => $this->end, 'text' => $this->text, 'tokens' => $this->tokens, 'temperature' => $this->temperature, 'avg_logprob' => $this->avgLogprob, 'compression_ratio' => $this->compressionRatio, 'no_speech_prob' => $this->noSpeechProb, ]; if ($this->transient !== null) { $data['transient'] = $this->transient; } return $data; } } PKS%W]¯Â  /client/src/Responses/Threads/ThreadResponse.phpnu„[µü¤}, file_search?: array{vector_store_ids: array}}, metadata: array}> */ final class ThreadResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}, file_search?: array{vector_store_ids: array}}, metadata: array}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $metadata */ private function __construct( public string $id, public string $object, public int $createdAt, public ?AssistantResponseToolResources $toolResources, public array $metadata, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, tool_resources: ?array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], isset($attributes['tool_resources']) ? AssistantResponseToolResources::from($attributes['tool_resources']) : null, $attributes['metadata'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'tool_resources' => $this->toolResources?->toArray(), 'metadata' => $this->metadata, ]; } } PKS%W]騢 !!5client/src/Responses/Threads/ThreadDeleteResponse.phpnu„[µü¤ */ final class ThreadDeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]ƒùŒ§§Aclient/src/Responses/Threads/Runs/ThreadRunResponseToolChoice.phpnu„[µü¤ */ final class ThreadRunResponseToolChoice implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public ?ThreadRunResponseToolChoiceFunction $function ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: string, function?: array{name: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], empty($attributes['function']) ? null : ThreadRunResponseToolChoiceFunction::from($attributes['function']), ); } /** * {@inheritDoc} */ public function toArray(): array { $response = [ 'type' => $this->type, ]; if ($this->function instanceof \OpenAI\Responses\Threads\Runs\ThreadRunResponseToolChoiceFunction) { $response['function'] = $this->function->toArray(); } return $response; } } PKS%W]~B\[[@client/src/Responses/Threads/Runs/ThreadRunResponseLastError.phpnu„[µü¤ */ final class ThreadRunResponseLastError implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $code, public string $message, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{code: string, message: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['code'], $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'message' => $this->message, ]; } } PKS%W]Žæ£““Eclient/src/Responses/Threads/Runs/Steps/ThreadRunStepListResponse.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class ThreadRunStepListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): ThreadRunStepResponse => ThreadRunStepResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (ThreadRunStepResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W];ÅøI……Fclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseUsage.phpnu„[µü¤ */ final class ThreadRunStepResponseUsage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public int $completionTokens, public int $promptTokens, public int $totalTokens, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{prompt_tokens: int, completion_tokens: int, total_tokens: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['completion_tokens'], $attributes['prompt_tokens'], $attributes['total_tokens'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'prompt_tokens' => $this->promptTokens, 'completion_tokens' => $this->completionTokens, 'total_tokens' => $this->totalTokens, ]; } } PKS%W]¸­=JŠŠZclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputLogs.phpnu„[µü¤ */ final class ThreadRunStepResponseCodeInterpreterOutputLogs implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'logs' $type */ private function __construct( public string $type, public string $logs, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'logs', logs: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['logs'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'logs' => $this->logs, ]; } } PKS%W]d†º¤ ¤ Pclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreter.phpnu„[µü¤}> */ final class ThreadRunStepResponseCodeInterpreter implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param \OpenAI\Responses\Threads\Runs\Steps\ThreadRunStepResponseCodeInterpreterOutputLogs[]|\OpenAI\Responses\Threads\Runs\Steps\ThreadRunStepResponseCodeInterpreterOutputImage[]|null $outputs */ private function __construct( public ?string $input, public ?array $outputs, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{input?: string, outputs?: array} $attributes */ public static function from(array $attributes): self { $outputs = array_map( fn (array $output): \OpenAI\Responses\Threads\Runs\Steps\ThreadRunStepResponseCodeInterpreterOutputImage|\OpenAI\Responses\Threads\Runs\Steps\ThreadRunStepResponseCodeInterpreterOutputLogs => match ($output['type']) { 'image' => ThreadRunStepResponseCodeInterpreterOutputImage::from($output), 'logs' => ThreadRunStepResponseCodeInterpreterOutputLogs::from($output), }, $attributes['outputs'] ?? [], ); return new self( $attributes['input'] ?? null, $outputs, ); } /** * {@inheritDoc} */ public function toArray(): array { $response = []; if (! is_null($this->input)) { $response['input'] = $this->input; } if ($this->outputs) { $response['outputs'] = array_map( fn (ThreadRunStepResponseCodeInterpreterOutputImage|ThreadRunStepResponseCodeInterpreterOutputLogs $output): array => $output->toArray(), $this->outputs, ); } return $response; } } PKS%W]Ì61ú ú Jclient/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaObject.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}}> */ final class ThreadRunStepDeltaObject implements ResponseContract { /** * @use ArrayAccessible}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}}> */ use ArrayAccessible; use Fakeable; private function __construct( public ThreadRunStepResponseMessageCreationStepDetails|ThreadRunStepResponseToolCallsStepDetails $stepDetails, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{step_details: array{type: 'tool_calls', tool_calls: array}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}} $attributes */ public static function from(array $attributes): self { $stepDetails = match ($attributes['step_details']['type']) { 'message_creation' => ThreadRunStepResponseMessageCreationStepDetails::from($attributes['step_details']), 'tool_calls' => ThreadRunStepResponseToolCallsStepDetails::from($attributes['step_details']), }; return new self( $stepDetails, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'step_details' => $this->stepDetails->toArray(), ]; } } PKS%W]¬­"‹> > Lclient/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaResponse.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}}}> */ final class ThreadRunStepDeltaResponse implements ResponseContract { /** * @use ArrayAccessible}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}}}> */ use ArrayAccessible; use Fakeable; private function __construct( public ?string $id, public string $object, public ThreadRunStepDeltaObject $delta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id?: string, object: string, delta: array{step_details: array{type: 'tool_calls', tool_calls: array}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'] ?? null, $attributes['object'], ThreadRunStepDeltaObject::from($attributes['delta']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'delta' => $this->delta->toArray(), ]; } } PKS%W]¶œ³ô¼¼Sclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFileSearchToolCall.phpnu„[µü¤}> */ final class ThreadRunStepResponseFileSearchToolCall implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param 'file_search' $type * @param array $file_search */ private function __construct( public string $id, public string $type, public array $file_search, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, type: 'file_search', file_search: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['type'], $attributes['file_search'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'type' => $this->type, 'file_search' => $this->file_search, ]; } } PKS%W]EÉ|-§§[client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseMessageCreationStepDetails.phpnu„[µü¤ */ final class ThreadRunStepResponseMessageCreationStepDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'message_creation' $type */ private function __construct( public string $type, public ThreadRunStepResponseMessageCreation $messageCreation, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'message_creation', message_creation: array{message_id: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadRunStepResponseMessageCreation::from($attributes['message_creation']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'message_creation' => $this->messageCreation->toArray(), ]; } } PKS%W]hÖà§kkMclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeToolCall.phpnu„[µü¤}}> */ final class ThreadRunStepResponseCodeToolCall implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; /** * @param 'code_interpreter' $type */ private function __construct( public ?string $id, public string $type, public ThreadRunStepResponseCodeInterpreter $codeInterpreter, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id?: string, type: 'code_interpreter', code_interpreter: array{input?: string, outputs?: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'] ?? null, $attributes['type'], ThreadRunStepResponseCodeInterpreter::from($attributes['code_interpreter']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'type' => $this->type, 'code_interpreter' => $this->codeInterpreter->toArray(), ]; } } PKS%W]ï¡V¹Ê Ê Uclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseToolCallsStepDetails.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}> */ final class ThreadRunStepResponseToolCallsStepDetails implements ResponseContract { /** * @use ArrayAccessible}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}> */ use ArrayAccessible; use Fakeable; /** * @param 'tool_calls' $type * @param array $toolCalls */ private function __construct( public string $type, public array $toolCalls, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'tool_calls', tool_calls: array}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>} $attributes */ public static function from(array $attributes): self { $toolCalls = array_map( fn (array $toolCall): ThreadRunStepResponseCodeToolCall|ThreadRunStepResponseFileSearchToolCall|ThreadRunStepResponseFunctionToolCall => match ($toolCall['type']) { 'code_interpreter' => ThreadRunStepResponseCodeToolCall::from($toolCall), 'file_search' => ThreadRunStepResponseFileSearchToolCall::from($toolCall), 'function' => ThreadRunStepResponseFunctionToolCall::from($toolCall), }, $attributes['tool_calls'], ); return new self( $attributes['type'], $toolCalls, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'tool_calls' => array_map( fn (ThreadRunStepResponseCodeToolCall|ThreadRunStepResponseFileSearchToolCall|ThreadRunStepResponseFunctionToolCall $toolCall): array => $toolCall->toArray(), $this->toolCalls, ), ]; } } PKS%W]tÛEÔ<<[client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputImage.phpnu„[µü¤ */ final class ThreadRunStepResponseCodeInterpreterOutputImage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'image' $type */ private function __construct( public string $type, public ThreadRunStepResponseCodeInterpreterOutputImageImage $image, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'image', image: array{file_id: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadRunStepResponseCodeInterpreterOutputImageImage::from($attributes['image']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'image' => $this->image->toArray(), ]; } } PKS%W]#SrìQclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFunctionToolCall.phpnu„[µü¤ */ final class ThreadRunStepResponseFunctionToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'function' $type */ private function __construct( public ?string $id, public string $type, public ThreadRunStepResponseFunction $function, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'] ?? null, $attributes['type'], ThreadRunStepResponseFunction::from($attributes['function']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'type' => $this->type, 'function' => $this->function->toArray(), ]; } } PKS%W]]U³Àëë`client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputImageImage.phpnu„[µü¤ */ final class ThreadRunStepResponseCodeInterpreterOutputImageImage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $fileId, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['file_id'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, ]; } } PKS%W]ĪÿýððPclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseMessageCreation.phpnu„[µü¤ */ final class ThreadRunStepResponseMessageCreation implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $messageId, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{message_id: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['message_id'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'message_id' => $this->messageId, ]; } } PKS%W]T «--Aclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponse.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> */ final class ThreadRunStepResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}|array{id: string, type: 'file_search', file_search: array}|array{id: ?string, type: 'function', function: array{name: ?string, arguments: string, output: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $metadata */ private function __construct( public string $id, public string $object, public int $createdAt, public string $threadId, public string $assistantId, public string $runId, public string $type, public string $status, public ThreadRunStepResponseMessageCreationStepDetails|ThreadRunStepResponseToolCallsStepDetails $stepDetails, public ?ThreadRunResponseLastError $lastError, public ?int $expiresAt, public ?int $cancelledAt, public ?int $failedAt, public ?int $completedAt, public array $metadata, private readonly MetaInformation $meta, public ?ThreadRunStepResponseUsage $usage ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, thread_id: string, assistant_id: string, run_id: string, type: string, status: string, step_details: array{type: 'tool_calls', tool_calls: array}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $stepDetails = match ($attributes['step_details']['type']) { 'message_creation' => ThreadRunStepResponseMessageCreationStepDetails::from($attributes['step_details']), 'tool_calls' => ThreadRunStepResponseToolCallsStepDetails::from($attributes['step_details']), }; return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['thread_id'], $attributes['assistant_id'], $attributes['run_id'], $attributes['type'], $attributes['status'], $stepDetails, isset($attributes['last_error']) ? ThreadRunResponseLastError::from($attributes['last_error']) : null, $attributes['expires_at'], $attributes['cancelled_at'], $attributes['failed_at'], $attributes['completed_at'], $attributes['metadata'] ?? [], $meta, empty($attributes['usage']) ? null : ThreadRunStepResponseUsage::from($attributes['usage']), ); } /** * {@inheritDoc} */ public function toArray(): array { $data = [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'run_id' => $this->runId, 'assistant_id' => $this->assistantId, 'thread_id' => $this->threadId, 'type' => $this->type, 'status' => $this->status, 'cancelled_at' => $this->cancelledAt, 'completed_at' => $this->completedAt, 'expires_at' => $this->expiresAt, 'failed_at' => $this->failedAt, 'last_error' => $this->lastError?->toArray(), 'step_details' => $this->stepDetails->toArray(), 'usage' => $this->usage?->toArray(), ]; if ($this->metadata !== []) { $data['metadata'] = $this->metadata; } return $data; } } PKS%W]þ6ò))Iclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFunction.phpnu„[µü¤ */ final class ThreadRunStepResponseFunction implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public ?string $name, public string $arguments, public ?string $output, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{name?: string, arguments: string, output?: ?string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['name'] ?? null, $attributes['arguments'], $attributes['output'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'arguments' => $this->arguments, 'output' => $this->output, ]; } } PKS%W]ö¯i i =client/src/Responses/Threads/Runs/ThreadRunStreamResponse.phpnu„[µü¤}> */ class ThreadRunStreamResponse implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use FakeableForStreamedResponse; private function __construct( public readonly string $event, public readonly ThreadResponse|ThreadRunResponse|ThreadRunStepResponse|ThreadRunStepDeltaResponse|ThreadMessageResponse|ThreadMessageDeltaResponse $response, ) {} /** * Acts as static factory, and returns a new Response instance. * * Maps the appropriate classes onto each event from the assistants streaming api * https://platform.openai.com/docs/api-reference/assistants-streaming/events * * @param array $attributes */ public static function from(array $attributes): self { $event = $attributes['__event']; unset($attributes['__event']); $meta = $attributes['__meta']; unset($attributes['__meta']); $response = match ($event) { 'thread.created' => ThreadResponse::from($attributes, $meta), // @phpstan-ignore-line 'thread.run.created', 'thread.run.queued', 'thread.run.in_progress', 'thread.run.requires_action', 'thread.run.completed', 'thread.run.incomplete', 'thread.run.failed', 'thread.run.cancelling', 'thread.run.cancelled', 'thread.run.expired' => ThreadRunResponse::from($attributes, $meta), // @phpstan-ignore-line 'thread.run.step.created', 'thread.run.step.in_progress', 'thread.run.step.completed', 'thread.run.step.failed', 'thread.run.step.cancelled', 'thread.run.step.expired' => ThreadRunStepResponse::from($attributes, $meta), // @phpstan-ignore-line 'thread.run.step.delta' => ThreadRunStepDeltaResponse::from($attributes), // @phpstan-ignore-line 'thread.message.created', 'thread.message.in_progress', 'thread.message.completed', 'thread.message.incomplete' => ThreadMessageResponse::from($attributes, $meta), // @phpstan-ignore-line 'thread.message.delta' => ThreadMessageDeltaResponse::from($attributes), // @phpstan-ignore-line default => throw new UnknownEventException('Unknown event: ' . $event), }; return new self( $event, // @phpstan-ignore-line $response, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'event' => $this->event, 'data' => $this->response->toArray(), ]; } } PKS%W]SÚ´DÀÀAclient/src/Responses/Threads/Runs/ThreadRunResponseFileSearch.phpnu„[µü¤ */ final class ThreadRunResponseFileSearch implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'file_search'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]I},úÎÎJclient/src/Responses/Threads/Runs/ThreadRunResponseToolCodeInterpreter.phpnu„[µü¤ */ final class ThreadRunResponseToolCodeInterpreter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'code_interpreter'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]æÖº��Cclient/src/Responses/Threads/Runs/ThreadRunResponseToolFunction.phpnu„[µü¤}}> */ final class ThreadRunResponseToolFunction implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public ThreadRunResponseToolFunctionFunction $function, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'function', function: array{description: string, name: string, parameters: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadRunResponseToolFunctionFunction::from($attributes['function']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'function' => $this->function->toArray(), ]; } } PKS%W]ý%*ÄŠŠIclient/src/Responses/Threads/Runs/ThreadRunResponseTruncationStrategy.phpnu„[µü¤ */ final class ThreadRunResponseTruncationStrategy implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public ?int $lastMessages, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: string, last_messages: ?int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['last_messages'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'last_messages' => $this->lastMessages, ]; } } PKS%W]sƒòƒƒVclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionSubmitToolOutputs.phpnu„[µü¤}> */ final class ThreadRunResponseRequiredActionSubmitToolOutputs implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $toolCalls */ private function __construct( public array $toolCalls, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{tool_calls: array} $attributes */ public static function from(array $attributes): self { $toolCalls = array_map(fn (array $toolCall): ThreadRunResponseRequiredActionFunctionToolCall => ThreadRunResponseRequiredActionFunctionToolCall::from($toolCall), $attributes['tool_calls']); return new self( $toolCalls, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'tool_calls' => array_map(fn (ThreadRunResponseRequiredActionFunctionToolCall $toolCall): array => $toolCall->toArray(), $this->toolCalls), ]; } } PKS%W]ÞÖÖUclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionFunctionToolCall.phpnu„[µü¤ */ final class ThreadRunResponseRequiredActionFunctionToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $id, public string $type, public ThreadRunResponseRequiredActionFunctionToolCallFunction $function, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, type: string, function: array{name: string, arguments: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['type'], ThreadRunResponseRequiredActionFunctionToolCallFunction::from($attributes['function']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'type' => $this->type, 'function' => $this->function->toArray(), ]; } } PKS%W]ÁÝŒuggEclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredAction.phpnu„[µü¤}}> */ final class ThreadRunResponseRequiredAction implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public ThreadRunResponseRequiredActionSubmitToolOutputs $submitToolOutputs, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: string, submit_tool_outputs: array{tool_calls: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadRunResponseRequiredActionSubmitToolOutputs::from($attributes['submit_tool_outputs']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'submit_tool_outputs' => $this->submitToolOutputs->toArray(), ]; } } PKS%W]ƒìg¦¦Kclient/src/Responses/Threads/Runs/ThreadRunResponseToolFunctionFunction.phpnu„[µü¤}> */ final class ThreadRunResponseToolFunctionFunction implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $parameters */ private function __construct( public string $name, public string $description, public array $parameters, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{description: string, name: string, parameters: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['name'], $attributes['description'], $attributes['parameters'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'description' => $this->description, 'parameters' => $this->parameters, ]; } } PKS%W]02tÁÁIclient/src/Responses/Threads/Runs/ThreadRunResponseToolChoiceFunction.phpnu„[µü¤ */ final class ThreadRunResponseToolChoiceFunction implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $name, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{name: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['name'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, ]; } } PKS%W] ©¤íí<client/src/Responses/Threads/Runs/ThreadRunResponseUsage.phpnu„[µü¤ $this->promptTokens, 'completion_tokens' => $this->completionTokens, 'total_tokens' => $this->totalTokens, ]; } } PKS%W] z¹‚ÎÎHclient/src/Responses/Threads/Runs/ThreadRunResponseIncompleteDetails.phpnu„[µü¤ */ final class ThreadRunResponseIncompleteDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $reason, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{reason: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['reason'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'reason' => $this->reason, ]; } } PKS%W]^®„åh'h'7client/src/Responses/Threads/Runs/ThreadRunResponse.phpnu„[µü¤}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: null|array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: ?array{type: string, last_messages: ?int}, tool_choice: null|string|array{type: string, function?: array{name: string}}, response_format: null|string|array{type: string}}> */ final class ThreadRunResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: ?array{type: string, last_messages: ?int}, tool_choice: null|string|array{type: string, function?: array{name: string}}, response_format: null|string|array{type: string}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $tools * @param array $metadata */ private function __construct( public string $id, public string $object, public int $createdAt, public string $threadId, public string $assistantId, public string $status, public ?ThreadRunResponseRequiredAction $requiredAction, public ?ThreadRunResponseLastError $lastError, public ?int $expiresAt, public ?int $startedAt, public ?int $cancelledAt, public ?int $failedAt, public ?int $completedAt, public ?ThreadRunResponseIncompleteDetails $incompleteDetails, public string $model, public ?string $instructions, public array $tools, public array $metadata, public ?ThreadRunResponseUsage $usage, public ?float $temperature, public ?float $topP, public ?int $maxPromptTokens, public ?int $maxCompletionTokens, public ?ThreadRunResponseTruncationStrategy $truncationStrategy, public null|string|ThreadRunResponseToolChoice $toolChoice, public null|string|AssistantResponseResponseFormat $responseFormat, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, thread_id: string, assistant_id: string, status: string, required_action?: array{type: string, submit_tool_outputs: array{tool_calls: array}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: ?array{type: string, last_messages: ?int}, tool_choice: null|string|array{type: string, function?: array{name: string}}, response_format: null|string|array{type: 'text'|'json_object'}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $tools = array_map( fn (array $tool): ThreadRunResponseToolCodeInterpreter|ThreadRunResponseFileSearch|ThreadRunResponseToolFunction => match ($tool['type']) { 'code_interpreter' => ThreadRunResponseToolCodeInterpreter::from($tool), 'file_search' => ThreadRunResponseFileSearch::from($tool), 'function' => ThreadRunResponseToolFunction::from($tool), }, $attributes['tools'], ); $responseFormat = is_array($attributes['response_format']) ? AssistantResponseResponseFormat::from($attributes['response_format']) : $attributes['response_format']; return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['thread_id'], $attributes['assistant_id'], $attributes['status'], isset($attributes['required_action']) ? ThreadRunResponseRequiredAction::from($attributes['required_action']) : null, isset($attributes['last_error']) ? ThreadRunResponseLastError::from($attributes['last_error']) : null, $attributes['expires_at'], $attributes['started_at'], $attributes['cancelled_at'], $attributes['failed_at'], $attributes['completed_at'], isset($attributes['incomplete_details']) ? ThreadRunResponseIncompleteDetails::from($attributes['incomplete_details']) : null, $attributes['model'], $attributes['instructions'], $tools, $attributes['metadata'], isset($attributes['usage']) ? ThreadRunResponseUsage::from($attributes['usage']) : null, $attributes['temperature'] ?? null, $attributes['top_p'] ?? null, $attributes['max_prompt_tokens'] ?? null, $attributes['max_completion_tokens'] ?? null, $attributes['truncation_strategy'] !== null ? ThreadRunResponseTruncationStrategy::from($attributes['truncation_strategy']) : null, is_array($attributes['tool_choice']) ? ThreadRunResponseToolChoice::from($attributes['tool_choice']) : $attributes['tool_choice'], $responseFormat, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { $data = [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'assistant_id' => $this->assistantId, 'thread_id' => $this->threadId, 'status' => $this->status, 'started_at' => $this->startedAt, 'expires_at' => $this->expiresAt, 'cancelled_at' => $this->cancelledAt, 'failed_at' => $this->failedAt, 'completed_at' => $this->completedAt, 'incomplete_details' => $this->incompleteDetails?->toArray(), 'required_action' => $this->requiredAction?->toArray(), 'last_error' => $this->lastError?->toArray(), 'model' => $this->model, 'instructions' => $this->instructions, 'tools' => array_map( fn (ThreadRunResponseToolCodeInterpreter|ThreadRunResponseFileSearch|ThreadRunResponseToolFunction $tool): array => $tool->toArray(), $this->tools, ), 'metadata' => $this->metadata, 'usage' => $this->usage?->toArray(), 'temperature' => $this->temperature, 'top_p' => $this->topP, 'max_prompt_tokens' => $this->maxPromptTokens, 'max_completion_tokens' => $this->maxCompletionTokens, 'truncation_strategy' => $this->truncationStrategy?->toArray(), 'tool_choice' => $this->toolChoice instanceof ThreadRunResponseToolChoice ? $this->toolChoice->toArray() : $this->toolChoice, 'response_format' => $this->responseFormat instanceof AssistantResponseResponseFormat ? $this->responseFormat->toArray() : $this->responseFormat, ]; if ($data['required_action'] === null) { unset($data['required_action']); } if ($data['usage'] === null) { unset($data['usage']); } return $data; } } PKS%W]}Tˆˆ]client/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionFunctionToolCallFunction.phpnu„[µü¤ */ final class ThreadRunResponseRequiredActionFunctionToolCallFunction implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $name, public string $arguments, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{name: string, arguments: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['name'], $attributes['arguments'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'arguments' => $this->arguments, ]; } } PKS%W]ôãëââ;client/src/Responses/Threads/Runs/ThreadRunListResponse.phpnu„[µü¤}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: null|array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: ?array{type: string, last_messages: ?int}, tool_choice: null|string|array{type: string, function?: array{name: string}}, response_format: null|string|array{type: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class ThreadRunListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: null|array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: ?array{type: string, last_messages: ?int}, tool_choice: null|string|array{type: string, function?: array{name: string}}, response_format: null|string|array{type: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): ThreadRunResponse => ThreadRunResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (ThreadRunResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]ë�&ãèè\client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFilePath.phpnu„[µü¤ */ final class ThreadMessageResponseContentTextAnnotationFilePath implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $fileId, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['file_id'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, ]; } } PKS%W]‰3 ,ÇÇ`client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFileCitation.phpnu„[µü¤ */ final class ThreadMessageResponseContentTextAnnotationFileCitation implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $fileId, public ?string $quote, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string, quote?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['file_id'], $attributes['quote'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'file_id' => $this->fileId, 'quote' => $this->quote, ], fn (?string $value): bool => $value !== null); } } PKS%W]±ÿí; ; Hclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaObject.phpnu„[µü¤}}>, file_ids: ?array}> */ final class ThreadMessageDeltaObject implements ResponseContract { /** * @use ArrayAccessible}}>, file_ids: ?array}> */ use ArrayAccessible; use Fakeable; /** * @param array $content * @param array|null $fileIds */ private function __construct( public ?string $role, public array $content, public ?array $fileIds, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{role?: string, content: array}}>, file_ids?: array} $attributes */ public static function from(array $attributes): self { $content = array_map( fn (array $content): ThreadMessageDeltaResponseContentTextObject|ThreadMessageDeltaResponseContentImageFileObject => match ($content['type']) { 'text' => ThreadMessageDeltaResponseContentTextObject::from($content), 'image_file' => ThreadMessageDeltaResponseContentImageFileObject::from($content), }, $attributes['content'], ); return new self( $attributes['role'] ?? null, $content, $attributes['file_ids'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'role' => $this->role, 'content' => array_map(fn (ThreadMessageDeltaResponseContentImageFileObject|ThreadMessageDeltaResponseContentTextObject $content): array => $content->toArray(), $this->content), 'file_ids' => $this->fileIds, ]; } } PKS%W]2Ä œhh`client/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentImageFileObject.phpnu„[µü¤ */ final class ThreadMessageDeltaResponseContentImageFileObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'image_file' $type */ private function __construct( public int $index, public string $type, public ThreadMessageResponseContentImageFile $imageFile, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{index: int, type: 'image_file', image_file: array{file_id: string, detail?: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['index'], $attributes['type'], ThreadMessageResponseContentImageFile::from($attributes['image_file']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'index' => $this->index, 'type' => $this->type, 'image_file' => $this->imageFile->toArray(), ]; } } PKS%W]õÂQUµµ[client/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentTextObject.phpnu„[µü¤}}> */ final class ThreadMessageDeltaResponseContentTextObject implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; /** * @param 'text' $type */ private function __construct( public int $index, public string $type, public ThreadMessageDeltaResponseContentText $text, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{index: int, type: 'text', text: array{value?: string, annotations: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['index'], $attributes['type'], ThreadMessageDeltaResponseContentText::from($attributes['text']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'index' => $this->index, 'type' => $this->type, 'text' => $this->text->toArray(), ]; } } PKS%W]èºl·  Uclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentText.phpnu„[µü¤}> */ final class ThreadMessageDeltaResponseContentText implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param \OpenAI\Responses\Threads\Messages\ThreadMessageResponseContentTextAnnotationFilePathObject[]|\OpenAI\Responses\Threads\Messages\ThreadMessageResponseContentTextAnnotationFileCitationObject[] $annotations */ private function __construct( public ?string $value, public array $annotations, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{value?: string, annotations?: array} $attributes */ public static function from(array $attributes): self { $annotations = array_map( fn (array $annotation): ThreadMessageResponseContentTextAnnotationFileCitationObject|ThreadMessageResponseContentTextAnnotationFilePathObject => match ($annotation['type']) { 'file_citation' => ThreadMessageResponseContentTextAnnotationFileCitationObject::from($annotation), 'file_path' => ThreadMessageResponseContentTextAnnotationFilePathObject::from($annotation), }, $attributes['annotations'] ?? [], ); return new self( $attributes['value'] ?? null, $annotations, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'value' => $this->value, 'annotations' => array_map( fn (ThreadMessageResponseContentTextAnnotationFilePathObject|ThreadMessageResponseContentTextAnnotationFileCitationObject $annotation): array => $annotation->toArray(), $this->annotations, ), ]; } } PKS%W]øó䯬 ¬ Jclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponse.phpnu„[µü¤}}>, file_ids: array|null}}> */ final class ThreadMessageDeltaResponse implements ResponseContract { /** * @use ArrayAccessible}}>, file_ids: array|null}}> */ use ArrayAccessible; use Fakeable; private function __construct( public string $id, public string $object, public ThreadMessageDeltaObject $delta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, delta: array{role?: string, content: array}}>, file_ids?: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['object'], ThreadMessageDeltaObject::from($attributes['delta']) ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'delta' => $this->delta->toArray(), ]; } } PKS%W]ß‚îÁÁfclient/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFileCitationObject.phpnu„[µü¤ */ final class ThreadMessageResponseContentTextAnnotationFileCitationObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_citation' $type */ private function __construct( public string $type, public string $text, public int $startIndex, public int $endIndex, public ThreadMessageResponseContentTextAnnotationFileCitation $fileCitation, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'file_citation', text: string, file_citation: array{file_id: string, quote?: string}, start_index: int, end_index: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['text'], $attributes['start_index'], $attributes['end_index'], ThreadMessageResponseContentTextAnnotationFileCitation::from($attributes['file_citation']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'text' => $this->text, 'start_index' => $this->startIndex, 'end_index' => $this->endIndex, 'file_citation' => $this->fileCitation->toArray(), ]; } } PKS%W]xå¹llTclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageUrlObject.phpnu„[µü¤ */ final class ThreadMessageResponseContentImageUrlObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'image_url' $type */ private function __construct( public string $type, public ThreadMessageResponseContentImageUrl $imageFile, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'image_url', image_url: array{url: string, detail?: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadMessageResponseContentImageUrl::from($attributes['image_url']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'image_url' => $this->imageFile->toArray(), ]; } } PKS%W]üzÆ*ò ò Jclient/src/Responses/Threads/Messages/ThreadMessageResponseContentText.phpnu„[µü¤}> */ final class ThreadMessageResponseContentText implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $annotations */ private function __construct( public string $value, public array $annotations, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{value: string, annotations: array} $attributes */ public static function from(array $attributes): self { $annotations = array_map( fn (array $annotation): ThreadMessageResponseContentTextAnnotationFileCitationObject|ThreadMessageResponseContentTextAnnotationFilePathObject => match ($annotation['type']) { 'file_citation' => ThreadMessageResponseContentTextAnnotationFileCitationObject::from($annotation), 'file_path' => ThreadMessageResponseContentTextAnnotationFilePathObject::from($annotation), }, $attributes['annotations'], ); return new self( $attributes['value'], $annotations, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'value' => $this->value, 'annotations' => array_map( fn (ThreadMessageResponseContentTextAnnotationFilePathObject|ThreadMessageResponseContentTextAnnotationFileCitationObject $annotation): array => $annotation->toArray(), $this->annotations, ), ]; } } PKS%W]aŠ<­­Iclient/src/Responses/Threads/Messages/ThreadMessageResponseAttachment.phpnu„[µü¤}> */ final class ThreadMessageResponseAttachment implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; /** * @param array $tools */ private function __construct( public string $fileId, public array $tools, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string, tools: array} $attributes */ public static function from(array $attributes): self { $tools = array_map(fn (array $tool): ThreadMessageResponseAttachmentFileSearchTool|ThreadMessageResponseAttachmentCodeInterpreterTool => match ($tool['type']) { 'file_search' => ThreadMessageResponseAttachmentFileSearchTool::from($tool), 'code_interpreter' => ThreadMessageResponseAttachmentCodeInterpreterTool::from($tool), }, $attributes['tools']); return new self( $attributes['file_id'], $tools, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'tools' => array_map( fn (ThreadMessageResponseAttachmentCodeInterpreterTool|ThreadMessageResponseAttachmentFileSearchTool $tool): array => $tool->toArray(), $this->tools, ), ]; } } PKS%W]4͉ÍPclient/src/Responses/Threads/Messages/ThreadMessageResponseContentTextObject.phpnu„[µü¤}}> */ final class ThreadMessageResponseContentTextObject implements ResponseContract { /** * @use ArrayAccessible}}> */ use ArrayAccessible; use Fakeable; /** * @param 'text' $type */ private function __construct( public string $type, public ThreadMessageResponseContentText $text, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'text', text: array{value: string, annotations: array}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadMessageResponseContentText::from($attributes['text']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'text' => $this->text->toArray(), ]; } } PKS%W]3¡¾ÄÖÖPclient/src/Responses/Threads/Messages/ThreadMessageResponseIncompleteDetails.phpnu„[µü¤ */ final class ThreadMessageResponseIncompleteDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $reason, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{reason: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['reason'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'reason' => $this->reason, ]; } } PKS%W]EÅn¡¼¼Oclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageFile.phpnu„[µü¤ */ final class ThreadMessageResponseContentImageFile implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $fileId, public ?string $detail, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string, detail?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['file_id'], $attributes['detail'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'file_id' => $this->fileId, 'detail' => $this->detail, ], fn (?string $value): bool => $value !== null); } } PKS%W]jšùBWclient/src/Responses/Threads/Messages/ThreadMessageResponseAttachmentFileSearchTool.phpnu„[µü¤ */ final class ThreadMessageResponseAttachmentFileSearchTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_search' $type */ private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'file_search'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]ž3e11\client/src/Responses/Threads/Messages/ThreadMessageResponseAttachmentCodeInterpreterTool.phpnu„[µü¤ */ final class ThreadMessageResponseAttachmentCodeInterpreterTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'code_interpreter' $type */ private function __construct( public string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'code_interpreter'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]wD‹¬¬Cclient/src/Responses/Threads/Messages/ThreadMessageListResponse.phpnu„[µü¤}}|array{type: string, image_file: array{file_id: string}}|array{type: 'image_url', image_url: array{url: string, detail?: string}}>, assistant_id: ?string, run_id: ?string, attachments: array}>, metadata: array}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class ThreadMessageListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}|array{type: string, image_file: array{file_id: string}}|array{type: 'image_url', image_url: array{url: string, detail?: string}}>, assistant_id: ?string, run_id: ?string, attachments: array}>, metadata: array}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): ThreadMessageResponse => ThreadMessageResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (ThreadMessageResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]`iú11Eclient/src/Responses/Threads/Messages/ThreadMessageDeleteResponse.phpnu„[µü¤ */ final class ThreadMessageDeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]û×ìì?client/src/Responses/Threads/Messages/ThreadMessageResponse.phpnu„[µü¤}}|array{type: string, image_file: array{file_id: string, detail?: string}}|array{type: 'image_url', image_url: array{url: string, detail?: string}}>, assistant_id: ?string, run_id: ?string, attachments: array}>, metadata: array}> */ final class ThreadMessageResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}}|array{type: string, image_file: array{file_id: string, detail?: string}}|array{type: 'image_url', image_url: array{url: string, detail?: string}}>, assistant_id: ?string, run_id: ?string, attachments: array}>, metadata: array}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $content * @param array $attachments * @param array $metadata */ private function __construct( public string $id, public string $object, public int $createdAt, public string $threadId, public string $role, public array $content, public ?string $assistantId, public ?string $runId, public array $attachments, public array $metadata, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, thread_id: string, role: string, content: array}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $content = array_map( fn (array $content): ThreadMessageResponseContentTextObject|ThreadMessageResponseContentImageFileObject|ThreadMessageResponseContentImageUrlObject => match ($content['type']) { 'text' => ThreadMessageResponseContentTextObject::from($content), 'image_file' => ThreadMessageResponseContentImageFileObject::from($content), 'image_url' => ThreadMessageResponseContentImageUrlObject::from($content), }, $attributes['content'], ); $attachments = array_map( fn (array $attachment): ThreadMessageResponseAttachment => ThreadMessageResponseAttachment::from($attachment), $attributes['attachments'] ?? [] ); return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['thread_id'], $attributes['role'], $content, $attributes['assistant_id'], $attributes['run_id'], $attachments, $attributes['metadata'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'thread_id' => $this->threadId, 'role' => $this->role, 'content' => array_map( fn (ThreadMessageResponseContentImageFileObject|ThreadMessageResponseContentTextObject|ThreadMessageResponseContentImageUrlObject $content): array => $content->toArray(), $this->content, ), 'attachments' => array_map( fn (ThreadMessageResponseAttachment $attachment): array => $attachment->toArray(), $this->attachments ), 'assistant_id' => $this->assistantId, 'run_id' => $this->runId, 'metadata' => $this->metadata, ]; } } PKS%W]?,‹¡££Nclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageUrl.phpnu„[µü¤ */ final class ThreadMessageResponseContentImageUrl implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $url, public ?string $detail, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{url: string, detail?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['url'], $attributes['detail'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'url' => $this->url, 'detail' => $this->detail, ], fn (?string $value): bool => $value !== null); } } PKS%W]á#b„@@Uclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageFileObject.phpnu„[µü¤ */ final class ThreadMessageResponseContentImageFileObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public string $type, public ThreadMessageResponseContentImageFile $imageFile, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: string, image_file: array{file_id: string, detail?: string}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ThreadMessageResponseContentImageFile::from($attributes['image_file']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'image_file' => $this->imageFile->toArray(), ]; } } PKS%W]‹-»!SSbclient/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFilePathObject.phpnu„[µü¤ */ final class ThreadMessageResponseContentTextAnnotationFilePathObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_path' $type */ private function __construct( public string $type, public string $text, public int $startIndex, public int $endIndex, public ThreadMessageResponseContentTextAnnotationFilePath $filePath, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'file_path', text: string, file_path: array{file_id: string}, start_index: int, end_index: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['text'], $attributes['start_index'], $attributes['end_index'], ThreadMessageResponseContentTextAnnotationFilePath::from($attributes['file_path']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'text' => $this->text, 'start_index' => $this->startIndex, 'end_index' => $this->endIndex, 'file_path' => $this->filePath->toArray(), ]; } } PKS%W]Þþs·//8client/src/Responses/Batches/BatchResponseErrorsData.phpnu„[µü¤ */ final class BatchResponseErrorsData implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public string $code, public string $message, public ?string $param, public ?int $line, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{code: string, message: string, param: ?string, line: ?int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['code'], $attributes['message'], $attributes['param'], $attributes['line'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'message' => $this->message, 'param' => $this->param, 'line' => $this->line, ]; } } PKS%W]"˜«}}2client/src/Responses/Batches/BatchListResponse.phpnu„[µü¤}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts: ?array{total: int, completed: int, failed: int}, metadata: ?array}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class BatchListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts: ?array{total: int, completed: int, failed: int}, metadata: ?array}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): BatchResponse => BatchResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (BatchResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]3§AÑÈÈ.client/src/Responses/Batches/BatchResponse.phpnu„[µü¤}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts: ?array{total: int, completed: int, failed: int}, metadata: ?array}> */ final class BatchResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts: ?array{total: int, completed: int, failed: int}, metadata: ?array}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array|null $metadata */ private function __construct( public string $id, public string $object, public string $endpoint, public ?BatchResponseErrors $errors, public string $inputFileId, public string $completionWindow, public string $status, public ?string $outputFileId, public ?string $errorFileId, public int $createdAt, public ?int $inProgressAt, public ?int $expiresAt, public ?int $finalizingAt, public ?int $completedAt, public ?int $failedAt, public ?int $expiredAt, public ?int $cancellingAt, public ?int $cancelledAt, public ?BatchResponseRequestCounts $requestCounts, public ?array $metadata, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, endpoint: string, errors?: array{object: string, data: array}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['endpoint'], isset($attributes['errors']) ? BatchResponseErrors::from($attributes['errors']) : null, $attributes['input_file_id'], $attributes['completion_window'], $attributes['status'], $attributes['output_file_id'], $attributes['error_file_id'], $attributes['created_at'], $attributes['in_progress_at'], $attributes['expires_at'], $attributes['finalizing_at'], $attributes['completed_at'], $attributes['failed_at'], $attributes['expired_at'], $attributes['cancelling_at'], $attributes['cancelled_at'], isset($attributes['request_counts']) ? BatchResponseRequestCounts::from($attributes['request_counts']) : null, $attributes['metadata'], $meta ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'endpoint' => $this->endpoint, 'errors' => $this->errors?->toArray(), 'input_file_id' => $this->inputFileId, 'completion_window' => $this->completionWindow, 'status' => $this->status, 'output_file_id' => $this->outputFileId, 'error_file_id' => $this->errorFileId, 'created_at' => $this->createdAt, 'in_progress_at' => $this->inProgressAt, 'expires_at' => $this->expiresAt, 'finalizing_at' => $this->finalizingAt, 'completed_at' => $this->completedAt, 'failed_at' => $this->failedAt, 'expired_at' => $this->expiredAt, 'cancelling_at' => $this->cancellingAt, 'cancelled_at' => $this->cancelledAt, 'request_counts' => $this->requestCounts?->toArray(), 'metadata' => $this->metadata, ]; } } PKS%W]ECh&&4client/src/Responses/Batches/BatchResponseErrors.phpnu„[µü¤}> */ final class BatchResponseErrors implements ResponseContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; /** * @param array $data */ private function __construct( public string $object, public array $data, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['object'], array_map( fn (array $data): \OpenAI\Responses\Batches\BatchResponseErrorsData => BatchResponseErrorsData::from($data), $attributes['data'] ) ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map(fn (BatchResponseErrorsData $data): array => $data->toArray(), $this->data), ]; } } PKS%W]Nø 9¢¢;client/src/Responses/Batches/BatchResponseRequestCounts.phpnu„[µü¤ */ final class BatchResponseRequestCounts implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public int $total, public int $completed, public int $failed, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{total: int, completed: int, failed: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['total'], $attributes['completed'], $attributes['failed'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'total' => $this->total, 'completed' => $this->completed, 'failed' => $this->failed, ]; } } PKS%W]Æ'ÝŽ££,client/src/Responses/Models/ListResponse.phpnu„[µü¤}> */ final class ListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, private readonly MetaInformation $meta, ) {} /** * @param array{object: string, data: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): RetrieveResponse => RetrieveResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (RetrieveResponse $response): array => $response->toArray(), $this->data, ), ]; } } PKS%W]´;‘•.client/src/Responses/Models/DeleteResponse.phpnu„[µü¤ */ final class DeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]\eGîýý0client/src/Responses/Models/RetrieveResponse.phpnu„[µü¤ */ final class RetrieveResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly ?int $created, public readonly ?string $ownedBy, private readonly MetaInformation $meta, ) {} /** * @param array{id: string, object: string, created: ?int, created_at?: ?int, owned_by: ?string} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( id: $attributes['id'], object: $attributes['object'], created: $attributes['created'] ?? $attributes['created_at'] ?? null, ownedBy: $attributes['owned_by'] ?? null, meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created' => $this->created, 'owned_by' => $this->ownedBy, ]; } } PKS%W]l�@ ää4client/src/Responses/Concerns/HasMetaInformation.phpnu„[µü¤meta; } } PKS%W]ºÒ?5„„1client/src/Responses/Concerns/ArrayAccessible.phpnu„[µü¤ */ trait ArrayAccessible { /** * {@inheritDoc} */ public function offsetExists(mixed $offset): bool { return array_key_exists($offset, $this->toArray()); } /** * {@inheritDoc} */ public function offsetGet(mixed $offset): mixed { return $this->toArray()[$offset]; // @phpstan-ignore-line } /** * {@inheritDoc} */ public function offsetSet(mixed $offset, mixed $value): never { throw new BadMethodCallException('Cannot set response attributes.'); } /** * {@inheritDoc} */ public function offsetUnset(mixed $offset): never { throw new BadMethodCallException('Cannot unset response attributes.'); } } PKS%W]¡æi:Ê Ê -client/src/Responses/Edits/CreateResponse.phpnu„[µü¤, usage: array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, usage: array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $choices */ private function __construct( public readonly string $object, public readonly int $created, public readonly array $choices, public readonly CreateResponseUsage $usage, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, created: int, choices: array, usage: array{prompt_tokens: int, completion_tokens: int, total_tokens: int}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $choices = array_map(fn (array $result): CreateResponseChoice => CreateResponseChoice::from( $result ), $attributes['choices']); return new self( $attributes['object'], $attributes['created'], $choices, CreateResponseUsage::from($attributes['usage']), $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'created' => $this->created, 'choices' => array_map( static fn (CreateResponseChoice $result): array => $result->toArray(), $this->choices, ), 'usage' => $this->usage->toArray(), ]; } } PKS%W]�0(Ö­­3client/src/Responses/Edits/CreateResponseChoice.phpnu„[µü¤ $this->text, 'index' => $this->index, ]; } } PKS%W]j8@ÐÐ2client/src/Responses/Edits/CreateResponseUsage.phpnu„[µü¤ $this->promptTokens, 'completion_tokens' => $this->completionTokens, 'total_tokens' => $this->totalTokens, ]; } } PKS%W]t}=žžAclient/src/Responses/Completions/CreateResponseChoiceLogprobs.phpnu„[µü¤ $tokens * @param array $tokenLogprobs * @param array|null $topLogprobs * @param array $textOffset */ private function __construct( public readonly array $tokens, public readonly array $tokenLogprobs, public readonly ?array $topLogprobs, public readonly array $textOffset, ) {} /** * @param array{tokens: array, token_logprobs: array, top_logprobs: array|null, text_offset: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['tokens'], $attributes['token_logprobs'], $attributes['top_logprobs'], $attributes['text_offset'], ); } /** * @return array{tokens: array, token_logprobs: array, top_logprobs: array|null, text_offset: array} */ public function toArray(): array { return [ 'tokens' => $this->tokens, 'token_logprobs' => $this->tokenLogprobs, 'top_logprobs' => $this->topLogprobs, 'text_offset' => $this->textOffset, ]; } } PKS%W]×;˜ ˜ ;client/src/Responses/Completions/CreateStreamedResponse.phpnu„[µü¤, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null}>}> */ final class CreateStreamedResponse implements ResponseContract { /** * @use ArrayAccessible, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null}>}> */ use ArrayAccessible; use FakeableForStreamedResponse; /** * @param array $choices */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $created, public readonly string $model, public readonly array $choices, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created: int, model: string, choices: array, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string}>, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}} $attributes */ public static function from(array $attributes): self { $choices = array_map(fn (array $result): CreateResponseChoice => CreateResponseChoice::from( $result ), $attributes['choices']); return new self( $attributes['id'], $attributes['object'], $attributes['created'], $attributes['model'], $choices, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created' => $this->created, 'model' => $this->model, 'choices' => array_map( static fn (CreateResponseChoice $result): array => $result->toArray(), $this->choices, ), ]; } } PKS%W]ÊVÝ6Þ Þ 3client/src/Responses/Completions/CreateResponse.phpnu„[µü¤, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $choices */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $created, public readonly string $model, public readonly array $choices, public readonly CreateResponseUsage $usage, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created: int, model: string, choices: array, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $choices = array_map(fn (array $result): CreateResponseChoice => CreateResponseChoice::from( $result ), $attributes['choices']); return new self( $attributes['id'], $attributes['object'], $attributes['created'], $attributes['model'], $choices, CreateResponseUsage::from($attributes['usage']), $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created' => $this->created, 'model' => $this->model, 'choices' => array_map( static fn (CreateResponseChoice $result): array => $result->toArray(), $this->choices, ), 'usage' => $this->usage->toArray(), ]; } } PKS%W]˜–S  9client/src/Responses/Completions/CreateResponseChoice.phpnu„[µü¤, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null} $attributes */ public static function from(array $attributes): self { return new self( $attributes['text'], $attributes['index'], isset($attributes['logprobs']) ? CreateResponseChoiceLogprobs::from($attributes['logprobs']) : null, $attributes['finish_reason'], ); } /** * @return array{text: string, index: int, logprobs: array{tokens: array, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string|null} */ public function toArray(): array { return [ 'text' => $this->text, 'index' => $this->index, 'logprobs' => $this->logprobs instanceof CreateResponseChoiceLogprobs ? $this->logprobs->toArray() : null, 'finish_reason' => $this->finishReason, ]; } } PKS%W]íù½¡éé8client/src/Responses/Completions/CreateResponseUsage.phpnu„[µü¤ $this->promptTokens, 'completion_tokens' => $this->completionTokens, 'total_tokens' => $this->totalTokens, ]; } } PKS%W]u—“~~8client/src/Responses/Containers/Objects/ExpiresAfter.phpnu„[µü¤ */ final class ExpiresAfter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'last_active_at' $anchor */ private function __construct( public readonly string $anchor, public readonly int $minutes, ) {} /** * @param ExpiresAfterType $attributes */ public static function from(array $attributes): self { return new self( anchor: $attributes['anchor'], minutes: $attributes['minutes'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'anchor' => $this->anchor, 'minutes' => $this->minutes, ]; } } PKS%W]A˜lJp p 5client/src/Responses/Containers/RetrieveContainer.phpnu„[µü¤ */ final class RetrieveContainer implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param 'container' $object */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly string $status, public readonly ExpiresAfter $expiresAfter, public readonly int $lastActiveAt, public readonly string $name, private readonly MetaInformation $meta, ) {} /** * @param RetrieveContainerType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( id: $attributes['id'], object: $attributes['object'], createdAt: $attributes['created_at'], status: $attributes['status'], expiresAfter: ExpiresAfter::from($attributes['expires_after']), lastActiveAt: $attributes['last_active_at'], name: $attributes['name'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'status' => $this->status, 'expires_after' => $this->expiresAfter->toArray(), 'last_active_at' => $this->lastActiveAt, 'name' => $this->name, ]; } } PKS%W]¢†8°òò2client/src/Responses/Containers/ListContainers.phpnu„[µü¤ */ final class ListContainers implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param 'list' $object * @param RetrieveContainer[] $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * @param ListContainersType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( object: $attributes['object'], data: array_map( fn (array $container): RetrieveContainer => RetrieveContainer::from($container, $meta), $attributes['data'] ), firstId: $attributes['first_id'] ?? null, lastId: $attributes['last_id'] ?? null, hasMore: $attributes['has_more'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( fn (RetrieveContainer $container): array => $container->toArray(), $this->data ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]È ’f f 3client/src/Responses/Containers/CreateContainer.phpnu„[µü¤ */ final class CreateContainer implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param 'container' $object */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly string $status, public readonly ExpiresAfter $expiresAfter, public readonly int $lastActiveAt, public readonly string $name, private readonly MetaInformation $meta, ) {} /** * @param CreateContainerType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( id: $attributes['id'], object: $attributes['object'], createdAt: $attributes['created_at'], status: $attributes['status'], expiresAfter: ExpiresAfter::from($attributes['expires_after']), lastActiveAt: $attributes['last_active_at'], name: $attributes['name'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'status' => $this->status, 'expires_after' => $this->expiresAfter->toArray(), 'last_active_at' => $this->lastActiveAt, 'name' => $this->name, ]; } } PKS%W]k îññ3client/src/Responses/Containers/DeleteContainer.phpnu„[µü¤ */ final class DeleteContainer implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * @param DeleteContainerType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( id: $attributes['id'], object: $attributes['object'], deleted: $attributes['deleted'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]±u‹²ÖÖ:client/src/Responses/Chat/CreateResponseChoiceLogprobs.phpnu„[µü¤ $content */ private function __construct( public readonly ?array $content, ) {} /** * @param array{content: ?array}>} $attributes */ public static function from(array $attributes): self { $content = null; if (isset($attributes['content'])) { $content = array_map(fn (array $result): CreateResponseChoiceLogprobsContent => CreateResponseChoiceLogprobsContent::from( $result ), $attributes['content']); } return new self( $content, ); } /** * @return array{content: ?array}>} */ public function toArray(): array { return [ 'content' => $this->content ? array_map( static fn (CreateResponseChoiceLogprobsContent $result): array => $result->toArray(), $this->content, ) : null, ]; } } PKS%W]Li¡¸ÕÕ4client/src/Responses/Chat/CreateResponseToolCall.phpnu„[µü¤ $this->id, 'type' => $this->type, 'function' => $this->function->toArray(), ]; } } PKS%W]–B#4ˆˆHclient/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.phpnu„[µü¤reasoningTokens)) { $result['reasoning_tokens'] = $this->reasoningTokens; } if (! is_null($this->acceptedPredictionTokens)) { $result['accepted_prediction_tokens'] = $this->acceptedPredictionTokens; } if (! is_null($this->rejectedPredictionTokens)) { $result['rejected_prediction_tokens'] = $this->rejectedPredictionTokens; } if (! is_null($this->audioTokens)) { $result['audio_tokens'] = $this->audioTokens; } return $result; } } PKS%W]In’3Aclient/src/Responses/Chat/CreateResponseChoiceLogprobsContent.phpnu„[µü¤ $bytes */ private function __construct( public readonly string $token, public readonly float $logprob, public readonly ?array $bytes, ) {} /** * @param array{ * token: string, * logprob: float, * bytes: ?array * } $attributes */ public static function from(array $attributes): self { return new self( $attributes['token'], $attributes['logprob'], $attributes['bytes'], ); } /** * @return array{ * token: string, * logprob: float, * bytes: ?array * } */ public function toArray(): array { return [ 'token' => $this->token, 'logprob' => $this->logprob, 'bytes' => $this->bytes, ]; } } PKS%W]ë:EøøIclient/src/Responses/Chat/CreateResponseChoiceAnnotationsUrlCitations.phpnu„[µü¤ $this->endIndex, 'start_index' => $this->startIndex, 'title' => $this->title, 'url' => $this->url, ]; } } PKS%W]²*\º º 4client/src/Responses/Chat/CreateStreamedResponse.phpnu„[µü¤, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ final class CreateStreamedResponse implements ResponseContract { /** * @use ArrayAccessible, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ use ArrayAccessible; use FakeableForStreamedResponse; /** * @param array $choices */ private function __construct( public readonly ?string $id, public readonly string $object, public readonly int $created, public readonly string $model, public readonly array $choices, public readonly ?CreateResponseUsage $usage, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id?: string, object: string, created: int, model: string, choices: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}} $attributes */ public static function from(array $attributes): self { $choices = array_map(fn (array $result): CreateStreamedResponseChoice => CreateStreamedResponseChoice::from( $result ), $attributes['choices']); return new self( $attributes['id'] ?? null, $attributes['object'], $attributes['created'], $attributes['model'], $choices, isset($attributes['usage']) ? CreateResponseUsage::from($attributes['usage']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'id' => $this->id, 'object' => $this->object, 'created' => $this->created, 'model' => $this->model, 'choices' => array_map( static fn (CreateStreamedResponseChoice $result): array => $result->toArray(), $this->choices, ), 'usage' => $this->usage?->toArray(), ], fn (mixed $value): bool => ! is_null($value)); } } PKS%W]ä1Ù ÛÛ<client/src/Responses/Chat/CreateResponseToolCallFunction.phpnu„[µü¤ $this->name, 'arguments' => $this->arguments, ]; } } PKS%W]lЉîî8client/src/Responses/Chat/CreateResponseFunctionCall.phpnu„[µü¤ $this->name, 'arguments' => $this->arguments, ]; } } PKS%W]ŒŠ:¬‹‹@client/src/Responses/Chat/CreateStreamedResponseFunctionCall.phpnu„[µü¤name)) { $data['name'] = $this->name; } if (! is_null($this->arguments)) { $data['arguments'] = $this->arguments; } return $data; } } PKS%W]µT…j††,client/src/Responses/Chat/CreateResponse.phpnu„[µü¤, function_call?: array{name: string, arguments: string}, tool_calls?: array}, logprobs: ?array{content: ?array}>}, finish_reason: string|null}>, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, function_call?: array{name: string, arguments: string}, tool_calls?: array}, logprobs: ?array{content: ?array}>}, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $choices */ private function __construct( public readonly ?string $id, public readonly string $object, public readonly int $created, public readonly string $model, public readonly ?string $systemFingerprint, public readonly array $choices, public readonly ?CreateResponseUsage $usage, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id?: string, object: string, created: int, model: string, system_fingerprint?: string, choices: array, function_call: ?array{name: string, arguments: string}, tool_calls: ?array}, logprobs: ?array{content: ?array}>}, finish_reason: string|null}>, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int, prompt_tokens_details?:array{cached_tokens:int}, completion_tokens_details?:array{audio_tokens?:int, reasoning_tokens:int, accepted_prediction_tokens:int, rejected_prediction_tokens:int}}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $choices = array_map(fn (array $result): CreateResponseChoice => CreateResponseChoice::from( $result ), $attributes['choices']); return new self( $attributes['id'] ?? null, $attributes['object'], $attributes['created'], $attributes['model'], $attributes['system_fingerprint'] ?? null, $choices, isset($attributes['usage']) ? CreateResponseUsage::from($attributes['usage']) : null, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'id' => $this->id, 'object' => $this->object, 'created' => $this->created, 'model' => $this->model, 'system_fingerprint' => $this->systemFingerprint, 'choices' => array_map( static fn (CreateResponseChoice $result): array => $result->toArray(), $this->choices, ), 'usage' => $this->usage?->toArray(), ], fn (mixed $value): bool => ! is_null($value)); } } PKS%W];Ï·ää9client/src/Responses/Chat/CreateStreamedResponseDelta.phpnu„[µü¤ $toolCalls */ private function __construct( public readonly ?string $role, public readonly ?string $content, public readonly array $toolCalls, public readonly ?CreateStreamedResponseFunctionCall $functionCall, ) {} /** * @param array{role?: string, content?: string, function_call?: array{name?: ?string, arguments?: ?string}, tool_calls?: array} $attributes */ public static function from(array $attributes): self { $toolCalls = array_map(fn (array $result): CreateStreamedResponseToolCall => CreateStreamedResponseToolCall::from( $result ), $attributes['tool_calls'] ?? []); return new self( $attributes['role'] ?? null, $attributes['content'] ?? null, $toolCalls, isset($attributes['function_call']) ? CreateStreamedResponseFunctionCall::from($attributes['function_call']) : null, ); } /** * @return array{role?: string, content?: string}|array{role?: string, content: null, function_call: array{name?: string, arguments?: string}} */ public function toArray(): array { $data = array_filter([ 'role' => $this->role, 'content' => $this->content, ], fn (?string $value): bool => ! is_null($value)); if ($this->functionCall instanceof CreateStreamedResponseFunctionCall) { $data['content'] = null; $data['function_call'] = $this->functionCall->toArray(); } if ($this->toolCalls !== []) { $data['tool_calls'] = array_map(fn (CreateStreamedResponseToolCall $toolCall): array => $toolCall->toArray(), $this->toolCalls); } return $data; } } PKS%W]s�o~~Dclient/src/Responses/Chat/CreateResponseUsagePromptTokensDetails.phpnu„[µü¤ $this->cachedTokens, ]; if (! is_null($this->audioTokens)) { $result['audio_tokens'] = $this->audioTokens; } return $result; } } PKS%W]ŒÙV}}:client/src/Responses/Chat/CreateStreamedResponseChoice.phpnu„[µü¤ $this->index, 'delta' => $this->delta->toArray(), 'finish_reason' => $this->finishReason, ]; } } PKS%W]ž¨833Dclient/src/Responses/Chat/CreateStreamedResponseToolCallFunction.phpnu„[µü¤ $this->name, 'arguments' => $this->arguments, ], fn (?string $value): bool => ! is_null($value)); } } PKS%W]}Qu*2client/src/Responses/Chat/CreateResponseChoice.phpnu„[µü¤, function_call: ?array{name: string, arguments: string}, tool_calls: ?array} ,logprobs?: ?array{content: ?array}>}, finish_reason: string|null} $attributes */ public static function from(array $attributes): self { return new self( $attributes['index'], CreateResponseMessage::from($attributes['message']), isset($attributes['logprobs']) ? CreateResponseChoiceLogprobs::from($attributes['logprobs']) : null, $attributes['finish_reason'] ?? null, ); } /** * @return array{index: int, message: array{role: string, content: string|null, annotations?: array, function_call?: array{name: string, arguments: string}, tool_calls?: array}, logprobs: ?array{content: ?array}>}, finish_reason: string|null} */ public function toArray(): array { return [ 'index' => $this->index, 'message' => $this->message->toArray(), 'logprobs' => $this->logprobs?->toArray(), 'finish_reason' => $this->finishReason, ]; } } PKS%W]¯¬úõõ1client/src/Responses/Chat/CreateResponseUsage.phpnu„[µü¤ $this->promptTokens, 'completion_tokens' => $this->completionTokens, 'total_tokens' => $this->totalTokens, ]; if ($this->promptTokensDetails) { $result['prompt_tokens_details'] = $this->promptTokensDetails->toArray(); } if ($this->completionTokensDetails) { $result['completion_tokens_details'] = $this->completionTokensDetails->toArray(); } return $result; } } PKS%W]E1Y}±±=client/src/Responses/Chat/CreateResponseChoiceAnnotations.phpnu„[µü¤ $this->type, 'url_citation' => $this->urlCitations->toArray(), ]; } } PKS%W]v¨ºQ’’7client/src/Responses/Chat/CreateResponseChoiceAudio.phpnu„[µü¤ */ final class CreateResponseChoiceAudio implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $id, public readonly string $data, public readonly int $expiresAt, public readonly string $transcript, ) {} /** * @param CreateResponseChoiceAudioType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], data: $attributes['data'], expiresAt: $attributes['expires_at'], transcript: $attributes['transcript'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'data' => $this->data, 'expires_at' => $this->expiresAt, 'transcript' => $this->transcript, ]; } } PKS%W] ˜YÃÓÓ<client/src/Responses/Chat/CreateStreamedResponseToolCall.phpnu„[µü¤ $this->index, 'id' => $this->id, 'type' => $this->type, 'function' => $this->function->toArray(), ], fn (mixed $value): bool => ! is_null($value)); } } PKS%W]�ÚMt t 3client/src/Responses/Chat/CreateResponseMessage.phpnu„[µü¤ $toolCalls * @param array $annotations */ private function __construct( public readonly string $role, public readonly ?string $content, public readonly array $annotations, public readonly array $toolCalls, public readonly ?CreateResponseFunctionCall $functionCall, public readonly ?CreateResponseChoiceAudio $audio = null, ) {} /** * @param array{role: string, content: ?string, annotations?: array, function_call: ?array{name: string, arguments: string}, tool_calls: ?array, audio?: CreateResponseChoiceAudioType} $attributes */ public static function from(array $attributes): self { $toolCalls = array_map(fn (array $result): CreateResponseToolCall => CreateResponseToolCall::from( $result ), $attributes['tool_calls'] ?? []); $annotations = array_map(fn (array $result): CreateResponseChoiceAnnotations => CreateResponseChoiceAnnotations::from( $result, ), $attributes['annotations'] ?? []); return new self( $attributes['role'], $attributes['content'] ?? null, $annotations, $toolCalls, isset($attributes['function_call']) ? CreateResponseFunctionCall::from($attributes['function_call']) : null, isset($attributes['audio']) ? CreateResponseChoiceAudio::from($attributes['audio']) : null, ); } /** * @return array{role: string, content: string|null, annotations?: array, function_call?: array{name: string, arguments: string}, tool_calls?: array, audio?: CreateResponseChoiceAudioType} */ public function toArray(): array { $data = [ 'role' => $this->role, 'content' => $this->content, ]; if ($this->annotations !== []) { $data['annotations'] = array_map(fn (CreateResponseChoiceAnnotations $annotations): array => $annotations->toArray(), $this->annotations); } if ($this->functionCall instanceof CreateResponseFunctionCall) { $data['function_call'] = $this->functionCall->toArray(); } if ($this->toolCalls !== []) { $data['tool_calls'] = array_map(fn (CreateResponseToolCall $toolCall): array => $toolCall->toArray(), $this->toolCalls); } if ($this->audio instanceof CreateResponseChoiceAudio) { $data['audio'] = $this->audio->toArray(); } return $data; } } PKS%W] õ„° ° 'client/src/Responses/StreamResponse.phpnu„[µü¤ */ final class StreamResponse implements ResponseHasMetaInformationContract, ResponseStreamContract { /** * Creates a new Stream Response instance. * * @param class-string $responseClass */ public function __construct( private readonly string $responseClass, private readonly ResponseInterface $response, ) { // } /** * {@inheritDoc} */ public function getIterator(): Generator { while (! $this->response->getBody()->eof()) { $line = $this->readLine($this->response->getBody()); $event = null; if (str_starts_with($line, 'event:')) { $event = trim(substr($line, strlen('event:'))); $line = $this->readLine($this->response->getBody()); } if (! str_starts_with($line, 'data:')) { continue; } $data = trim(substr($line, strlen('data:'))); if ($data === '[DONE]') { break; } /** @var array{error?: array{message: string|array, type: string, code: string}, type?: string} $response */ $response = json_decode($data, true, flags: JSON_THROW_ON_ERROR); if (isset($response['error'])) { throw new ErrorException($response['error'], $this->response->getStatusCode()); } if (isset($response['type']) && $response['type'] === 'ping') { continue; } if ($event !== null) { $response['__event'] = $event; } $response['__meta'] = $this->meta(); yield $this->responseClass::from($response); } } /** * Read a line from the stream. */ private function readLine(StreamInterface $stream): string { $buffer = ''; while (! $stream->eof()) { if ('' === ($byte = $stream->read(1))) { return $buffer; } $buffer .= $byte; if ($byte === "\n") { break; } } return $buffer; } public function meta(): MetaInformation { // @phpstan-ignore-next-line return MetaInformation::from($this->response->getHeaders()); } } PKS%W]¿£ì°ww-client/src/Responses/Meta/MetaInformation.phpnu„[µü¤ */ final class MetaInformation implements MetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public ?string $requestId, public readonly MetaInformationOpenAI $openai, public readonly ?MetaInformationRateLimit $requestLimit, public readonly ?MetaInformationRateLimit $tokenLimit, ) {} /** * @param array{x-request-id: string[], openai-model: string[], openai-organization: string[], openai-version: string[], openai-processing-ms: string[], x-ratelimit-limit-requests: string[], x-ratelimit-remaining-requests: string[], x-ratelimit-reset-requests: string[], x-ratelimit-limit-tokens: string[], x-ratelimit-remaining-tokens: string[], x-ratelimit-reset-tokens: string[]} $headers */ public static function from(array $headers): self { $headers = array_change_key_case($headers, CASE_LOWER); $requestId = $headers['x-request-id'][0] ?? null; $openai = MetaInformationOpenAI::from([ 'model' => $headers['openai-model'][0] ?? null, 'organization' => $headers['openai-organization'][0] ?? null, 'version' => $headers['openai-version'][0] ?? null, 'processingMs' => isset($headers['openai-processing-ms'][0]) ? (int) $headers['openai-processing-ms'][0] : null, ]); if (isset($headers['x-ratelimit-remaining-requests'][0])) { $requestLimit = MetaInformationRateLimit::from([ 'limit' => isset($headers['x-ratelimit-limit-requests'][0]) ? (int) $headers['x-ratelimit-limit-requests'][0] : null, 'remaining' => (int) $headers['x-ratelimit-remaining-requests'][0], 'reset' => $headers['x-ratelimit-reset-requests'][0] ?? null, ]); } else { $requestLimit = null; } if (isset($headers['x-ratelimit-remaining-tokens'][0])) { $tokenLimit = MetaInformationRateLimit::from([ 'limit' => isset($headers['x-ratelimit-limit-tokens'][0]) ? (int) $headers['x-ratelimit-limit-tokens'][0] : null, 'remaining' => (int) $headers['x-ratelimit-remaining-tokens'][0], 'reset' => $headers['x-ratelimit-reset-tokens'][0] ?? null, ]); } else { $tokenLimit = null; } return new self( $requestId, $openai, $requestLimit, $tokenLimit, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'openai-model' => $this->openai->model, 'openai-organization' => $this->openai->organization, 'openai-processing-ms' => $this->openai->processingMs, 'openai-version' => $this->openai->version, 'x-ratelimit-limit-requests' => $this->requestLimit->limit ?? null, 'x-ratelimit-limit-tokens' => $this->tokenLimit->limit ?? null, 'x-ratelimit-remaining-requests' => $this->requestLimit->remaining ?? null, 'x-ratelimit-remaining-tokens' => $this->tokenLimit->remaining ?? null, 'x-ratelimit-reset-requests' => $this->requestLimit->reset ?? null, 'x-ratelimit-reset-tokens' => $this->tokenLimit->reset ?? null, 'x-request-id' => $this->requestId, ], fn (string|int|null $value): bool => ! is_null($value)); } } PKS%W]÷$¦¨¨3client/src/Responses/Meta/MetaInformationOpenAI.phpnu„[µü¤, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ final class VariationResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly int $created, public readonly array $data, private readonly MetaInformation $meta, public readonly ?ImageResponseUsage $usage = null, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{created: int, data: array, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $results = array_map(fn (array $result): VariationResponseData => VariationResponseData::from( $result ), $attributes['data']); return new self( $attributes['created'], $results, $meta, isset($attributes['usage']) ? ImageResponseUsage::from($attributes['usage']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { $result = [ 'created' => $this->created, 'data' => array_map( static fn (VariationResponseData $result): array => $result->toArray(), $this->data, ), ]; if ($this->usage !== null) { $result['usage'] = $this->usage->toArray(); } return $result; } } PKS%W]_'ã ,client/src/Responses/Images/EditResponse.phpnu„[µü¤, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ final class EditResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly int $created, public readonly array $data, private readonly MetaInformation $meta, public readonly ?ImageResponseUsage $usage = null, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{created: int, data: array, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $results = array_map(fn (array $result): EditResponseData => EditResponseData::from( $result ), $attributes['data']); return new self( $attributes['created'], $results, $meta, isset($attributes['usage']) ? ImageResponseUsage::from($attributes['usage']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { $result = [ 'created' => $this->created, 'data' => array_map( static fn (EditResponseData $result): array => $result->toArray(), $this->data, ), ]; if ($this->usage !== null) { $result['usage'] = $this->usage->toArray(); } return $result; } } PKS%W]r©Dclient/src/Responses/Images/ImageResponseUsageInputTokensDetails.phpnu„[µü¤ $this->textTokens, 'image_tokens' => $this->imageTokens, ]; } } PKS%W]–JÁÁ2client/src/Responses/Images/CreateResponseData.phpnu„[µü¤ */ final class CreateResponseData implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $url, public readonly string $b64_json, public readonly ?string $revisedPrompt, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{url?: string, b64_json?: string, revised_prompt?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['url'] ?? '', $attributes['b64_json'] ?? '', $attributes['revised_prompt'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { $data = $this->url !== '' && $this->url !== '0' ? ['url' => $this->url] : ['b64_json' => $this->b64_json]; if ($this->revisedPrompt !== null) { $data['revised_prompt'] = $this->revisedPrompt; } return $data; } } PKS%W]3@è�??2client/src/Responses/Images/ImageResponseUsage.phpnu„[µü¤ $this->totalTokens, 'input_tokens' => $this->inputTokens, 'output_tokens' => $this->outputTokens, 'input_tokens_details' => $this->inputTokensDetails->toArray(), ]; } } PKS%W]ÞYæò^ ^ .client/src/Responses/Images/CreateResponse.phpnu„[µü¤, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly int $created, public readonly array $data, private readonly MetaInformation $meta, public readonly ?ImageResponseUsage $usage = null, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{created: int, data: array, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $results = array_map(fn (array $result): CreateResponseData => CreateResponseData::from( $result ), $attributes['data']); return new self( $attributes['created'], $results, $meta, isset($attributes['usage']) ? ImageResponseUsage::from($attributes['usage']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { $result = [ 'created' => $this->created, 'data' => array_map( static fn (CreateResponseData $result): array => $result->toArray(), $this->data, ), ]; if ($this->usage !== null) { $result['usage'] = $this->usage->toArray(); } return $result; } } PKS%W]µ÷±XX5client/src/Responses/Images/VariationResponseData.phpnu„[µü¤ */ final class VariationResponseData implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $url, public readonly string $b64_json, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{url?: string, b64_json?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['url'] ?? '', $attributes['b64_json'] ?? '', ); } /** * {@inheritDoc} */ public function toArray(): array { return $this->url !== '' && $this->url !== '0' ? ['url' => $this->url] : ['b64_json' => $this->b64_json]; } } PKS%W]%Î^WSS0client/src/Responses/Images/EditResponseData.phpnu„[µü¤ */ final class EditResponseData implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $url, public readonly string $b64_json, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{url?: string, b64_json?: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['url'] ?? '', $attributes['b64_json'] ?? '', ); } /** * {@inheritDoc} */ public function toArray(): array { return $this->url !== '' && $this->url !== '0' ? ['url' => $this->url] : ['b64_json' => $this->b64_json]; } } PKS%W]J2Œu££Nclient/src/Responses/Realtime/TranscriptionSession/InputAudioTranscription.phpnu„[µü¤ */ final class InputAudioTranscription implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'gpt-4o-transcribe'|'gpt-4o-mini-transcribe'|"whisper-1" $model */ private function __construct( public readonly string $language, public readonly string $model, public readonly string $prompt, ) {} /** * @param InputAudioTranscriptionType $attributes */ public static function from(array $attributes): self { return new self( language: $attributes['language'], model: $attributes['model'], prompt: $attributes['prompt'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'language' => $this->language, 'model' => $this->model, 'prompt' => $this->prompt, ]; } } PKS%W]‰ÕÌFF6client/src/Responses/Realtime/Session/ClientSecret.phpnu„[µü¤ */ final class ClientSecret implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $expiresAt, public readonly string $value, ) {} /** * @param ClientSecretType $attributes */ public static function from(array $attributes): self { return new self( expiresAt: $attributes['expires_at'], value: $attributes['value'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'expires_at' => $this->expiresAt, 'value' => $this->value, ]; } } PKS%W]øzÝèAclient/src/Responses/Realtime/Session/InputAudioTranscription.phpnu„[µü¤ */ final class InputAudioTranscription implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param "whisper-1" $model */ private function __construct( public readonly string $model ) {} /** * @param InputAudioTranscriptionType $attributes */ public static function from(array $attributes): self { return new self( model: $attributes['model'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'model' => $this->model, ]; } } PKS%W]j L�!!7client/src/Responses/Realtime/Session/TurnDetection.phpnu„[µü¤ */ final class TurnDetection implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'server_vad' $type */ private function __construct( public readonly int $prefixPaddingMs, public readonly int $silenceDurationMs, public readonly float $threshold, public readonly string $type, ) {} /** * @param TurnDetectionType $attributes */ public static function from(array $attributes): self { return new self( prefixPaddingMs: $attributes['prefix_padding_ms'], silenceDurationMs: $attributes['silence_duration_ms'], threshold: $attributes['threshold'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'prefix_padding_ms' => $this->prefixPaddingMs, 'silence_duration_ms' => $this->silenceDurationMs, 'threshold' => $this->threshold, 'type' => $this->type, ]; } } PKS%W]`t±±G G >client/src/Responses/Realtime/TranscriptionSessionResponse.phpnu„[µü¤|null, turn_detection: TurnDetectionType|null} * * @implements ResponseContract */ final class TranscriptionSessionResponse implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'pcm16'|'g711_ulaw'|'g711_alaw' $inputAudioFormat * @param array|null $modalities */ private function __construct( public readonly ClientSecret $clientSecret, public readonly string $inputAudioFormat, public readonly ?InputAudioTranscription $inputAudioTranscription, public readonly ?array $modalities, public readonly ?TurnDetection $turnDetection, ) {} /** * @param TranscriptionSessionType $attributes */ public static function from(array $attributes): self { return new self( clientSecret: ClientSecret::from($attributes['client_secret']), inputAudioFormat: $attributes['input_audio_format'], inputAudioTranscription: isset($attributes['input_audio_transcription']) ? InputAudioTranscription::from($attributes['input_audio_transcription']) : null, modalities: $attributes['modalities'] ?? null, turnDetection: isset($attributes['turn_detection']) ? TurnDetection::from($attributes['turn_detection']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'client_secret' => $this->clientSecret->toArray(), 'input_audio_format' => $this->inputAudioFormat, 'input_audio_transcription' => $this->inputAudioTranscription?->toArray(), 'modalities' => $this->modalities, 'turn_detection' => $this->turnDetection?->toArray(), ]; } } PKS%W]8òÉêê4client/src/Responses/Realtime/Tools/FunctionTool.phpnu„[µü¤, type: 'function'} * * @implements ResponseContract */ final class FunctionTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $parameters * @param 'function' $type */ private function __construct( public readonly string $description, public readonly string $name, public readonly array $parameters, public readonly string $type, ) {} /** * @param FunctionToolType $attributes */ public static function from(array $attributes): self { return new self( description: $attributes['description'], name: $attributes['name'], parameters: $attributes['parameters'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'description' => $this->description, 'name' => $this->name, 'parameters' => $this->parameters, 'type' => $this->type, ]; } } PKS%W]�mgÇáá1client/src/Responses/Realtime/SessionResponse.phpnu„[µü¤, output_audio_format: 'pcm16'|'g711_ulaw'|'g711_alaw', temperature: float, tool_choice: 'auto'|'none'|'required', tools: array, turn_detection: TurnDetectionType|null, voice: 'alloy'|'ash'|'ballad'|'coral'|'echo'|'sage'|'shimmer'|'verse'} * * @implements ResponseContract */ final class SessionResponse implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'pcm16'|'g711_ulaw'|'g711_alaw' $inputAudioFormat * @param int|'inf' $maxResponseOutputTokens * @param array $modalities * @param 'pcm16'|'g711_ulaw'|'g711_alaw' $outputAudioFormat * @param 'auto'|'none'|'required' $toolChoice * @param array $tools * @param 'alloy'|'ash'|'ballad'|'coral'|'echo'|'sage'|'shimmer'|'verse' $voice */ private function __construct( public readonly ClientSecret $clientSecret, public readonly string $inputAudioFormat, public readonly ?InputAudioTranscription $inputAudioTranscription, public readonly string $instructions, public readonly int|string $maxResponseOutputTokens, public readonly array $modalities, public readonly string $outputAudioFormat, public readonly float $temperature, public readonly string $toolChoice, public readonly array $tools, public readonly ?TurnDetection $turnDetection, public readonly string $voice, ) {} /** * @param SessionType $attributes */ public static function from(array $attributes): self { $tools = array_map( fn (array $tool): FunctionTool => match ($tool['type']) { 'function' => FunctionTool::from($tool), }, $attributes['tools'] ); return new self( clientSecret: ClientSecret::from($attributes['client_secret']), inputAudioFormat: $attributes['input_audio_format'], inputAudioTranscription: isset($attributes['input_audio_transcription']) ? InputAudioTranscription::from($attributes['input_audio_transcription']) : null, instructions: $attributes['instructions'], maxResponseOutputTokens: $attributes['max_response_output_tokens'], modalities: $attributes['modalities'], outputAudioFormat: $attributes['output_audio_format'], temperature: $attributes['temperature'], toolChoice: $attributes['tool_choice'], tools: $tools, turnDetection: isset($attributes['turn_detection']) ? TurnDetection::from($attributes['turn_detection']) : null, voice: $attributes['voice'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'client_secret' => $this->clientSecret->toArray(), 'input_audio_format' => $this->inputAudioFormat, 'input_audio_transcription' => $this->inputAudioTranscription?->toArray(), 'instructions' => $this->instructions, 'max_response_output_tokens' => $this->maxResponseOutputTokens, 'modalities' => $this->modalities, 'output_audio_format' => $this->outputAudioFormat, 'temperature' => $this->temperature, 'tool_choice' => $this->toolChoice, 'tools' => array_map( static fn (FunctionTool $tool): array => $tool->toArray(), $this->tools, ), 'turn_detection' => $this->turnDetection?->toArray(), 'voice' => $this->voice, ]; } } PKS%W]œ)#bbMclient/src/Responses/VectorStores/Search/VectorStoreSearchResponseContent.phpnu„[µü¤ */ final class VectorStoreSearchResponseContent implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $type, public readonly string $text, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: string, text: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['text'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'text' => $this->text, ]; } } PKS%W]ìꙋ ‹ Fclient/src/Responses/VectorStores/Search/VectorStoreSearchResponse.phpnu„[µü¤, data: array, content: array}>, has_more: bool, next_page: ?string}> */ final class VectorStoreSearchResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, data: array, content: array}>, has_more: bool, next_page: ?string}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data * @param string|array $searchQuery */ private function __construct( public readonly string $object, public readonly string|array $searchQuery, public readonly array $data, public readonly bool $hasMore, public readonly ?string $nextPage, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, search_query: string|array, data: array, content: array}>, has_more: bool, next_page: ?string} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map( static fn (array $result): VectorStoreSearchResponseFile => VectorStoreSearchResponseFile::from($result), $attributes['data'] ); return new self( $attributes['object'], $attributes['search_query'], $data, $attributes['has_more'], $attributes['next_page'], $meta, ); } /** * {@inheritDoc} * * @return array{object: string, search_query: string|array, data: array, content: array}>, has_more: bool, next_page: ?string} */ public function toArray(): array { return [ 'object' => $this->object, 'search_query' => $this->searchQuery, 'data' => array_map( static fn (VectorStoreSearchResponseFile $item): array => $item->toArray(), $this->data ), 'has_more' => $this->hasMore, 'next_page' => $this->nextPage, ]; } } PKS%W]Œ)u- Jclient/src/Responses/VectorStores/Search/VectorStoreSearchResponseFile.phpnu„[µü¤, content: array}> */ final class VectorStoreSearchResponseFile implements ResponseContract { /** * @use ArrayAccessible, content: array}> */ use ArrayAccessible; use Fakeable; /** * @param array $attributes * @param array $content */ private function __construct( public readonly string $fileId, public readonly string $filename, public readonly float $score, public readonly array $attributes, public readonly array $content, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{file_id: string, filename: string, score: float, attributes: array, content: array} $attributes */ public static function from(array $attributes): self { $content = array_map( static fn (array $content): VectorStoreSearchResponseContent => VectorStoreSearchResponseContent::from($content), $attributes['content'], ); return new self( $attributes['file_id'], $attributes['filename'], $attributes['score'], $attributes['attributes'], $content, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'filename' => $this->filename, 'score' => $this->score, 'attributes' => $this->attributes, 'content' => array_map( static fn (VectorStoreSearchResponseContent $content): array => $content->toArray(), $this->content, ), ]; } } PKS%W]‡<(~++?client/src/Responses/VectorStores/VectorStoreDeleteResponse.phpnu„[µü¤ */ final class VectorStoreDeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]‰7!þÒÒ9client/src/Responses/VectorStores/VectorStoreResponse.phpnu„[µü¤}> */ final class VectorStoreResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $metadata */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly ?string $name, public readonly int $usageBytes, public readonly VectorStoreResponseFileCounts $fileCounts, public readonly string $status, public readonly ?VectorStoreResponseExpiresAfter $expiresAfter, public readonly ?int $expiresAt, public readonly ?int $lastActiveAt, public readonly array $metadata, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, name: ?string, usage_bytes: int, file_counts: array{in_progress: int, completed: int, failed: int, cancelled: int, total: int}, status: string, expires_after: ?array{anchor: string, days: int}, expires_at: ?int, last_active_at: ?int, metadata: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['name'], $attributes['usage_bytes'], VectorStoreResponseFileCounts::from($attributes['file_counts']), $attributes['status'], isset($attributes['expires_after']) ? VectorStoreResponseExpiresAfter::from($attributes['expires_after']) : null, $attributes['expires_at'], $attributes['last_active_at'], $attributes['metadata'], $meta, ); } /** * {@inheritDoc} * * @return array{id: string, object: string, name: string|null, status: string, usage_bytes: int, created_at: int, file_counts: array{in_progress: int, completed: int, failed: int, cancelled: int, total: int}, metadata: mixed[], expires_after: array{anchor: string, days: int}|null, expires_at: int|null, last_active_at: int|null} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'name' => $this->name, 'status' => $this->status, 'usage_bytes' => $this->usageBytes, 'created_at' => $this->createdAt, 'file_counts' => $this->fileCounts->toArray(), 'metadata' => $this->metadata, 'expires_after' => $this->expiresAfter?->toArray(), 'expires_at' => $this->expiresAt, 'last_active_at' => $this->lastActiveAt, ]; } } PKS%W]p�÷3qqCclient/src/Responses/VectorStores/VectorStoreResponseFileCounts.phpnu„[µü¤ */ final class VectorStoreResponseFileCounts implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $inProgress, public readonly int $completed, public readonly int $failed, public readonly int $cancelled, public readonly int $total, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{in_progress: int, completed: int, failed: int, cancelled: int, total: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['in_progress'], $attributes['completed'], $attributes['cancelled'], $attributes['failed'], $attributes['total'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'in_progress' => $this->inProgress, 'completed' => $this->completed, 'failed' => $this->failed, 'cancelled' => $this->cancelled, 'total' => $this->total, ]; } } PKS%W]NüZH H =client/src/Responses/VectorStores/VectorStoreListResponse.phpnu„[µü¤}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class VectorStoreListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): VectorStoreResponse => VectorStoreResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} * * @return array{object: string, data: array, first_id: string|null, last_id: string|null, has_more: bool} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (VectorStoreResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]o-£î^^Eclient/src/Responses/VectorStores/VectorStoreResponseExpiresAfter.phpnu„[µü¤ */ final class VectorStoreResponseExpiresAfter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $anchor, public readonly int $days, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{anchor: string, days: int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['anchor'], $attributes['days'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'anchor' => $this->anchor, 'days' => $this->days, ]; } } PKS%W]êiXJ9 9 Gclient/src/Responses/VectorStores/Files/VectorStoreFileListResponse.phpnu„[µü¤, last_error: ?array{code: string, message: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ final class VectorStoreFileListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, last_error: ?array{code: string, message: string}}>, first_id: ?string, last_id: ?string, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly ?string $firstId, public readonly ?string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}>, first_id: ?string, last_id: ?string, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): VectorStoreFileResponse => VectorStoreFileResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['first_id'], $attributes['last_id'], $attributes['has_more'], $meta, ); } /** * {@inheritDoc} * * @return array{object: string, data: array, last_error: array{code: string, message: string}|null}>, first_id: string|null, last_id: string|null, has_more: bool} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (VectorStoreFileResponse $response): array => $response->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]—tN·qqYclient/src/Responses/VectorStores/Files/VectorStoreFileResponseChunkingStrategyStatic.phpnu„[µü¤ */ final class VectorStoreFileResponseChunkingStrategyStatic implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'static' $type */ private function __construct( public readonly string $type, public readonly int $maxChunkSizeTokens, public readonly int $chunkOverlapTokens, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], $attributes['static']['max_chunk_size_tokens'], $attributes['static']['chunk_overlap_tokens'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'static' => [ 'max_chunk_size_tokens' => $this->maxChunkSizeTokens, 'chunk_overlap_tokens' => $this->chunkOverlapTokens, ], ]; } } PKS%W]ý˜®Cclient/src/Responses/VectorStores/Files/VectorStoreFileResponse.phpnu„[µü¤, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}> */ final class VectorStoreFileResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $attributes */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $usageBytes, public readonly int $createdAt, public readonly string $vectorStoreId, public readonly string $status, public readonly array $attributes, public readonly ?VectorStoreFileResponseLastError $lastError, public readonly VectorStoreFileResponseChunkingStrategyStatic|VectorStoreFileResponseChunkingStrategyOther $chunkingStrategy, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, usage_bytes: int, created_at: int, vector_store_id: string, status: string, attributes: ?array, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['usage_bytes'], $attributes['created_at'], $attributes['vector_store_id'], $attributes['status'], $attributes['attributes'] ?? [], isset($attributes['last_error']) ? VectorStoreFileResponseLastError::from($attributes['last_error']) : null, $attributes['chunking_strategy']['type'] === 'static' ? VectorStoreFileResponseChunkingStrategyStatic::from($attributes['chunking_strategy']) : VectorStoreFileResponseChunkingStrategyOther::from($attributes['chunking_strategy']), $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'usage_bytes' => $this->usageBytes, 'created_at' => $this->createdAt, 'vector_store_id' => $this->vectorStoreId, 'status' => $this->status, 'attributes' => $this->attributes, 'last_error' => $this->lastError instanceof VectorStoreFileResponseLastError ? $this->lastError->toArray() : null, 'chunking_strategy' => $this->chunkingStrategy->toArray(), ]; } } PKS%W]¢}I  Xclient/src/Responses/VectorStores/Files/VectorStoreFileResponseChunkingStrategyOther.phpnu„[µü¤ */ final class VectorStoreFileResponseChunkingStrategyOther implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'other' $type */ private function __construct( public readonly string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{type: 'other'} $attributes */ public static function from(array $attributes): self { return new self( $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]2ý{]yyLclient/src/Responses/VectorStores/Files/VectorStoreFileResponseLastError.phpnu„[µü¤ */ final class VectorStoreFileResponseLastError implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $code, public readonly string $message, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{code: string, message: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['code'], $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'message' => $this->message, ]; } } PKS%W]W=…«55Iclient/src/Responses/VectorStores/Files/VectorStoreFileDeleteResponse.phpnu„[µü¤ */ final class VectorStoreFileDeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]è= ^  Nclient/src/Responses/VectorStores/FileBatches/VectorStoreFileBatchResponse.phpnu„[µü¤ */ final class VectorStoreFileBatchResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly string $vectorStoreId, public readonly string $status, public readonly VectorStoreResponseFileCounts $fileCounts, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, vector_store_id: string, status: string, file_counts: array{in_progress: int, completed: int, failed: int, cancelled: int, total: int}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['created_at'], $attributes['vector_store_id'], $attributes['status'], VectorStoreResponseFileCounts::from($attributes['file_counts']), $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'vector_store_id' => $this->vectorStoreId, 'status' => $this->status, 'file_counts' => $this->fileCounts->toArray(), ]; } } PKS%W]ÂçÉ É 9client/src/Responses/FineTuning/ListJobEventsResponse.phpnu„[µü¤, has_more: bool}> */ final class ListJobEventsResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): ListJobEventsResponseEvent => ListJobEventsResponseEvent::from( $result ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (ListJobEventsResponseEvent $response): array => $response->toArray(), $this->data, ), 'has_more' => $this->hasMore, ]; } } PKS%W]ù¦Qù’’7client/src/Responses/FineTuning/RetrieveJobResponse.phpnu„[µü¤, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}> */ final class RetrieveJobResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $resultFiles */ private function __construct( public readonly string $id, public readonly string $object, public readonly string $model, public readonly int $createdAt, public readonly ?int $finishedAt, public readonly ?string $fineTunedModel, public readonly RetrieveJobResponseHyperparameters $hyperparameters, public readonly string $organizationId, public readonly array $resultFiles, public readonly string $status, public readonly ?string $validationFile, public readonly string $trainingFile, public readonly ?int $trainedTokens, public readonly ?RetrieveJobResponseError $error, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, model: string, created_at: int, finished_at: ?int, fine_tuned_model: ?string, hyperparameters: array{n_epochs: int|string, batch_size: int|string|null, learning_rate_multiplier: float|string|null}, organization_id: string, result_files: array, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code?: string, param?: ?string, message?: string}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['model'], $attributes['created_at'], $attributes['finished_at'], $attributes['fine_tuned_model'], RetrieveJobResponseHyperparameters::from($attributes['hyperparameters']), $attributes['organization_id'], $attributes['result_files'], $attributes['status'], $attributes['validation_file'], $attributes['training_file'], $attributes['trained_tokens'], ( isset($attributes['error']) && isset($attributes['error']['code']) && isset($attributes['error']['param']) && isset($attributes['error']['message']) ) ? RetrieveJobResponseError::from($attributes['error']) : null, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'model' => $this->model, 'created_at' => $this->createdAt, 'finished_at' => $this->finishedAt, 'fine_tuned_model' => $this->fineTunedModel, 'hyperparameters' => $this->hyperparameters->toArray(), 'organization_id' => $this->organizationId, 'result_files' => $this->resultFiles, 'status' => $this->status, 'validation_file' => $this->validationFile, 'training_file' => $this->trainingFile, 'trained_tokens' => $this->trainedTokens, 'error' => $this->error?->toArray(), ]; } } PKS%W]dq�¦ãã>client/src/Responses/FineTuning/ListJobEventsResponseEvent.phpnu„[µü¤ */ final class ListJobEventsResponseEvent implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $object, public readonly string $id, public readonly int $createdAt, public readonly FineTuningEventLevel $level, public readonly string $message, public readonly ?ListJobEventsResponseEventData $data, public readonly string $type, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, id: string, created_at: int, level: string, message: string, data: array{step: int, train_loss: float, train_mean_token_accuracy: float}|null, type: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['object'], $attributes['id'], $attributes['created_at'], FineTuningEventLevel::from($attributes['level']), $attributes['message'], $attributes['data'] ? ListJobEventsResponseEventData::from($attributes['data']) : null, $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'id' => $this->id, 'created_at' => $this->createdAt, 'level' => $this->level->value, 'message' => $this->message, 'data' => $this->data?->toArray(), 'type' => $this->type, ]; } } PKS%W]Ýè˜Ë Ë 4client/src/Responses/FineTuning/ListJobsResponse.phpnu„[µü¤, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}>, has_more: bool}> */ final class ListJobsResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}>, has_more: bool}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}>, has_more: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): RetrieveJobResponse => RetrieveJobResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $attributes['has_more'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (RetrieveJobResponse $response): array => $response->toArray(), $this->data, ), 'has_more' => $this->hasMore, ]; } } PKS%W]NsNôôFclient/src/Responses/FineTuning/RetrieveJobResponseHyperparameters.phpnu„[µü¤ */ final class RetrieveJobResponseHyperparameters implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly int|string $nEpochs, public readonly int|string|null $batchSize, public readonly float|string|null $learningRateMultiplier, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{n_epochs: int|string, batch_size: int|string|null, learning_rate_multiplier: float|string|null} $attributes */ public static function from(array $attributes): self { return new self( $attributes['n_epochs'], $attributes['batch_size'], $attributes['learning_rate_multiplier'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'n_epochs' => $this->nEpochs, 'batch_size' => $this->batchSize, 'learning_rate_multiplier' => $this->learningRateMultiplier, ]; } } PKS%W]WÀá�ÈÈ<client/src/Responses/FineTuning/RetrieveJobResponseError.phpnu„[µü¤ */ final class RetrieveJobResponseError implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $code, public readonly ?string $param, public readonly string $message, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{code: string, param: ?string, message: string} $attributes */ public static function from(array $attributes): ?self { return new self( $attributes['code'], $attributes['param'], $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'param' => $this->param, 'message' => $this->message, ]; } } PKS%W]ˆÐS†mmBclient/src/Responses/FineTuning/ListJobEventsResponseEventData.phpnu„[µü¤ */ final class ListJobEventsResponseEventData implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly int $step, public readonly float $trainLoss, public readonly float $trainMeanTokenAccuracy, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{step: int, train_loss: float, train_mean_token_accuracy: float} $attributes */ public static function from(array $attributes): self { return new self( $attributes['step'], $attributes['train_loss'], $attributes['train_mean_token_accuracy'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'step' => $this->step, 'train_loss' => $this->trainLoss, 'train_mean_token_accuracy' => $this->trainMeanTokenAccuracy, ]; } } PKS%W]ŽËÊÅ;client/src/Responses/Embeddings/CreateResponseEmbedding.phpnu„[µü¤ $embedding */ private function __construct( public readonly string $object, public readonly ?int $index, public readonly array $embedding, ) {} /** * @param array{object: string, index?: int, embedding: array} $attributes */ public static function from(array $attributes): self { return new self( $attributes['object'], $attributes['index'] ?? null, $attributes['embedding'], ); } /** * @return array{object: string, index?: int, embedding: array} */ public function toArray(): array { return array_filter([ 'object' => $this->object, 'index' => $this->index, 'embedding' => $this->embedding, ], fn (mixed $value): bool => ! is_null($value)); } } PKS%W]¨|-9 9 2client/src/Responses/Embeddings/CreateResponse.phpnu„[µü¤, index?: int}>, usage?: array{prompt_tokens: int, total_tokens: int}}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, index?: int}>, usage?: array{prompt_tokens: int, total_tokens: int}}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $embeddings */ private function __construct( public readonly string $object, public readonly ?string $model, public readonly array $embeddings, public readonly ?CreateResponseUsage $usage, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, model?: string|null, data: array, index?: int}>, usage?: array{prompt_tokens: int, total_tokens: int}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $embeddings = array_map(fn (array $result): CreateResponseEmbedding => CreateResponseEmbedding::from( $result ), $attributes['data']); return new self( $attributes['object'], $attributes['model'] ?? null, $embeddings, isset($attributes['usage']) ? CreateResponseUsage::from($attributes['usage']) : null, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return array_filter([ 'object' => $this->object, 'model' => $this->model ?? null, 'data' => array_map( static fn (CreateResponseEmbedding $result): array => $result->toArray(), $this->embeddings, ), 'usage' => $this->usage?->toArray(), ], fn (mixed $value): bool => ! is_null($value)); } } PKS%W]ÝAEƒ7client/src/Responses/Embeddings/CreateResponseUsage.phpnu„[µü¤ $this->promptTokens, 'total_tokens' => $this->totalTokens, ]; } } PKS%W]³#¹zww@client/src/Responses/Responses/ToolChoice/FunctionToolChoice.phpnu„[µü¤ */ final class FunctionToolChoice implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'function' $type */ private function __construct( public readonly string $name, public readonly string $type, ) {} /** * @param FunctionToolChoiceType $attributes */ public static function from(array $attributes): self { return new self( name: $attributes['name'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'type' => $this->type, ]; } } PKS%W]A@ìMM>client/src/Responses/Responses/ToolChoice/HostedToolChoice.phpnu„[µü¤ */ final class HostedToolChoice implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_search'|'web_search_preview'|'computer_use_preview' $type */ private function __construct( public readonly string $type, ) {} /** * @param HostedToolChoiceType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]Ûç­þ}}Iclient/src/Responses/Responses/Input/ComputerToolCallOutputScreenshot.phpnu„[µü¤ */ final class ComputerToolCallOutputScreenshot implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'computer_screenshot' $type */ private function __construct( public readonly string $type, public readonly string $fileId, public readonly string $imageUrl, ) {} /** * @param ComputerToolCallOutputScreenshotType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], fileId: $attributes['file_id'], imageUrl: $attributes['image_url'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'file_id' => $this->fileId, 'image_url' => $this->imageUrl, ]; } } PKS%W]ÏØŽE½ ½ 5client/src/Responses/Responses/Input/InputMessage.phpnu„[µü¤, id: string, role: 'user'|'system'|'developer', status: 'in_progress'|'completed'|'incomplete', type: 'message'} * * @implements ResponseContract */ final class InputMessage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $content * @param 'user'|'system'|'developer' $role * @param 'in_progress'|'completed'|'incomplete' $status * @param 'message' $type */ private function __construct( public readonly array $content, public readonly string $id, public readonly string $role, public readonly string $status, public readonly string $type, ) {} /** * @param InputMessageType $attributes */ public static function from(array $attributes): self { $content = array_map( fn (array $item): InputMessageContentInputText|InputMessageContentInputImage|InputMessageContentInputFile => match ($item['type']) { 'input_text' => InputMessageContentInputText::from($item), 'input_image' => InputMessageContentInputImage::from($item), 'input_file' => InputMessageContentInputFile::from($item), }, $attributes['content'], ); return new self( content: $content, id: $attributes['id'], role: $attributes['role'], status: $attributes['status'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content' => array_map( fn (InputMessageContentInputText|InputMessageContentInputImage|InputMessageContentInputFile $item): array => $item->toArray(), $this->content, ), 'id' => $this->id, 'role' => $this->role, 'status' => $this->status, 'type' => $this->type, ]; } } PKS%W]—œXRââ@client/src/Responses/Responses/Input/AcknowledgedSafetyCheck.phpnu„[µü¤ */ final class AcknowledgedSafetyCheck implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $code, public readonly string $id, public readonly string $message, ) {} /** * @param AcknowledgedSafetyCheckType $attributes */ public static function from(array $attributes): self { return new self( code: $attributes['code'], id: $attributes['id'], message: $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'id' => $this->id, 'message' => $this->message, ]; } } PKS%W]n—ßEwwEclient/src/Responses/Responses/Input/InputMessageContentInputText.phpnu„[µü¤ */ final class InputMessageContentInputText implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'input_text' $type */ private function __construct( public readonly string $text, public readonly string $type ) {} /** * @param ContentInputTextType $attributes */ public static function from(array $attributes): self { return new self( text: $attributes['text'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'text' => $this->text, 'type' => $this->type, ]; } } PKS%W]³À>žž?client/src/Responses/Responses/Input/FunctionToolCallOutput.phpnu„[µü¤ */ final class FunctionToolCallOutput implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'function_call_output' $type * @param 'in_progress'|'completed'|'incompleted' $status */ private function __construct( public readonly string $callId, public readonly string $id, public readonly string $output, public readonly string $type, public readonly string $status, ) {} /** * @param FunctionToolCallOutputType $attributes */ public static function from(array $attributes): self { return new self( callId: $attributes['call_id'], id: $attributes['id'], output: $attributes['output'], type: $attributes['type'], status: $attributes['status'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'call_id' => $this->callId, 'id' => $this->id, 'output' => $this->output, 'type' => $this->type, 'status' => $this->status, ]; } } PKS%W]ƒ¸¹MÙ Ù ?client/src/Responses/Responses/Input/ComputerToolCallOutput.phpnu„[µü¤, status: 'in_progress'|'completed'|'incomplete'} * * @implements ResponseContract */ final class ComputerToolCallOutput implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'computer_call_output' $type * @param array $acknowledgedSafetyChecks * @param 'in_progress'|'completed'|'incomplete' $status */ private function __construct( public readonly string $callId, public readonly string $id, public readonly ComputerToolCallOutputScreenshot $output, public readonly string $type, public readonly array $acknowledgedSafetyChecks, public readonly string $status, ) {} /** * @param ComputerToolCallOutputType $attributes */ public static function from(array $attributes): self { $acknowledgedSafetyChecks = array_map( fn (array $acknowledgedSafetyCheck) => AcknowledgedSafetyCheck::from($acknowledgedSafetyCheck), $attributes['acknowledged_safety_checks'], ); return new self( callId: $attributes['call_id'], id: $attributes['id'], output: ComputerToolCallOutputScreenshot::from($attributes['output']), type: $attributes['type'], acknowledgedSafetyChecks: $acknowledgedSafetyChecks, status: $attributes['status'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'call_id' => $this->callId, 'id' => $this->id, 'output' => $this->output->toArray(), 'type' => $this->type, 'acknowledged_safety_checks' => array_map( fn (AcknowledgedSafetyCheck $acknowledgedSafetyCheck) => $acknowledgedSafetyCheck->toArray(), $this->acknowledgedSafetyChecks, ), 'status' => $this->status, ]; } } PKS%W]ÖzÇÇFclient/src/Responses/Responses/Input/InputMessageContentInputImage.phpnu„[µü¤ */ final class InputMessageContentInputImage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'input_image' $type */ private function __construct( public readonly string $type, public readonly string $detail, public readonly ?string $fileId, public readonly ?string $imageUrl, ) {} /** * @param ContentInputImageType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], detail: $attributes['detail'], fileId: $attributes['file_id'], imageUrl: $attributes['image_url'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'detail' => $this->detail, 'file_id' => $this->fileId, 'image_url' => $this->imageUrl, ]; } } PKS%W]tª}Õ¾¾Eclient/src/Responses/Responses/Input/InputMessageContentInputFile.phpnu„[µü¤ */ final class InputMessageContentInputFile implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'input_file' $type */ private function __construct( public readonly string $type, public readonly string $fileData, public readonly string $fileId, public readonly string $filename, ) {} /** * @param ContentInputFileType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], fileData: $attributes['file_data'], fileId: $attributes['file_id'], filename: $attributes['filename'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'file_data' => $this->fileData, 'file_id' => $this->fileId, 'filename' => $this->filename, ]; } } PKS%W]/"–”tt@client/src/Responses/Responses/Streaming/ImageGenerationPart.phpnu„[µü¤ */ final class ImageGenerationPart implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $outputIndex, public readonly string $itemId, public readonly int $sequenceNumber, private readonly MetaInformation $meta, ) {} /** * @param ImageGenerationPartType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( outputIndex: $attributes['output_index'], itemId: $attributes['item_id'], sequenceNumber: $attributes['sequence_number'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'output_index' => $this->outputIndex, 'item_id' => $this->itemId, 'sequence_number' => $this->sequenceNumber, ]; } } PKS%W]…–çÉEclient/src/Responses/Responses/Streaming/ReasoningSummaryTextDone.phpnu„[µü¤ */ final class ReasoningSummaryTextDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $itemId, public readonly int $outputIndex, public readonly int $summaryIndex, public readonly string $text, private readonly MetaInformation $meta, ) {} /** * @param ReasoningSummaryTextDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], summaryIndex: $attributes['summary_index'], text: $attributes['text'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'summary_index' => $this->summaryIndex, 'text' => $this->text, ]; } } PKS%W] ZÕîQQDclient/src/Responses/Responses/Streaming/CodeInterpreterCodeDone.phpnu„[µü¤ */ final class CodeInterpreterCodeDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $code, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param CodeInterpreterCodeDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( code: $attributes['code'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]¦OkÒÒ;client/src/Responses/Responses/Streaming/OutputTextDone.phpnu„[µü¤ */ final class OutputTextDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $contentIndex, public readonly string $itemId, public readonly int $outputIndex, public readonly string $text, private readonly MetaInformation $meta, ) {} /** * @param OutputTextDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( contentIndex: $attributes['content_index'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], text: $attributes['text'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content_index' => $this->contentIndex, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'text' => $this->text, ]; } } PKS%W] �Ä[[Eclient/src/Responses/Responses/Streaming/CodeInterpreterCodeDelta.phpnu„[µü¤ */ final class CodeInterpreterCodeDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $delta, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param CodeInterpreterCodeDeltaType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( delta: $attributes['delta'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'delta' => $this->delta, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]m|‰‰7client/src/Responses/Responses/Streaming/OutputItem.phpnu„[µü¤ */ final class OutputItem implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $outputIndex, public readonly OutputMessage|OutputCodeInterpreterToolCall|OutputFileSearchToolCall|OutputFunctionToolCall|OutputWebSearchToolCall|OutputComputerToolCall|OutputReasoning|OutputMcpListTools|OutputMcpApprovalRequest|OutputMcpCall|OutputImageGenerationToolCall $item, private readonly MetaInformation $meta, ) {} /** * @param OutputItemType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $item = match ($attributes['item']['type']) { 'message' => OutputMessage::from($attributes['item']), 'file_search_call' => OutputFileSearchToolCall::from($attributes['item']), 'function_call' => OutputFunctionToolCall::from($attributes['item']), 'web_search_call' => OutputWebSearchToolCall::from($attributes['item']), 'computer_call' => OutputComputerToolCall::from($attributes['item']), 'reasoning' => OutputReasoning::from($attributes['item']), 'image_generation_call' => OutputImageGenerationToolCall::from($attributes['item']), 'mcp_list_tools' => OutputMcpListTools::from($attributes['item']), 'mcp_approval_request' => OutputMcpApprovalRequest::from($attributes['item']), 'mcp_call' => OutputMcpCall::from($attributes['item']), 'code_interpreter_call' => OutputCodeInterpreterToolCall::from($attributes['item']), }; return new self( outputIndex: $attributes['output_index'], item: $item, meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'output_index' => $this->outputIndex, 'item' => $this->item->toArray(), ]; } } PKS%W]ðøŽ_ûû4client/src/Responses/Responses/Streaming/McpCall.phpnu„[µü¤ */ final class McpCall implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $sequenceNumber, private readonly MetaInformation $meta, ) {} /** * @param McpCallType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( sequenceNumber: $attributes['sequence_number'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'sequence_number' => $this->sequenceNumber, ]; } } PKS%W]øÏÝ>eeGclient/src/Responses/Responses/Streaming/FunctionCallArgumentsDelta.phpnu„[µü¤ */ final class FunctionCallArgumentsDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $delta, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param FunctionCallArgumentsDeltaType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( delta: $attributes['delta'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'delta' => $this->delta, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]?·k“ÒÒ8client/src/Responses/Responses/Streaming/RefusalDone.phpnu„[µü¤ */ final class RefusalDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $contentIndex, public readonly string $itemId, public readonly int $outputIndex, public readonly string $refusal, private readonly MetaInformation $meta, ) {} /** * @param RefusalDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( contentIndex: $attributes['content_index'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], refusal: $attributes['refusal'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content_index' => $this->contentIndex, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'refusal' => $this->refusal, ]; } } PKS%W]…ýqúžž;client/src/Responses/Responses/Streaming/FileSearchCall.phpnu„[µü¤ */ final class FileSearchCall implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param FileSearchCallType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]©¸T[[Cclient/src/Responses/Responses/Streaming/McpListToolsInProgress.phpnu„[µü¤ */ final class McpListToolsInProgress implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $sequenceNumber, public readonly int $outputIndex, public readonly string $itemId, private readonly MetaInformation $meta, ) {} /** * @param McpListToolsType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( sequenceNumber: $attributes['sequence_number'], outputIndex: $attributes['output_index'], itemId: $attributes['item_id'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'sequence_number' => $this->sequenceNumber, 'output_index' => $this->outputIndex, 'item_id' => $this->itemId, ]; } } PKS%W]†ú Fclient/src/Responses/Responses/Streaming/ReasoningSummaryTextDelta.phpnu„[µü¤ */ final class ReasoningSummaryTextDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $delta, public readonly string $itemId, public readonly int $outputIndex, public readonly int $summaryIndex, private readonly MetaInformation $meta, ) {} /** * @param ReasoningSummaryTextDeltaType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( delta: $attributes['delta'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], summaryIndex: $attributes['summary_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'delta' => $this->delta, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'summary_index' => $this->summaryIndex, ]; } } PKS%W]`Y_ÝÝ2client/src/Responses/Responses/Streaming/Error.phpnu„[µü¤ */ final class Error implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly ?string $code, public readonly string $message, public readonly ?string $param, private readonly MetaInformation $meta, ) {} /** * @param ErrorType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( code: $attributes['code'], message: $attributes['message'], param: $attributes['param'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'message' => $this->message, 'param' => $this->param, ]; } } PKS%W]Š‚xØÍÍ9client/src/Responses/Responses/Streaming/RefusalDelta.phpnu„[µü¤ */ final class RefusalDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $contentIndex, public readonly string $delta, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param RefusalDeltaType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( contentIndex: $attributes['content_index'], delta: $attributes['delta'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content_index' => $this->contentIndex, 'delta' => $this->delta, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]ûŸ…_ttFclient/src/Responses/Responses/Streaming/FunctionCallArgumentsDone.phpnu„[µü¤ */ final class FunctionCallArgumentsDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $arguments, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param FunctionCallArgumentsDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( arguments: $attributes['arguments'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'arguments' => $this->arguments, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]wkÐa<<Fclient/src/Responses/Responses/Streaming/OutputTextAnnotationAdded.phpnu„[µü¤ */ final class OutputTextAnnotationAdded implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly OutputMessageContentOutputTextAnnotationsContainerFile|OutputMessageContentOutputTextAnnotationsFileCitation|OutputMessageContentOutputTextAnnotationsFilePath|OutputMessageContentOutputTextAnnotationsUrlCitation $annotation, public readonly int $annotationIndex, public readonly int $contentIndex, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param OutputTextAnnotationAddedType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $annotation = match ($attributes['annotation']['type']) { 'file_citation' => OutputMessageContentOutputTextAnnotationsFileCitation::from($attributes['annotation']), 'file_path' => OutputMessageContentOutputTextAnnotationsFilePath::from($attributes['annotation']), 'url_citation' => OutputMessageContentOutputTextAnnotationsUrlCitation::from($attributes['annotation']), 'container_file_citation' => OutputMessageContentOutputTextAnnotationsContainerFile::from($attributes['annotation']), }; return new self( annotation: $annotation, annotationIndex: $attributes['annotation_index'], contentIndex: $attributes['content_index'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'annotation' => $this->annotation->toArray(), 'annotation_index' => $this->annotationIndex, 'content_index' => $this->contentIndex, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]$©üâ! ! 8client/src/Responses/Responses/Streaming/ContentPart.phpnu„[µü¤ */ final class ContentPart implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $contentIndex, public readonly string $itemId, public readonly int $outputIndex, public readonly OutputMessageContentOutputText|OutputMessageContentRefusal $part, private readonly MetaInformation $meta, ) {} /** * @param ContentPartType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $part = match ($attributes['part']['type']) { 'output_text' => OutputMessageContentOutputText::from($attributes['part']), 'refusal' => OutputMessageContentRefusal::from($attributes['part']), }; return new self( contentIndex: $attributes['content_index'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], part: $part, meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content_index' => $this->contentIndex, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'part' => $this->part->toArray(), ]; } } PKS%W]‡ûg¶ÈÈ<client/src/Responses/Responses/Streaming/OutputTextDelta.phpnu„[µü¤ */ final class OutputTextDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $contentIndex, public readonly string $delta, public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param OutputTextType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( contentIndex: $attributes['content_index'], delta: $attributes['delta'], itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content_index' => $this->contentIndex, 'delta' => $this->delta, 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]?!Ð<<Hclient/src/Responses/Responses/Streaming/ImageGenerationPartialImage.phpnu„[µü¤ */ final class ImageGenerationPartialImage implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $outputIndex, public readonly string $itemId, public readonly int $sequenceNumber, public readonly int $partialImageIndex, public readonly string $partialImageB64, private readonly MetaInformation $meta, ) {} /** * @param ImageGenerationPartialImageType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( outputIndex: $attributes['output_index'], itemId: $attributes['item_id'], sequenceNumber: $attributes['sequence_number'], partialImageIndex: $attributes['partial_image_index'], partialImageB64: $attributes['partial_image_b64'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'output_index' => $this->outputIndex, 'item_id' => $this->itemId, 'sequence_number' => $this->sequenceNumber, 'partial_image_index' => $this->partialImageIndex, 'partial_image_b64' => $this->partialImageB64, ]; } } PKS%W]SØQhBclient/src/Responses/Responses/Streaming/McpCallArgumentsDelta.phpnu„[µü¤ */ final class McpCallArgumentsDelta implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $sequenceNumber, public readonly int $outputIndex, public readonly string $itemId, public readonly string $delta, private readonly MetaInformation $meta, ) {} /** * @param McpCallArgumentsDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( sequenceNumber: $attributes['sequence_number'], outputIndex: $attributes['output_index'], itemId: $attributes['item_id'], delta: $attributes['delta'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'sequence_number' => $this->sequenceNumber, 'output_index' => $this->outputIndex, 'item_id' => $this->itemId, 'delta' => $this->delta, ]; } } PKS%W]ÇÛdÁÁAclient/src/Responses/Responses/Streaming/ReasoningSummaryPart.phpnu„[µü¤ */ final class ReasoningSummaryPart implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $itemId, public readonly int $outputIndex, public readonly OutputReasoningSummary $part, public readonly int $summaryIndex, private readonly MetaInformation $meta, ) {} /** * @param ReasoningSummaryPartType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], part: OutputReasoningSummary::from($attributes['part']), summaryIndex: $attributes['summary_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, 'part' => $this->part->toArray(), 'summary_index' => $this->summaryIndex, ]; } } PKS%W]WÙ··@client/src/Responses/Responses/Streaming/CodeInterpreterCall.phpnu„[µü¤ */ final class CodeInterpreterCall implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param CodeInterpreterCallType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]™…Í#Aclient/src/Responses/Responses/Streaming/McpCallArgumentsDone.phpnu„[µü¤ */ final class McpCallArgumentsDone implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $sequenceNumber, public readonly int $outputIndex, public readonly string $itemId, public readonly string $arguments, private readonly MetaInformation $meta, ) {} /** * @param McpCallArgumentsDoneType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( sequenceNumber: $attributes['sequence_number'], outputIndex: $attributes['output_index'], itemId: $attributes['item_id'], arguments: $attributes['arguments'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'sequence_number' => $this->sequenceNumber, 'output_index' => $this->outputIndex, 'item_id' => $this->itemId, 'arguments' => $this->arguments, ]; } } PKS%W]ÙÛF™™:client/src/Responses/Responses/Streaming/WebSearchCall.phpnu„[µü¤ */ final class WebSearchCall implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $itemId, public readonly int $outputIndex, private readonly MetaInformation $meta, ) {} /** * @param WebSearchCallType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( itemId: $attributes['item_id'], outputIndex: $attributes['output_index'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'item_id' => $this->itemId, 'output_index' => $this->outputIndex, ]; } } PKS%W]«X9client/src/Responses/Responses/Streaming/McpListTools.phpnu„[µü¤ */ final class McpListTools implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly int $sequenceNumber, private readonly MetaInformation $meta, ) {} /** * @param McpListToolsType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( sequenceNumber: $attributes['sequence_number'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'sequence_number' => $this->sequenceNumber, ]; } } PKS%W]ÇLÔ ôôGclient/src/Responses/Responses/CreateResponseUsageInputTokenDetails.phpnu„[µü¤ */ final class CreateResponseUsageInputTokenDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $cachedTokens, ) {} /** * @param InputTokenDetailsType $attributes */ public static function from(array $attributes): self { return new self( cachedTokens: $attributes['cached_tokens'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'cached_tokens' => $this->cachedTokens, ]; } } PKS%W]ø©)qšš1client/src/Responses/Responses/ListInputItems.phpnu„[µü¤, first_id: string, has_more: bool, last_id: string, object: 'list'} * * @implements ResponseContract */ final class ListInputItems implements ResponseContract, ResponseHasMetaInformationContract { /** @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data * @param 'list' $object */ private function __construct( public readonly string $object, public readonly array $data, public readonly string $firstId, public readonly string $lastId, public readonly bool $hasMore, private readonly MetaInformation $meta, ) {} /** * @param ListInputItemsType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map( fn (array $item): InputMessage|OutputMessage|OutputFileSearchToolCall|OutputComputerToolCall|ComputerToolCallOutput|OutputWebSearchToolCall|OutputFunctionToolCall|FunctionToolCallOutput => match ($item['type']) { 'message' => $item['role'] === 'assistant' ? OutputMessage::from($item) : InputMessage::from($item), 'file_search_call' => OutputFileSearchToolCall::from($item), 'function_call' => OutputFunctionToolCall::from($item), 'function_call_output' => FunctionToolCallOutput::from($item), 'web_search_call' => OutputWebSearchToolCall::from($item), 'computer_call' => OutputComputerToolCall::from($item), 'computer_call_output' => ComputerToolCallOutput::from($item), }, $attributes['data'], ); return new self( object: $attributes['object'], data: $data, firstId: $attributes['first_id'], lastId: $attributes['last_id'], hasMore: $attributes['has_more'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( fn (InputMessage|OutputMessage|OutputFileSearchToolCall|OutputComputerToolCall|ComputerToolCallOutput|OutputWebSearchToolCall|OutputFunctionToolCall|FunctionToolCallOutput $item): array => $item->toArray(), $this->data, ), 'first_id' => $this->firstId, 'last_id' => $this->lastId, 'has_more' => $this->hasMore, ]; } } PKS%W]T‹%Xqq8client/src/Responses/Responses/ReferencePromptObject.phpnu„[µü¤|null, version?: string|null} * * @implements ResponseContract */ final class ReferencePromptObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array|null $variables */ private function __construct( public readonly string $id, public readonly ?array $variables = null, public readonly ?string $version = null, ) {} /** * @param ReferencePromptObjectType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], variables: $attributes['variables'] ?? null, version: $attributes['version'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'variables' => $this->variables, 'version' => $this->version, ]; } } PKS%W]Œ¥Î²ëë1client/src/Responses/Responses/DeleteResponse.phpnu„[µü¤ */ final class DeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * @param DeleteResponseType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( id: $attributes['id'], object: $attributes['object'], deleted: $attributes['deleted'], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]N²Ä¤  Hclient/src/Responses/Responses/CreateResponseUsageOutputTokenDetails.phpnu„[µü¤ */ final class CreateResponseUsageOutputTokenDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $reasoningTokens, ) {} /** * @param OutputTokenDetailsType $attributes */ public static function from(array $attributes): self { return new self( reasoningTokens: $attributes['reasoning_tokens'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'reasoning_tokens' => $this->reasoningTokens, ]; } } PKS%W]yµ…æ,5,53client/src/Responses/Responses/RetrieveResponse.phpnu„[µü¤|string|null * @phpstan-type ToolChoiceType 'none'|'auto'|'required'|FunctionToolChoiceType|HostedToolChoiceType * @phpstan-type ToolsType array * @phpstan-type OutputType array * @phpstan-type RetrieveResponseType array{id: string, object: 'response', created_at: int, status: 'completed'|'failed'|'in_progress'|'incomplete', error: ErrorType|null, incomplete_details: IncompleteDetailsType|null, instructions: InstructionsType, max_output_tokens: int|null, model: string, output: OutputType, parallel_tool_calls: bool, previous_response_id: string|null, prompt: ReferencePromptObjectType|null, reasoning: ReasoningType|null, store: bool, temperature: float|null, text: ResponseFormatType, tool_choice: ToolChoiceType, tools: ToolsType, top_p: float|null, truncation: 'auto'|'disabled'|null, usage: UsageType|null, user: string|null, metadata: array|null} * * @implements ResponseContract */ final class RetrieveResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param 'response' $object * @param 'completed'|'failed'|'in_progress'|'incomplete' $status * @param array|string|null $instructions * @param array $output * @param array $tools * @param 'auto'|'disabled'|null $truncation * @param array $metadata */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly string $status, public readonly ?CreateResponseError $error, public readonly ?CreateResponseIncompleteDetails $incompleteDetails, public readonly array|string|null $instructions, public readonly ?int $maxOutputTokens, public readonly string $model, public readonly array $output, public readonly bool $parallelToolCalls, public readonly ?string $previousResponseId, public readonly ?ReferencePromptObject $prompt, public readonly ?CreateResponseReasoning $reasoning, public readonly bool $store, public readonly ?float $temperature, public readonly CreateResponseFormat $text, public readonly string|FunctionToolChoice|HostedToolChoice $toolChoice, public readonly array $tools, public readonly ?float $topP, public readonly ?string $truncation, public readonly ?CreateResponseUsage $usage, public readonly ?string $user, public array $metadata, private readonly MetaInformation $meta, ) {} /** * @param RetrieveResponseType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $output = array_map( fn (array $output): OutputMessage|OutputComputerToolCall|OutputFileSearchToolCall|OutputWebSearchToolCall|OutputFunctionToolCall|OutputReasoning|OutputMcpListTools|OutputMcpApprovalRequest|OutputMcpCall|OutputImageGenerationToolCall|OutputCodeInterpreterToolCall => match ($output['type']) { 'message' => OutputMessage::from($output), 'file_search_call' => OutputFileSearchToolCall::from($output), 'function_call' => OutputFunctionToolCall::from($output), 'web_search_call' => OutputWebSearchToolCall::from($output), 'computer_call' => OutputComputerToolCall::from($output), 'reasoning' => OutputReasoning::from($output), 'mcp_list_tools' => OutputMcpListTools::from($output), 'mcp_approval_request' => OutputMcpApprovalRequest::from($output), 'mcp_call' => OutputMcpCall::from($output), 'image_generation_call' => OutputImageGenerationToolCall::from($output), 'code_interpreter_call' => OutputCodeInterpreterToolCall::from($output), }, $attributes['output'], ); $toolChoice = is_array($attributes['tool_choice']) ? match ($attributes['tool_choice']['type']) { 'file_search', 'web_search_preview', 'computer_use_preview' => HostedToolChoice::from($attributes['tool_choice']), 'function' => FunctionToolChoice::from($attributes['tool_choice']), } : $attributes['tool_choice']; $tools = array_map( fn (array $tool): ComputerUseTool|FileSearchTool|FunctionTool|WebSearchTool|ImageGenerationTool|RemoteMcpTool|CodeInterpreterTool => match ($tool['type']) { 'file_search' => FileSearchTool::from($tool), 'web_search_preview', 'web_search_preview_2025_03_11' => WebSearchTool::from($tool), 'function' => FunctionTool::from($tool), 'computer_use_preview' => ComputerUseTool::from($tool), 'image_generation' => ImageGenerationTool::from($tool), 'mcp' => RemoteMcpTool::from($tool), 'code_interpreter' => CodeInterpreterTool::from($tool), }, $attributes['tools'], ); return new self( id: $attributes['id'], object: $attributes['object'], createdAt: $attributes['created_at'], status: $attributes['status'], error: isset($attributes['error']) ? CreateResponseError::from($attributes['error']) : null, incompleteDetails: isset($attributes['incomplete_details']) ? CreateResponseIncompleteDetails::from($attributes['incomplete_details']) : null, instructions: $attributes['instructions'], maxOutputTokens: $attributes['max_output_tokens'], model: $attributes['model'], output: $output, parallelToolCalls: $attributes['parallel_tool_calls'], previousResponseId: $attributes['previous_response_id'], prompt: isset($attributes['prompt']) ? ReferencePromptObject::from($attributes['prompt']) : null, reasoning: isset($attributes['reasoning']) ? CreateResponseReasoning::from($attributes['reasoning']) : null, store: $attributes['store'], temperature: $attributes['temperature'], text: CreateResponseFormat::from($attributes['text']), toolChoice: $toolChoice, tools: $tools, topP: $attributes['top_p'], truncation: $attributes['truncation'], usage: isset($attributes['usage']) ? CreateResponseUsage::from($attributes['usage']) : null, user: $attributes['user'] ?? null, metadata: $attributes['metadata'] ?? [], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { // https://github.com/phpstan/phpstan/issues/8438 // @phpstan-ignore-next-line return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'status' => $this->status, 'error' => $this->error?->toArray(), 'incomplete_details' => $this->incompleteDetails?->toArray(), 'instructions' => $this->instructions, 'max_output_tokens' => $this->maxOutputTokens, 'metadata' => $this->metadata ?? [], 'model' => $this->model, 'output' => array_map( fn (OutputMessage|OutputComputerToolCall|OutputFileSearchToolCall|OutputWebSearchToolCall|OutputFunctionToolCall|OutputReasoning|OutputMcpListTools|OutputMcpCall|OutputMcpApprovalRequest|OutputImageGenerationToolCall|OutputCodeInterpreterToolCall $output): array => $output->toArray(), $this->output ), 'parallel_tool_calls' => $this->parallelToolCalls, 'previous_response_id' => $this->previousResponseId, 'prompt' => $this->prompt?->toArray(), 'reasoning' => $this->reasoning?->toArray(), 'store' => $this->store, 'temperature' => $this->temperature, 'text' => $this->text->toArray(), 'tool_choice' => is_string($this->toolChoice) ? $this->toolChoice : $this->toolChoice->toArray(), 'tools' => array_map( fn (ComputerUseTool|FileSearchTool|FunctionTool|WebSearchTool|ImageGenerationTool|RemoteMcpTool|CodeInterpreterTool $tool): array => $tool->toArray(), $this->tools ), 'top_p' => $this->topP, 'truncation' => $this->truncation, 'usage' => $this->usage?->toArray(), 'user' => $this->user, ]; } } PKS%W]›ž%Ñ’’9client/src/Responses/Responses/CreateStreamedResponse.phpnu„[µü¤} * * @implements ResponseContract */ final class CreateStreamedResponse implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use FakeableForStreamedResponse; private function __construct( public readonly string $event, public readonly CreateResponse|OutputItem|ContentPart|OutputTextDelta|OutputTextAnnotationAdded|OutputTextDone|RefusalDelta|RefusalDone|FunctionCallArgumentsDelta|FunctionCallArgumentsDone|FileSearchCall|WebSearchCall|CodeInterpreterCall|CodeInterpreterCodeDelta|CodeInterpreterCodeDone|ReasoningSummaryPart|ReasoningSummaryTextDelta|ReasoningSummaryTextDone|McpListTools|McpListToolsInProgress|McpCall|McpCallArgumentsDelta|McpCallArgumentsDone|ImageGenerationPart|ImageGenerationPartialImage|Error $response, ) {} /** * @param array $attributes */ public static function from(array $attributes): self { $event = $attributes['type'] ?? throw new UnknownEventException('Missing event type in streamed response'); $meta = $attributes['__meta']; unset($attributes['__meta']); $response = match ($event) { 'response.created', 'response.in_progress', 'response.completed', 'response.failed', 'response.incomplete' => CreateResponse::from($attributes['response'], $meta), // @phpstan-ignore-line 'response.output_item.added', 'response.output_item.done' => OutputItem::from($attributes, $meta), // @phpstan-ignore-line 'response.content_part.added', 'response.content_part.done' => ContentPart::from($attributes, $meta), // @phpstan-ignore-line 'response.output_text.delta' => OutputTextDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.output_text.done' => OutputTextDone::from($attributes, $meta), // @phpstan-ignore-line 'response.output_text.annotation.added' => OutputTextAnnotationAdded::from($attributes, $meta), // @phpstan-ignore-line 'response.refusal.delta' => RefusalDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.refusal.done' => RefusalDone::from($attributes, $meta), // @phpstan-ignore-line 'response.function_call_arguments.delta' => FunctionCallArgumentsDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.function_call_arguments.done' => FunctionCallArgumentsDone::from($attributes, $meta), // @phpstan-ignore-line 'response.file_search_call.in_progress', 'response.file_search_call.searching', 'response.file_search_call.completed' => FileSearchCall::from($attributes, $meta), // @phpstan-ignore-line 'response.web_search_call.in_progress', 'response.web_search_call.searching', 'response.web_search_call.completed' => WebSearchCall::from($attributes, $meta), // @phpstan-ignore-line 'response.code_interpreter_call.in_progress', 'response.code_interpreter_call.running', 'response.code_interpreter_call.interpreting', 'response.code_interpreter_call.completed' => CodeInterpreterCall::from($attributes, $meta), // @phpstan-ignore-line 'response.code_interpreter_call_code.delta' => CodeInterpreterCodeDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.code_interpreter_call_code.done' => CodeInterpreterCodeDone::from($attributes, $meta), // @phpstan-ignore-line 'response.reasoning_summary_part.added', 'response.reasoning_summary_part.done' => ReasoningSummaryPart::from($attributes, $meta), // @phpstan-ignore-line 'response.reasoning_summary_text.delta' => ReasoningSummaryTextDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.reasoning_summary_text.done' => ReasoningSummaryTextDone::from($attributes, $meta), // @phpstan-ignore-line 'response.mcp_list_tools.in_progress' => McpListToolsInProgress::from($attributes, $meta), // @phpstan-ignore-line 'response.mcp_list_tools.failed', 'response.mcp_list_tools.completed' => McpListTools::from($attributes, $meta), // @phpstan-ignore-line 'response.mcp_call.in_progress', 'response.mcp_call.failed', 'response.mcp_call.completed' => McpCall::from($attributes, $meta), // @phpstan-ignore-line 'response.mcp_call.arguments.delta', 'response.mcp_call_arguments.delta' => McpCallArgumentsDelta::from($attributes, $meta), // @phpstan-ignore-line 'response.mcp_call.arguments.done', 'response.mcp_call_arguments.done' => McpCallArgumentsDone::from($attributes, $meta), // @phpstan-ignore-line 'response.image_generation_call.completed', 'response.image_generation_call.generating', 'response.image_generation_call.in_progress' => ImageGenerationPart::from($attributes, $meta), // @phpstan-ignore-line 'response.image_generation_call.partial_image' => ImageGenerationPartialImage::from($attributes, $meta), // @phpstan-ignore-line 'error' => Error::from($attributes, $meta), // @phpstan-ignore-line default => throw new UnknownEventException('Unknown Responses streaming event: ' . $event), }; return new self( event: $event, // @phpstan-ignore-line response: $response, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'event' => $this->event, 'data' => $this->response->toArray(), ]; } } PKS%W]g©ª 7client/src/Responses/Responses/Tool/ComputerUseTool.phpnu„[µü¤ */ final class ComputerUseTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'computer_use_preview' $type */ private function __construct( public readonly int $displayHeight, public readonly int $displayWidth, public readonly string $environment, public readonly string $type, ) {} /** * @param ComputerUseToolType $attributes */ public static function from(array $attributes): self { return new self( displayHeight: $attributes['display_height'], displayWidth: $attributes['display_width'], environment: $attributes['environment'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'display_height' => $this->displayHeight, 'display_width' => $this->displayWidth, 'environment' => $this->environment, 'type' => $this->type, ]; } } PKS%W] mŸ;YY@client/src/Responses/Responses/Tool/FileSearchCompoundFilter.phpnu„[µü¤, type: 'and'|'or'} * * @implements ResponseContract */ final class FileSearchCompoundFilter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $filters * @param 'and'|'or' $type */ private function __construct( public readonly array $filters, public readonly string $type, ) {} /** * @param CompoundFilterType $attributes */ public static function from(array $attributes): self { $filters = array_map( static fn (array $filter): FileSearchComparisonFilter => FileSearchComparisonFilter::from($filter), $attributes['filters'], ); return new self( filters: $filters, type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'filters' => array_map( static fn (FileSearchComparisonFilter $filter): array => $filter->toArray(), $this->filters, ), 'type' => $this->type, ]; } } PKS%W]EB´>>;client/src/Responses/Responses/Tool/CodeInterpreterTool.phpnu„[µü¤ */ final class CodeInterpreterTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'code_interpreter' $type */ private function __construct( public readonly string|CodeInterpreterContainerAuto $container, public readonly string $type, ) {} /** * @param CodeInterpreterToolType $attributes */ public static function from(array $attributes): self { return new self( container: is_string($attributes['container']) ? $attributes['container'] : CodeInterpreterContainerAuto::from($attributes['container']), type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'container' => $this->container instanceof CodeInterpreterContainerAuto ? $this->container->toArray() : $this->container, 'type' => $this->type, ]; } } PKS%W]^‹þ///=client/src/Responses/Responses/Tool/WebSearchUserLocation.phpnu„[µü¤ */ final class WebSearchUserLocation implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'approximate' $type */ private function __construct( public readonly string $type, public readonly ?string $city, public readonly string $country, public readonly ?string $region, public readonly ?string $timezone, ) {} /** * @param UserLocationType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], city: $attributes['city'], country: $attributes['country'], region: $attributes['region'], timezone: $attributes['timezone'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'city' => $this->city, 'country' => $this->country, 'region' => $this->region, 'timezone' => $this->timezone, ]; } } PKS%W]p3ªî 5client/src/Responses/Responses/Tool/RemoteMcpTool.phpnu„[µü¤|null, allowed_tools: array|McpToolNamesFilterType|null, headers: array|null} * * @implements ResponseContract */ final class RemoteMcpTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'mcp' $type * @param 'never'|'always'|array<'never'|'always', McpToolNamesFilter>|null $requireApproval * @param array|McpToolNamesFilter|null $allowedTools * @param array|null $headers */ private function __construct( public readonly string $type, public readonly string $serverLabel, public readonly string $serverUrl, public readonly string|array|null $requireApproval = null, public readonly array|McpToolNamesFilter|null $allowedTools = null, public readonly ?array $headers = null, ) {} /** * @param RemoteMcpToolType $attributes */ public static function from(array $attributes): self { $requireApproval = $attributes['require_approval'] ?? null; if (is_array($requireApproval)) { $requireApproval = array_map(function (array $approvalAttributes): McpToolNamesFilter { return McpToolNamesFilter::from($approvalAttributes); }, $requireApproval); } $allowedTools = $attributes['allowed_tools'] ?? null; if ($allowedTools !== null && isset($allowedTools['tool_names']) && is_array($allowedTools['tool_names'])) { $allowedTools = McpToolNamesFilter::from($allowedTools); } return new self( type: $attributes['type'], serverLabel: $attributes['server_label'], serverUrl: $attributes['server_url'], requireApproval: $requireApproval, allowedTools: $allowedTools, // @phpstan-ignore-line headers: $attributes['headers'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { $requireApproval = $this->requireApproval; if (is_array($requireApproval)) { $requireApproval = array_map(function (McpToolNamesFilter $approvalFilter): array { return $approvalFilter->toArray(); }, $requireApproval); } $allowedTools = $this->allowedTools; if ($allowedTools instanceof McpToolNamesFilter) { $allowedTools = $allowedTools->toArray(); } return [ 'type' => $this->type, 'server_label' => $this->serverLabel, 'server_url' => $this->serverUrl, 'require_approval' => $requireApproval, 'allowed_tools' => $allowedTools, 'headers' => $this->headers, ]; } } PKS%W]éuMÍææ5client/src/Responses/Responses/Tool/WebSearchTool.phpnu„[µü¤ */ final class WebSearchTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'web_search_preview'|'web_search_preview_2025_03_11' $type * @param 'low'|'medium'|'high' $searchContextSize */ private function __construct( public readonly string $type, public readonly string $searchContextSize, public readonly ?WebSearchUserLocation $userLocation, ) {} /** * @param WebSearchToolType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], searchContextSize: $attributes['search_context_size'], userLocation: isset($attributes['user_location']) ? WebSearchUserLocation::from($attributes['user_location']) : null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'search_context_size' => $this->searchContextSize, 'user_location' => $this->userLocation?->toArray(), ]; } } PKS%W]„iŸÿÿDclient/src/Responses/Responses/Tool/CodeInterpreterContainerAuto.phpnu„[µü¤|null, type: 'auto'} * * @implements ResponseContract */ final class CodeInterpreterContainerAuto implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array|null $fileIds * @param 'auto' $type */ private function __construct( public readonly ?array $fileIds, public readonly string $type, ) {} /** * @param CodeInterpreterContainerAutoType $attributes */ public static function from(array $attributes): self { return new self( fileIds: $attributes['file_ids'] ?? null, type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_ids' => $this->fileIds, 'type' => $this->type, ]; } } PKS%W]ˆž •é é 6client/src/Responses/Responses/Tool/FileSearchTool.phpnu„[µü¤, filters: ComparisonFilterType|CompoundFilterType|null, max_num_results: int, ranking_options: RankingOptionType} * * @implements ResponseContract */ final class FileSearchTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $vectorStoreIds * @param 'file_search' $type */ private function __construct( public readonly string $type, public readonly array $vectorStoreIds, public readonly FileSearchComparisonFilter|FileSearchCompoundFilter|null $filters, public readonly int $maxNumResults, public readonly FileSearchRankingOption $rankingOptions, ) {} /** * @param FileSearchToolType $attributes */ public static function from(array $attributes): self { $filters = null; if (isset($attributes['filters']['type'])) { $filters = match ($attributes['filters']['type']) { 'eq', 'ne', 'gt', 'gte', 'lt', 'lte' => FileSearchComparisonFilter::from($attributes['filters']), 'and', 'or' => FileSearchCompoundFilter::from($attributes['filters']), }; } return new self( type: $attributes['type'], vectorStoreIds: $attributes['vector_store_ids'], filters: $filters, maxNumResults: $attributes['max_num_results'], rankingOptions: FileSearchRankingOption::from($attributes['ranking_options']), ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'vector_store_ids' => $this->vectorStoreIds, 'filters' => $this->filters?->toArray(), 'max_num_results' => $this->maxNumResults, 'ranking_options' => $this->rankingOptions->toArray(), ]; } } PKS%W]a */ final class FileSearchRankingOption implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $ranker, public readonly float $scoreThreshold, ) {} /** * @param RankingOptionType $attributes */ public static function from(array $attributes): self { return new self( ranker: $attributes['ranker'], scoreThreshold: $attributes['score_threshold'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'ranker' => $this->ranker, 'score_threshold' => $this->scoreThreshold, ]; } } PKS%W]¤‰óZi i ;client/src/Responses/Responses/Tool/ImageGenerationTool.phpnu„[µü¤ */ final class ImageGenerationTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'image_generation' $type * @param 'transparent'|'opaque'|'auto' $background * @param 'jpeg'|'png'|'webp' $outputFormat * @param 'low'|'medium'|'high'|'auto' $quality * @param "1024x1024"|"1024x1536"|"1536x1024"|'auto' $size */ private function __construct( public readonly string $type, public readonly string $background, public readonly ?ImageGenerationInputImageMask $inputImageMask, public readonly ?string $model, public readonly string $moderation, public readonly int $outputCompression, public readonly string $outputFormat, public readonly int $partialImages, public readonly string $quality, public readonly string $size, ) {} /** * @param ImageGenerationToolType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], background: $attributes['background'], inputImageMask: isset($attributes['input_image_mask']) ? ImageGenerationInputImageMask::from($attributes['input_image_mask']) : null, model: $attributes['model'] ?? null, moderation: $attributes['moderation'], outputCompression: $attributes['output_compression'], outputFormat: $attributes['output_format'], partialImages: $attributes['partial_images'] ?? 0, quality: $attributes['quality'], size: $attributes['size'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'background' => $this->background, 'input_image_mask' => $this->inputImageMask?->toArray(), 'model' => $this->model, 'moderation' => $this->moderation, 'output_compression' => $this->outputCompression, 'output_format' => $this->outputFormat, 'partial_images' => $this->partialImages, 'quality' => $this->quality, 'size' => $this->size, ]; } } PKS%W]U/††4client/src/Responses/Responses/Tool/FunctionTool.phpnu„[µü¤, strict: bool, type: 'function', description: ?string} * * @implements ResponseContract */ final class FunctionTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $parameters * @param 'function' $type */ private function __construct( public readonly string $name, public readonly array $parameters, public readonly bool $strict, public readonly string $type, public readonly ?string $description = null, ) {} /** * @param FunctionToolType $attributes */ public static function from(array $attributes): self { return new self( name: $attributes['name'], parameters: $attributes['parameters'], strict: $attributes['strict'], type: $attributes['type'], description: $attributes['description'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'parameters' => $this->parameters, 'strict' => $this->strict, 'type' => $this->type, 'description' => $this->description, ]; } } PKS%W]ƒª€zEclient/src/Responses/Responses/Tool/ImageGenerationInputImageMask.phpnu„[µü¤ */ final class ImageGenerationInputImageMask implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly ?string $fileId, public readonly ?string $imageUrl, ) {} /** * @param InputImageMaskType $attributes */ public static function from(array $attributes): self { return new self( fileId: $attributes['file_id'] ?? null, imageUrl: $attributes['image_url'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'image_url' => $this->imageUrl, ]; } } PKS%W]këiw..Bclient/src/Responses/Responses/Tool/FileSearchComparisonFilter.phpnu„[µü¤ */ final class FileSearchComparisonFilter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'eq'|'ne'|'gt'|'gte'|'lt'|'lte' $type */ private function __construct( public readonly string $key, public readonly string $type, public readonly string|int|bool $value, ) {} /** * @param ComparisonFilterType $attributes */ public static function from(array $attributes): self { return new self( key: $attributes['key'], type: $attributes['type'], value: $attributes['value'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'key' => $this->key, 'type' => $this->type, 'value' => $this->value, ]; } } PKS%W]m9%((:client/src/Responses/Responses/Tool/McpToolNamesFilter.phpnu„[µü¤} * * @implements ResponseContract */ final class McpToolNamesFilter implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $toolNames */ private function __construct( public readonly array $toolNames, ) {} /** * @param McpToolNamesFilterType $attributes */ public static function from(array $attributes): self { return new self( toolNames: $attributes['tool_names'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'tool_names' => $this->toolNames, ]; } } PKS%W]Rˆ‚6client/src/Responses/Responses/CreateResponseError.phpnu„[µü¤ */ final class CreateResponseError implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $code, public readonly string $message ) {} /** * @param ErrorType $attributes */ public static function from(array $attributes): self { return new self( code: $attributes['code'], message: $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'message' => $this->message, ]; } } PKS%W]ùм��7client/src/Responses/Responses/CreateResponseFormat.phpnu„[µü¤ */ final class CreateResponseFormat implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly TextFormat|JsonSchemaFormat|JsonObjectFormat $format ) {} /** * @param ResponseFormatType $attributes */ public static function from(array $attributes): self { $format = match ($attributes['format']['type']) { 'text' => TextFormat::from($attributes['format']), 'json_schema' => JsonSchemaFormat::from($attributes['format']), 'json_object' => JsonObjectFormat::from($attributes['format']), }; return new self( format: $format ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'format' => $this->format->toArray(), ]; } } PKS%W]X�ŠŠ:client/src/Responses/Responses/CreateResponseReasoning.phpnu„[µü¤ */ final class CreateResponseReasoning implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly ?string $effort, public readonly ?string $generate_summary, ) {} /** * @param ReasoningType $attributes */ public static function from(array $attributes): self { return new self( effort: $attributes['effort'] ?? null, generate_summary: $attributes['generate_summary'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'effort' => $this->effort, 'generate_summary' => $this->generate_summary, ]; } } PKS%W]S«�‚7‚71client/src/Responses/Responses/CreateResponse.phpnu„[µü¤|string|null * @phpstan-type ToolChoiceType 'none'|'auto'|'required'|FunctionToolChoiceType|HostedToolChoiceType * @phpstan-type ToolsType array * @phpstan-type OutputType array * @phpstan-type CreateResponseType array{id: string, object: 'response', created_at: int, status: 'completed'|'failed'|'in_progress'|'incomplete', error: ErrorType|null, incomplete_details: IncompleteDetailsType|null, instructions: InstructionsType, max_output_tokens: int|null, model: string, output: OutputType, output_text: string|null, parallel_tool_calls: bool, previous_response_id: string|null, prompt: ReferencePromptObjectType|null, reasoning: ReasoningType|null, store: bool, temperature: float|null, text: ResponseFormatType, tool_choice: ToolChoiceType, tools: ToolsType, top_p: float|null, truncation: 'auto'|'disabled'|null, usage: UsageType|null, user: string|null, metadata: array|null} * * @implements ResponseContract */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param 'response' $object * @param 'completed'|'failed'|'in_progress'|'incomplete' $status * @param array|string|null $instructions * @param array $output * @param array $tools * @param 'auto'|'disabled'|null $truncation * @param array $metadata */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $createdAt, public readonly string $status, public readonly ?CreateResponseError $error, public readonly ?CreateResponseIncompleteDetails $incompleteDetails, public readonly array|string|null $instructions, public readonly ?int $maxOutputTokens, public readonly string $model, public readonly array $output, public readonly ?string $outputText, public readonly bool $parallelToolCalls, public readonly ?string $previousResponseId, public readonly ?ReferencePromptObject $prompt, public readonly ?CreateResponseReasoning $reasoning, public readonly bool $store, public readonly ?float $temperature, public readonly CreateResponseFormat $text, public readonly string|FunctionToolChoice|HostedToolChoice $toolChoice, public readonly array $tools, public readonly ?float $topP, public readonly ?string $truncation, public readonly ?CreateResponseUsage $usage, public readonly ?string $user, public readonly array $metadata, private readonly MetaInformation $meta, ) {} /** * @param CreateResponseType $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $output = array_map( fn (array $output): OutputMessage|OutputComputerToolCall|OutputFileSearchToolCall|OutputWebSearchToolCall|OutputFunctionToolCall|OutputReasoning|OutputMcpListTools|OutputMcpApprovalRequest|OutputMcpCall|OutputImageGenerationToolCall|OutputCodeInterpreterToolCall => match ($output['type']) { 'message' => OutputMessage::from($output), 'file_search_call' => OutputFileSearchToolCall::from($output), 'function_call' => OutputFunctionToolCall::from($output), 'web_search_call' => OutputWebSearchToolCall::from($output), 'computer_call' => OutputComputerToolCall::from($output), 'reasoning' => OutputReasoning::from($output), 'mcp_list_tools' => OutputMcpListTools::from($output), 'mcp_approval_request' => OutputMcpApprovalRequest::from($output), 'mcp_call' => OutputMcpCall::from($output), 'image_generation_call' => OutputImageGenerationToolCall::from($output), 'code_interpreter_call' => OutputCodeInterpreterToolCall::from($output), }, $attributes['output'], ); $toolChoice = is_array($attributes['tool_choice']) ? match ($attributes['tool_choice']['type']) { 'file_search', 'web_search_preview', 'computer_use_preview' => HostedToolChoice::from($attributes['tool_choice']), 'function' => FunctionToolChoice::from($attributes['tool_choice']), } : $attributes['tool_choice']; $tools = array_map( fn (array $tool): ComputerUseTool|FileSearchTool|FunctionTool|WebSearchTool|ImageGenerationTool|RemoteMcpTool|CodeInterpreterTool => match ($tool['type']) { 'file_search' => FileSearchTool::from($tool), 'web_search_preview', 'web_search_preview_2025_03_11' => WebSearchTool::from($tool), 'function' => FunctionTool::from($tool), 'computer_use_preview' => ComputerUseTool::from($tool), 'image_generation' => ImageGenerationTool::from($tool), 'mcp' => RemoteMcpTool::from($tool), 'code_interpreter' => CodeInterpreterTool::from($tool), }, $attributes['tools'], ); // Remake the sdk only property output_text. $texts = []; foreach ($output as $item) { if ($item instanceof OutputMessage) { foreach ($item->content as $content) { if ($content instanceof OutputMessageContentOutputText) { $texts[] = $content->text; } } } } return new self( id: $attributes['id'], object: $attributes['object'], createdAt: $attributes['created_at'], status: $attributes['status'], error: isset($attributes['error']) ? CreateResponseError::from($attributes['error']) : null, incompleteDetails: isset($attributes['incomplete_details']) ? CreateResponseIncompleteDetails::from($attributes['incomplete_details']) : null, instructions: $attributes['instructions'], maxOutputTokens: $attributes['max_output_tokens'], model: $attributes['model'], output: $output, outputText: empty($texts) ? null : implode(' ', $texts), parallelToolCalls: $attributes['parallel_tool_calls'], previousResponseId: $attributes['previous_response_id'], prompt: isset($attributes['prompt']) ? ReferencePromptObject::from($attributes['prompt']) : null, reasoning: isset($attributes['reasoning']) ? CreateResponseReasoning::from($attributes['reasoning']) : null, store: $attributes['store'], temperature: $attributes['temperature'], text: CreateResponseFormat::from($attributes['text']), toolChoice: $toolChoice, tools: $tools, topP: $attributes['top_p'], truncation: $attributes['truncation'], usage: isset($attributes['usage']) ? CreateResponseUsage::from($attributes['usage']) : null, user: $attributes['user'] ?? null, metadata: $attributes['metadata'] ?? [], meta: $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { // https://github.com/phpstan/phpstan/issues/8438 // @phpstan-ignore-next-line return [ 'id' => $this->id, 'object' => $this->object, 'created_at' => $this->createdAt, 'status' => $this->status, 'error' => $this->error?->toArray(), 'incomplete_details' => $this->incompleteDetails?->toArray(), 'instructions' => $this->instructions, 'max_output_tokens' => $this->maxOutputTokens, 'metadata' => $this->metadata ?? [], 'model' => $this->model, 'output' => array_map( fn (OutputMessage|OutputComputerToolCall|OutputFileSearchToolCall|OutputWebSearchToolCall|OutputFunctionToolCall|OutputReasoning|OutputMcpListTools|OutputMcpApprovalRequest|OutputMcpCall|OutputImageGenerationToolCall|OutputCodeInterpreterToolCall $output): array => $output->toArray(), $this->output ), 'parallel_tool_calls' => $this->parallelToolCalls, 'previous_response_id' => $this->previousResponseId, 'prompt' => $this->prompt?->toArray(), 'reasoning' => $this->reasoning?->toArray(), 'store' => $this->store, 'temperature' => $this->temperature, 'text' => $this->text->toArray(), 'tool_choice' => is_string($this->toolChoice) ? $this->toolChoice : $this->toolChoice->toArray(), 'tools' => array_map( fn (ComputerUseTool|FileSearchTool|FunctionTool|WebSearchTool|ImageGenerationTool|RemoteMcpTool|CodeInterpreterTool $tool): array => $tool->toArray(), $this->tools ), 'top_p' => $this->topP, 'truncation' => $this->truncation, 'usage' => $this->usage?->toArray(), 'user' => $this->user, 'output_text' => $this->outputText, ]; } } PKS%W]à�ÎÎBclient/src/Responses/Responses/CreateResponseIncompleteDetails.phpnu„[µü¤ */ final class CreateResponseIncompleteDetails implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $reason, ) {} /** * @param IncompleteDetailsType $attributes */ public static function from(array $attributes): self { return new self( reason: $attributes['reason'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'reason' => $this->reason, ]; } } PKS%W]']1ZNN6client/src/Responses/Responses/CreateResponseUsage.phpnu„[µü¤ */ final class CreateResponseUsage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $inputTokens, public readonly CreateResponseUsageInputTokenDetails $inputTokensDetails, public readonly int $outputTokens, public readonly CreateResponseUsageOutputTokenDetails $outputTokensDetails, public readonly int $totalTokens, ) {} /** * @param UsageType $attributes */ public static function from(array $attributes): self { return new self( inputTokens: $attributes['input_tokens'], inputTokensDetails: CreateResponseUsageInputTokenDetails::from($attributes['input_tokens_details']), outputTokens: $attributes['output_tokens'], outputTokensDetails: CreateResponseUsageOutputTokenDetails::from($attributes['output_tokens_details']), totalTokens: $attributes['total_tokens'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'input_tokens' => $this->inputTokens, 'input_tokens_details' => $this->inputTokensDetails->toArray(), 'output_tokens' => $this->outputTokens, 'output_tokens_details' => $this->outputTokensDetails->toArray(), 'total_tokens' => $this->totalTokens, ]; } } PKS%W]L=Šww@client/src/Responses/Responses/Output/OutputReasoningSummary.phpnu„[µü¤ */ final class OutputReasoningSummary implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'summary_text' $type */ private function __construct( public readonly string $text, public readonly string $type, ) {} /** * @param ReasoningSummaryType $attributes */ public static function from(array $attributes): self { return new self( text: $attributes['text'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'text' => $this->text, 'type' => $this->type, ]; } } PKS%W]¡€&Â@@@client/src/Responses/Responses/Output/OutputComputerToolCall.phpnu„[µü¤, status: 'in_progress'|'completed'|'incomplete', type: 'computer_call'} * * @implements ResponseContract */ final class OutputComputerToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $pendingSafetyChecks * @param 'in_progress'|'completed'|'incomplete' $status * @param 'computer_call' $type */ private function __construct( public readonly Click|DoubleClick|Drag|KeyPress|Move|Screenshot|Scroll|Type|Wait $action, public readonly string $callId, public readonly string $id, public readonly array $pendingSafetyChecks, public readonly string $status, public readonly string $type, ) {} /** * @param OutputComputerToolCallType $attributes */ public static function from(array $attributes): self { $action = match ($attributes['action']['type']) { 'click' => Click::from($attributes['action']), 'double_click' => DoubleClick::from($attributes['action']), 'drag' => Drag::from($attributes['action']), 'keypress' => KeyPress::from($attributes['action']), 'move' => Move::from($attributes['action']), 'screenshot' => Screenshot::from($attributes['action']), 'scroll' => Scroll::from($attributes['action']), 'type' => Type::from($attributes['action']), 'wait' => Wait::from($attributes['action']), }; $pendingSafetyChecks = array_map( fn (array $safetyCheck): OutputComputerPendingSafetyCheck => OutputComputerPendingSafetyCheck::from($safetyCheck), $attributes['pending_safety_checks'] ); return new self( action: $action, callId: $attributes['call_id'], id: $attributes['id'], pendingSafetyChecks: $pendingSafetyChecks, status: $attributes['status'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'call_id' => $this->callId, 'id' => $this->id, 'action' => $this->action->toArray(), 'pending_safety_checks' => array_map( fn (OutputComputerPendingSafetyCheck $safetyCheck): array => $safetyCheck->toArray(), $this->pendingSafetyChecks, ), 'status' => $this->status, ]; } } PKS%W]žm˜�Š Š 7client/src/Responses/Responses/Output/OutputMessage.phpnu„[µü¤, id: string, role: 'assistant', status: 'in_progress'|'completed'|'incomplete', type: 'message'} * * @implements ResponseContract */ final class OutputMessage implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $content * @param 'assistant' $role * @param 'in_progress'|'completed'|'incomplete' $status * @param 'message' $type */ private function __construct( public readonly array $content, public readonly string $id, public readonly string $role, public readonly string $status, public readonly string $type, ) {} /** * @param OutputMessageType $attributes */ public static function from(array $attributes): self { $content = array_map( fn (array $item): OutputMessageContentOutputText|OutputMessageContentRefusal => match ($item['type']) { 'output_text' => OutputMessageContentOutputText::from($item), 'refusal' => OutputMessageContentRefusal::from($item), }, $attributes['content'], ); return new self( content: $content, id: $attributes['id'], role: $attributes['role'], status: $attributes['status'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'content' => array_map( fn (OutputMessageContentOutputText|OutputMessageContentRefusal $item): array => $item->toArray(), $this->content, ), 'id' => $this->id, 'role' => $this->role, 'status' => $this->status, 'type' => $this->type, ]; } } PKS%W]–¥R\++@client/src/Responses/Responses/Output/OutputFunctionToolCall.phpnu„[µü¤ */ final class OutputFunctionToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'function_call' $type * @param 'in_progress'|'completed'|'incomplete' $status */ private function __construct( public readonly string $arguments, public readonly string $callId, public readonly string $name, public readonly string $type, public readonly string $id, public readonly string $status, ) {} /** * @param OutputFunctionToolCallType $attributes */ public static function from(array $attributes): self { return new self( arguments: $attributes['arguments'], callId: $attributes['call_id'], name: $attributes['name'], type: $attributes['type'], id: $attributes['id'], status: $attributes['status'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'arguments' => $this->arguments, 'call_id' => $this->callId, 'name' => $this->name, 'type' => $this->type, 'id' => $this->id, 'status' => $this->status, ]; } } PKS%W]оïü££Hclient/src/Responses/Responses/Output/OutputFileSearchToolCallResult.phpnu„[µü¤, file_id: string, filename: string, score: float, text: string} * * @implements ResponseContract */ final class OutputFileSearchToolCallResult implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $attributes */ private function __construct( public readonly array $attributes, public readonly string $fileId, public readonly string $filename, public readonly float $score, public readonly string $text, ) {} /** * @param OutputFileSearchToolCallResultType $attributes */ public static function from(array $attributes): self { return new self( attributes: $attributes['attributes'], fileId: $attributes['file_id'], filename: $attributes['filename'], score: $attributes['score'], text: $attributes['text'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'attributes' => $this->attributes, 'file_id' => $this->fileId, 'filename' => $this->filename, 'score' => $this->score, 'text' => $this->text, ]; } } PKS%W]²ô²OLL`client/src/Responses/Responses/Output/OutputMessageContentOutputTextAnnotationsContainerFile.phpnu„[µü¤ */ final class OutputMessageContentOutputTextAnnotationsContainerFile implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'container_file_citation' $type */ private function __construct( public readonly string $fileId, public readonly string $type, public readonly ?string $text, public readonly ?int $startIndex, public readonly ?int $endIndex, ) {} /** * @param ContainerFileType $attributes */ public static function from(array $attributes): self { return new self( fileId: $attributes['file_id'], type: $attributes['type'], text: $attributes['text'] ?? null, startIndex: $attributes['start_index'] ?? null, endIndex: $attributes['end_index'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { $result = [ 'file_id' => $this->fileId, 'type' => $this->type, ]; if ($this->text !== null) { $result['text'] = $this->text; } if ($this->startIndex !== null) { $result['start_index'] = $this->startIndex; } if ($this->endIndex !== null) { $result['end_index'] = $this->endIndex; } return $result; } } PKS%W]Uq««9client/src/Responses/Responses/Output/OutputReasoning.phpnu„[µü¤, type: 'reasoning', encrypted_content: string|null, status?: 'in_progress'|'completed'|'incomplete'|null} * * @implements ResponseContract */ final class OutputReasoning implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $summary * @param 'reasoning' $type * @param 'in_progress'|'completed'|'incomplete'|null $status */ private function __construct( public readonly string $id, public readonly array $summary, public readonly string $type, public readonly ?string $encryptedContent, public readonly ?string $status, ) {} /** * @param OutputReasoningType $attributes */ public static function from(array $attributes): self { $summary = array_map( static fn (array $summary): OutputReasoningSummary => OutputReasoningSummary::from($summary), $attributes['summary'], ); return new self( id: $attributes['id'], summary: $summary, type: $attributes['type'], encryptedContent: $attributes['encrypted_content'] ?? null, status: $attributes['status'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'summary' => array_map( static fn (OutputReasoningSummary $summary): array => $summary->toArray(), $this->summary, ), 'type' => $this->type, 'encrypted_content' => $this->encryptedContent, 'status' => $this->status, ]; } } PKS%W]ŸäûœœQclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionMove.phpnu„[µü¤ */ final class OutputComputerActionMove implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'move' $type */ private function __construct( public readonly string $type, public readonly int $x, public readonly int $y, ) {} /** * @param MoveType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], x: $attributes['x'], y: $attributes['y'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'x' => $this->x, 'y' => $this->y, ]; } } PKS%W]Ú2³ôôWclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionScreenshot.phpnu„[µü¤ */ final class OutputComputerActionScreenshot implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'screenshot' $type */ private function __construct( public readonly string $type, ) {} /** * @param ScreenshotType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]¦!î¥ÐÐSclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionScroll.phpnu„[µü¤ */ final class OutputComputerActionScroll implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'scroll' $type */ private function __construct( public readonly int $scrollX, public readonly int $scrollY, public readonly string $type, public readonly int $x, public readonly int $y, ) {} /** * @param ScrollType $attributes */ public static function from(array $attributes): self { return new self( scrollX: $attributes['scroll_x'], scrollY: $attributes['scroll_y'], type: $attributes['type'], x: $attributes['x'], y: $attributes['y'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'scroll_x' => $this->scrollX, 'scroll_y' => $this->scrollY, 'type' => $this->type, 'x' => $this->x, 'y' => $this->y, ]; } } PKS%W]dN’ZHHQclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionType.phpnu„[µü¤ */ final class OutputComputerActionType implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'type' $type */ private function __construct( public readonly string $text, public readonly string $type, ) {} /** * @param TypeType $attributes */ public static function from(array $attributes): self { return new self( text: $attributes['text'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'text' => $this->text, 'type' => $this->type, ]; } } PKS%W]1#½hççYclient/src/Responses/Responses/Output/ComputerAction/OutputComputerPendingSafetyCheck.phpnu„[µü¤ */ final class OutputComputerPendingSafetyCheck implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $code, public readonly string $id, public readonly string $message, ) {} /** * @param PendingSafetyCheckType $attributes */ public static function from(array $attributes): self { return new self( code: $attributes['code'], id: $attributes['id'], message: $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'id' => $this->id, 'message' => $this->message, ]; } } PKS%W]¡¥‚ÊÊQclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionWait.phpnu„[µü¤ */ final class OutputComputerActionWait implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'wait' $type */ private function __construct( public readonly string $type, ) {} /** * @param WaitType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]í+ìË××Xclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionDoubleClick.phpnu„[µü¤ */ final class OutputComputerActionDoubleClick implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'double_click' $type */ private function __construct( public readonly string $type, public readonly float $x, public readonly float $y, ) {} /** * @param DoubleClickType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], x: $attributes['x'], y: $attributes['y'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'x' => $this->x, 'y' => $this->y, ]; } } PKS%W]¼37˜˜Uclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionKeyPress.phpnu„[µü¤, type: 'keypress'} * * @implements ResponseContract */ final class OutputComputerActionKeyPress implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $keys * @param 'keypress' $type */ private function __construct( public readonly array $keys, public readonly string $type, ) {} /** * @param KeyPressType $attributes */ public static function from(array $attributes): self { return new self( keys: $attributes['keys'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'keys' => $this->keys, 'type' => $this->type, ]; } } PKS%W]?w”õõQclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionDrag.phpnu„[µü¤, type: 'drag'} * * @implements ResponseContract */ final class OutputComputerActionDrag implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $path * @param 'drag' $type */ private function __construct( public readonly array $path, public readonly string $type, ) {} /** * @param DragType $attributes */ public static function from(array $attributes): self { $paths = array_map( static fn (array $path): OutputComputerDragPath => OutputComputerDragPath::from($path), $attributes['path'], ); return new self( path: $paths, type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'path' => array_map( static fn (OutputComputerDragPath $path): array => $path->toArray(), $this->path, ), 'type' => $this->type, ]; } } PKS%W]Í=””Rclient/src/Responses/Responses/Output/ComputerAction/OutputComputerActionClick.phpnu„[µü¤ */ final class OutputComputerActionClick implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'left'|'right'|'wheel'|'back'|'forward' $button * @param 'click' $type */ private function __construct( public readonly string $button, public readonly string $type, public readonly int $x, public readonly int $y, ) {} /** * @param ClickType $attributes */ public static function from(array $attributes): self { return new self( button: $attributes['button'], type: $attributes['type'], x: $attributes['x'], y: $attributes['y'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'button' => $this->button, 'type' => $this->type, 'x' => $this->x, 'y' => $this->y, ]; } } PKS%W]c\ùùOclient/src/Responses/Responses/Output/ComputerAction/OutputComputerDragPath.phpnu„[µü¤ */ final class OutputComputerDragPath implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly int $x, public readonly int $y, ) {} /** * @param DragPathType $attributes */ public static function from(array $attributes): self { return new self( x: $attributes['x'], y: $attributes['y'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'x' => $this->x, 'y' => $this->y, ]; } } PKS%W]w,ü„ä ä Gclient/src/Responses/Responses/Output/OutputCodeInterpreterToolCall.phpnu„[µü¤|null * @phpstan-type OutputCodeInterpreterToolCallType array{code: string, id: string, outputs: OutputType, status: string, type: 'code_interpreter_call', container_id: string} * * @implements ResponseContract */ final class OutputCodeInterpreterToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array|null $outputs * @param 'code_interpreter_call' $type */ private function __construct( public readonly string $code, public readonly string $id, public readonly ?array $outputs, public readonly string $status, public readonly string $type, public readonly string $containerId, ) {} /** * @param OutputCodeInterpreterToolCallType $attributes */ public static function from(array $attributes): self { $outputs = null; if (is_array($attributes['outputs'])) { $outputs = array_map( static fn (array $output): CodeFileOutput|CodeTextOutput => match ($output['type']) { 'files' => CodeFileOutput::from($output), 'logs' => CodeTextOutput::from($output), }, $attributes['outputs'] ); } return new self( code: $attributes['code'], id: $attributes['id'], outputs: $outputs, status: $attributes['status'], type: $attributes['type'], containerId: $attributes['container_id'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'code' => $this->code, 'id' => $this->id, 'outputs' => $this->outputs ? array_map(static fn (CodeFileOutput|CodeTextOutput $output): array => $output->toArray(), $this->outputs) : null, 'status' => $this->status, 'type' => $this->type, 'container_id' => $this->containerId, ]; } } PKS%W]òî·¥E E Hclient/src/Responses/Responses/Output/OutputMessageContentOutputText.phpnu„[µü¤, text: string, type: 'output_text'} * * @implements ResponseContract */ final class OutputMessageContentOutputText implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $annotations * @param 'output_text' $type */ private function __construct( public readonly array $annotations, public readonly string $text, public readonly string $type ) {} /** * @param OutputTextType $attributes */ public static function from(array $attributes): self { $annotations = array_map( fn (array $annotation): AnnotationFileCitation|AnnotationFilePath|AnnotationUrlCitation|AnnotationContainerFile => match ($annotation['type']) { 'file_citation' => AnnotationFileCitation::from($annotation), 'file_path' => AnnotationFilePath::from($annotation), 'url_citation' => AnnotationUrlCitation::from($annotation), 'container_file_citation' => AnnotationContainerFile::from($annotation), }, $attributes['annotations'], ); return new self( annotations: $annotations, text: $attributes['text'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'annotations' => array_map( fn (AnnotationContainerFile|AnnotationFileCitation|AnnotationFilePath|AnnotationUrlCitation $annotation): array => $annotation->toArray(), $this->annotations, ), 'text' => $this->text, 'type' => $this->type, ]; } } PKS%W]Y‚i~Bclient/src/Responses/Responses/Output/OutputMcpApprovalRequest.phpnu„[µü¤ */ final class OutputMcpApprovalRequest implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'mcp_approval_request' $type */ private function __construct( public readonly string $id, public readonly string $serverLabel, public readonly string $name, public readonly string $arguments, public readonly string $type, ) {} /** * @param OutputMcpApprovalRequestType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], serverLabel: $attributes['server_label'], name: $attributes['name'], arguments: $attributes['arguments'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'server_label' => $this->serverLabel, 'type' => $this->type, 'arguments' => $this->arguments, 'name' => $this->name, ]; } } PKS%W]4mþçggHclient/src/Responses/Responses/Output/CodeInterpreter/CodeTextOutput.phpnu„[µü¤ */ final class CodeTextOutput implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'logs' $type */ private function __construct( public readonly string $logs, public readonly string $type, ) {} /** * @param CodeTextOutputType $attributes */ public static function from(array $attributes): self { return new self( logs: $attributes['logs'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'logs' => $this->logs, ]; } } PKS%W]y'Hclient/src/Responses/Responses/Output/CodeInterpreter/CodeFileOutput.phpnu„[µü¤, type: 'files'} * * @implements ResponseContract */ final class CodeFileOutput implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $files * @param 'files' $type */ private function __construct( public readonly array $files, public readonly string $type, ) {} /** * @param CodeFileOutputType $attributes */ public static function from(array $attributes): self { $files = array_map( static fn (array $file): CodeFileObject => CodeFileObject::from($file), $attributes['files'] ); return new self( files: $files, type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, 'files' => array_map( static fn (CodeFileObject $file): array => $file->toArray(), $this->files ), ]; } } PKS%W]»�“äffHclient/src/Responses/Responses/Output/CodeInterpreter/CodeFileObject.phpnu„[µü¤ */ final class CodeFileObject implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; private function __construct( public readonly string $fileId, public readonly string $mimeType, ) {} /** * @param CodeFileObjectType $attributes */ public static function from(array $attributes): self { return new self( fileId: $attributes['file_id'], mimeType: $attributes['mime_type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'mime_type' => $this->mimeType, ]; } } PKS%W]ªx£âll_client/src/Responses/Responses/Output/OutputMessageContentOutputTextAnnotationsFileCitation.phpnu„[µü¤ */ final class OutputMessageContentOutputTextAnnotationsFileCitation implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_citation' $type */ private function __construct( public readonly string $fileId, public readonly int $index, public readonly string $type, ) {} /** * @param array{file_id: string, index: int, type: 'file_citation'} $attributes */ public static function from(array $attributes): self { return new self( fileId: $attributes['file_id'], index: $attributes['index'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'index' => $this->index, 'type' => $this->type, ]; } } PKS%W]Øa¬Þþþ[client/src/Responses/Responses/Output/OutputMessageContentOutputTextAnnotationsFilePath.phpnu„[µü¤ */ final class OutputMessageContentOutputTextAnnotationsFilePath implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'file_path' $type */ private function __construct( public readonly string $fileId, public readonly int $index, public readonly string $type, ) {} /** * @param FilePathType $attributes */ public static function from(array $attributes): self { return new self( fileId: $attributes['file_id'], index: $attributes['index'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'file_id' => $this->fileId, 'index' => $this->index, 'type' => $this->type, ]; } } PKS%W]õÀD>] ] Bclient/src/Responses/Responses/Output/OutputFileSearchToolCall.phpnu„[µü¤, status: 'in_progress'|'searching'|'incomplete'|'failed', type: 'file_search_call', results: ?array} * * @implements ResponseContract */ final class OutputFileSearchToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $queries * @param 'in_progress'|'searching'|'incomplete'|'failed' $status * @param 'file_search_call' $type * @param ?array $results */ private function __construct( public readonly string $id, public readonly array $queries, public readonly string $status, public readonly string $type, public readonly ?array $results = null, ) {} /** * @param OutputFileSearchToolCallType $attributes */ public static function from(array $attributes): self { $results = isset($attributes['results']) ? array_map( fn (array $result): OutputFileSearchToolCallResult => OutputFileSearchToolCallResult::from($result), $attributes['results'] ) : null; return new self( id: $attributes['id'], queries: $attributes['queries'], status: $attributes['status'], type: $attributes['type'], results: $results, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'queries' => $this->queries, 'status' => $this->status, 'type' => $this->type, 'results' => isset($this->results) ? array_map( fn (OutputFileSearchToolCallResult $result) => $result->toArray(), $this->results ) : null, ]; } } PKS%W]Ü7AáááGclient/src/Responses/Responses/Output/OutputImageGenerationToolCall.phpnu„[µü¤ */ final class OutputImageGenerationToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'image_generation_call' $type */ private function __construct( public readonly string $id, public readonly ?string $result, public readonly string $status, public readonly string $type, ) {} /** * @param OutputImageGenerationToolCallType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], result: $attributes['result'] ?? null, status: $attributes['status'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'result' => $this->result, 'status' => $this->status, 'type' => $this->type, ]; } } PKS%W]YBªEclient/src/Responses/Responses/Output/OutputMessageContentRefusal.phpnu„[µü¤ */ final class OutputMessageContentRefusal implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'refusal' $type */ private function __construct( public readonly string $refusal, public readonly string $type, ) {} /** * @param ContentRefusalType $attributes */ public static function from(array $attributes): self { return new self( refusal: $attributes['refusal'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'refusal' => $this->refusal, 'type' => $this->type, ]; } } PKS%W]¹bLrr<client/src/Responses/Responses/Output/OutputMcpListTools.phpnu„[µü¤} * * @implements ResponseContract */ final class OutputMcpListTools implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'mcp_list_tools' $type * @param array $tools */ private function __construct( public readonly string $id, public readonly string $serverLabel, public readonly string $type, public readonly array $tools, ) {} /** * @param OutputMcpListToolsType $attributes */ public static function from(array $attributes): self { $tools = array_map( fn (array $result): OutputMcpListToolsTool => OutputMcpListToolsTool::from($result), $attributes['tools'] ); return new self( id: $attributes['id'], serverLabel: $attributes['server_label'], type: $attributes['type'], tools: $tools, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'server_label' => $this->serverLabel, 'type' => $this->type, 'tools' => array_map( fn (OutputMcpListToolsTool $tool) => $tool->toArray(), $this->tools ), ]; } } PKS%W]°G"ii7client/src/Responses/Responses/Output/OutputMcpCall.phpnu„[µü¤ */ final class OutputMcpCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'mcp_call' $type */ private function __construct( public readonly string $id, public readonly string $serverLabel, public readonly string $type, public readonly string $arguments, public readonly string $name, public readonly ?string $approvalRequestId = null, public readonly ?string $error = null, public readonly ?string $output = null, ) {} /** * @param OutputMcpCallType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], serverLabel: $attributes['server_label'], type: $attributes['type'], arguments: $attributes['arguments'], name: $attributes['name'], approvalRequestId: $attributes['approval_request_id'], error: $attributes['error'], output: $attributes['output'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'server_label' => $this->serverLabel, 'type' => $this->type, 'arguments' => $this->arguments, 'name' => $this->name, 'approval_request_id' => $this->approvalRequestId, 'error' => $this->error, 'output' => $this->output, ]; } } PKS%W]œœUë––@client/src/Responses/Responses/Output/OutputMcpListToolsTool.phpnu„[µü¤|null, description: ?string, input_schema: array, name: string} * * @implements ResponseContract */ final class OutputMcpListToolsTool implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $inputSchema * @param array|null $annotations */ private function __construct( public readonly string $name, public readonly array $inputSchema, public readonly ?string $description = null, public readonly ?array $annotations = null, ) {} /** * @param OutputMcpListToolsToolType $attributes */ public static function from(array $attributes): self { return new self( name: $attributes['name'], inputSchema: $attributes['input_schema'], description: $attributes['description'] ?? null, annotations: $attributes['annotations'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'input_schema' => $this->inputSchema, 'description' => $this->description, 'annotations' => $this->annotations, ]; } } PKS%W]{åº[HH^client/src/Responses/Responses/Output/OutputMessageContentOutputTextAnnotationsUrlCitation.phpnu„[µü¤ */ final class OutputMessageContentOutputTextAnnotationsUrlCitation implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'url_citation' $type */ private function __construct( public readonly int $endIndex, public readonly int $startIndex, public readonly string $title, public readonly string $type, public readonly string $url, ) {} /** * @param UrlCitationType $attributes */ public static function from(array $attributes): self { return new self( endIndex: $attributes['end_index'], startIndex: $attributes['start_index'], title: $attributes['title'], type: $attributes['type'], url: $attributes['url'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'end_index' => $this->endIndex, 'start_index' => $this->startIndex, 'title' => $this->title, 'type' => $this->type, 'url' => $this->url, ]; } } PKS%W]Ã¥;ëAclient/src/Responses/Responses/Output/OutputWebSearchToolCall.phpnu„[µü¤ */ final class OutputWebSearchToolCall implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'web_search_call' $type */ private function __construct( public readonly string $id, public readonly string $status, public readonly string $type, ) {} /** * @param OutputWebSearchToolCallType $attributes */ public static function from(array $attributes): self { return new self( id: $attributes['id'], status: $attributes['status'], type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'status' => $this->status, 'type' => $this->type, ]; } } PKS%W]"€C””:client/src/Responses/Responses/Format/JsonSchemaFormat.phpnu„[µü¤, type: 'json_schema', description: ?string, strict: ?bool} * * @implements ResponseContract */ final class JsonSchemaFormat implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param array $schema * @param 'json_schema' $type */ private function __construct( public readonly string $name, public readonly array $schema, public readonly string $type, public readonly ?string $description, public readonly ?bool $strict = null, ) {} /** * @param JsonSchemaFormatType $attributes */ public static function from(array $attributes): self { return new self( name: $attributes['name'], schema: $attributes['schema'], type: $attributes['type'], description: $attributes['description'] ?? null, strict: $attributes['strict'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'name' => $this->name, 'schema' => $this->schema, 'type' => $this->type, 'description' => $this->description, 'strict' => $this->strict, ]; } } PKS%W]�TuÝÅÅ4client/src/Responses/Responses/Format/TextFormat.phpnu„[µü¤ */ final class TextFormat implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'text' $type */ private function __construct( public readonly string $type, ) {} /** * @param TextFormatType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]º^c¨ññ:client/src/Responses/Responses/Format/JsonObjectFormat.phpnu„[µü¤ */ final class JsonObjectFormat implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; /** * @param 'json_object' $type */ private function __construct( public readonly string $type, ) {} /** * @param JsonObjectFormatType $attributes */ public static function from(array $attributes): self { return new self( type: $attributes['type'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'type' => $this->type, ]; } } PKS%W]ÜNÓàà+client/src/Responses/Files/ListResponse.phpnu„[µü¤|string|null}>}> */ final class ListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible|string|null}>}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array|string|null}>} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): RetrieveResponse => RetrieveResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (RetrieveResponse $response): array => $response->toArray(), $this->data, ), ]; } } PKS%W]Mòë -client/src/Responses/Files/DeleteResponse.phpnu„[µü¤ */ final class DeleteResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; private function __construct( public readonly string $id, public readonly string $object, public readonly bool $deleted, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, deleted: bool} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['deleted'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'deleted' => $this->deleted, ]; } } PKS%W]ì]±v v /client/src/Responses/Files/RetrieveResponse.phpnu„[µü¤|string|null}> */ final class RetrieveResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible|string|null}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array|null $statusDetails */ private function __construct( public readonly string $id, public readonly string $object, public readonly ?int $bytes, public readonly int $createdAt, public readonly string $filename, public readonly string $purpose, public readonly string $status, public readonly array|string|null $statusDetails, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, bytes: ?int, filename: string, purpose: string, status: string, status_details: array|string|null} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['bytes'], $attributes['created_at'], $attributes['filename'], $attributes['purpose'], $attributes['status'], $attributes['status_details'] ?? null, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'bytes' => $this->bytes, 'created_at' => $this->createdAt, 'filename' => $this->filename, 'purpose' => $this->purpose, 'status' => $this->status, 'status_details' => $this->statusDetails, ]; } } PKS%W]î‰Ëp p -client/src/Responses/Files/CreateResponse.phpnu„[µü¤|string|null}> */ final class CreateResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible|string|null}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array|null $statusDetails */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $bytes, public readonly int $createdAt, public readonly string $filename, public readonly string $purpose, public readonly string $status, public readonly array|string|null $statusDetails, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, bytes: int, filename: string, purpose: string, status: string, status_details: array|string|null} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { return new self( $attributes['id'], $attributes['object'], $attributes['bytes'], $attributes['created_at'], $attributes['filename'], $attributes['purpose'], $attributes['status'], $attributes['status_details'] ?? null, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'bytes' => $this->bytes, 'created_at' => $this->createdAt, 'filename' => $this->filename, 'purpose' => $this->purpose, 'status' => $this->status, 'status_details' => $this->statusDetails, ]; } } PKS%W]ã£%dÿÿ/client/src/Responses/FineTunes/ListResponse.phpnu„[µü¤, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}>}> */ final class ListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}>}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}>} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): RetrieveResponse => RetrieveResponse::from( $result, $meta, ), $attributes['data']); return new self( $attributes['object'], $data, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (RetrieveResponse $response): array => $response->toArray(), $this->data, ), ]; } } PKS%W]¬÷cõõ@client/src/Responses/FineTunes/RetrieveStreamedResponseEvent.phpnu„[µü¤ */ final class RetrieveStreamedResponseEvent implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; use FakeableForStreamedResponse; private function __construct( public readonly string $object, public readonly int $createdAt, public readonly string $level, public readonly string $message, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, created_at: int, level: string, message: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['object'], $attributes['created_at'], $attributes['level'], $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'created_at' => $this->createdAt, 'level' => $this->level, 'message' => $this->message, ]; } } PKS%W]rÞrO°°3client/src/Responses/FineTunes/RetrieveResponse.phpnu„[µü¤, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}> */ final class RetrieveResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $events * @param array $resultFiles * @param array $validationFiles * @param array $trainingFiles */ private function __construct( public readonly string $id, public readonly string $object, public readonly string $model, public readonly int $createdAt, public readonly array $events, public readonly ?string $fineTunedModel, public readonly RetrieveResponseHyperparams $hyperparams, public readonly string $organizationId, public readonly array $resultFiles, public readonly string $status, public readonly array $validationFiles, public readonly array $trainingFiles, public readonly int $updatedAt, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, model: string, created_at: int, events?: array, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $events = array_map(fn (array $result): RetrieveResponseEvent => RetrieveResponseEvent::from( $result ), $attributes['events'] ?? []); $resultFiles = array_map(fn (array $result): RetrieveResponseFile => RetrieveResponseFile::from( $result ), $attributes['result_files']); $validationFiles = array_map(fn (array $result): RetrieveResponseFile => RetrieveResponseFile::from( $result ), $attributes['validation_files']); $trainingFiles = array_map(fn (array $result): RetrieveResponseFile => RetrieveResponseFile::from( $result ), $attributes['training_files']); return new self( $attributes['id'], $attributes['object'], $attributes['model'], $attributes['created_at'], $events, $attributes['fine_tuned_model'], RetrieveResponseHyperparams::from($attributes['hyperparams']), $attributes['organization_id'], $resultFiles, $attributes['status'], $validationFiles, $trainingFiles, $attributes['updated_at'], $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'model' => $this->model, 'created_at' => $this->createdAt, 'events' => array_map( static fn (RetrieveResponseEvent $result): array => $result->toArray(), $this->events ), 'fine_tuned_model' => $this->fineTunedModel, 'hyperparams' => $this->hyperparams->toArray(), 'organization_id' => $this->organizationId, 'result_files' => array_map( static fn (RetrieveResponseFile $result): array => $result->toArray(), $this->resultFiles ), 'status' => $this->status, 'validation_files' => array_map( static fn (RetrieveResponseFile $result): array => $result->toArray(), $this->validationFiles ), 'training_files' => array_map( static fn (RetrieveResponseFile $result): array => $result->toArray(), $this->trainingFiles ), 'updated_at' => $this->updatedAt, ]; } } PKS%W]ë~>ll>client/src/Responses/FineTunes/RetrieveResponseHyperparams.phpnu„[µü¤ */ final class RetrieveResponseHyperparams implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly ?int $batchSize, public readonly ?float $learningRateMultiplier, public readonly int $nEpochs, public readonly float $promptLossWeight, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float} $attributes */ public static function from(array $attributes): self { return new self( $attributes['batch_size'], $attributes['learning_rate_multiplier'], $attributes['n_epochs'], $attributes['prompt_loss_weight'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'batch_size' => $this->batchSize, 'learning_rate_multiplier' => $this->learningRateMultiplier, 'n_epochs' => $this->nEpochs, 'prompt_loss_weight' => $this->promptLossWeight, ]; } } PKS%W]{6ök„„8client/src/Responses/FineTunes/RetrieveResponseEvent.phpnu„[µü¤ */ final class RetrieveResponseEvent implements ResponseContract { /** * @use ArrayAccessible */ use ArrayAccessible; private function __construct( public readonly string $object, public readonly int $createdAt, public readonly string $level, public readonly string $message, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, created_at: int, level: string, message: string} $attributes */ public static function from(array $attributes): self { return new self( $attributes['object'], $attributes['created_at'], $attributes['level'], $attributes['message'], ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'created_at' => $this->createdAt, 'level' => $this->level, 'message' => $this->message, ]; } } PKS%W]ØŠšt  7client/src/Responses/FineTunes/RetrieveResponseFile.phpnu„[µü¤|string|null}> */ final class RetrieveResponseFile implements ResponseContract { /** * @use ArrayAccessible|string|null}> */ use ArrayAccessible; /** * @param array|null $statusDetails */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $bytes, public readonly int $createdAt, public readonly string $filename, public readonly string $purpose, public readonly string $status, public readonly array|string|null $statusDetails, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{id: string, object: string, created_at: int, bytes: int, filename: string, purpose: string, status: string, status_details: array|string|null} $attributes */ public static function from(array $attributes): self { return new self( $attributes['id'], $attributes['object'], $attributes['bytes'], $attributes['created_at'], $attributes['filename'], $attributes['purpose'], $attributes['status'], $attributes['status_details'] ?? null, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'id' => $this->id, 'object' => $this->object, 'bytes' => $this->bytes, 'created_at' => $this->createdAt, 'filename' => $this->filename, 'purpose' => $this->purpose, 'status' => $this->status, 'status_details' => $this->statusDetails, ]; } } PKS%W]tuwÇÇ5client/src/Responses/FineTunes/ListEventsResponse.phpnu„[µü¤}> */ final class ListEventsResponse implements ResponseContract, ResponseHasMetaInformationContract { /** * @use ArrayAccessible}> */ use ArrayAccessible; use Fakeable; use HasMetaInformation; /** * @param array $data */ private function __construct( public readonly string $object, public readonly array $data, private readonly MetaInformation $meta, ) {} /** * Acts as static factory, and returns a new Response instance. * * @param array{object: string, data: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { $data = array_map(fn (array $result): RetrieveResponseEvent => RetrieveResponseEvent::from( $result ), $attributes['data']); return new self( $attributes['object'], $data, $meta, ); } /** * {@inheritDoc} */ public function toArray(): array { return [ 'object' => $this->object, 'data' => array_map( static fn (RetrieveResponseEvent $response): array => $response->toArray(), $this->data, ), ]; } } PKS%W]äú*½½#client/src/Resources/FineTuning.phpnu„[µü¤ $parameters */ public function createJob(array $parameters): RetrieveJobResponse { $payload = Payload::create('fine_tuning/jobs', $parameters); /** @var Response, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveJobResponse::from($response->data(), $response->meta()); } /** * List your organization's fine-tuning jobs. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/undefined * * @param array $parameters */ public function listJobs(array $parameters = []): ListJobsResponse { $payload = Payload::list('fine_tuning/jobs', $parameters); /** @var Response, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}>, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return ListJobsResponse::from($response->data(), $response->meta()); } /** * Gets info about the fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/retrieve */ public function retrieveJob(string $jobId): RetrieveJobResponse { $payload = Payload::retrieve('fine_tuning/jobs', $jobId); /** @var Response, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveJobResponse::from($response->data(), $response->meta()); } /** * Immediately cancel a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/cancel */ public function cancelJob(string $jobId): RetrieveJobResponse { $payload = Payload::cancel('fine_tuning/jobs', $jobId); /** @var Response, status: string, validation_file: ?string, training_file: string, trained_tokens: ?int, error: ?array{code: string, param: ?string, message: string}}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveJobResponse::from($response->data(), $response->meta()); } /** * Get status updates for a fine-tuning job. * * @see https://platform.openai.com/docs/api-reference/fine-tuning/list-events * * @param array $parameters */ public function listJobEvents(string $jobId, array $parameters = []): ListJobEventsResponse { $payload = Payload::retrieve('fine_tuning/jobs', $jobId, '/events', $parameters); /** @var Response, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return ListJobEventsResponse::from($response->data(), $response->meta()); } } PKS%W]²/>›»»#client/src/Resources/Assistants.phpnu„[µü¤ $parameters */ public function create(array $parameters): AssistantResponse { $payload = Payload::create('assistants', $parameters); /** @var Response}}>, tool_resources: array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return AssistantResponse::from($response->data(), $response->meta()); } /** * Retrieves an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/getAssistant */ public function retrieve(string $id): AssistantResponse { $payload = Payload::retrieve('assistants', $id); /** @var Response}}>, tool_resources: array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return AssistantResponse::from($response->data(), $response->meta()); } /** * Modifies an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/modifyAssistant * * @param array $parameters */ public function modify(string $id, array $parameters): AssistantResponse { $payload = Payload::modify('assistants', $id, $parameters); /** @var Response}}>, tool_resources: array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return AssistantResponse::from($response->data(), $response->meta()); } /** * Delete an assistant. * * @see https://platform.openai.com/docs/api-reference/assistants/deleteAssistant */ public function delete(string $id): AssistantDeleteResponse { $payload = Payload::delete('assistants', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return AssistantDeleteResponse::from($response->data(), $response->meta()); } /** * Returns a list of assistants. * * @see https://platform.openai.com/docs/api-reference/assistants/listAssistants * * @param array $parameters */ public function list(array $parameters = []): AssistantListResponse { $payload = Payload::list('assistants', $parameters); /** @var Response}}>, tool_resources: array{code_interpreter?: array{file_ids: array}, file_search?: array{vector_store_ids: array}}, metadata: array, temperature: ?float, top_p: ?float, response_format: string|array{type: 'text'|'json_object'}}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return AssistantListResponse::from($response->data(), $response->meta()); } } PKS%W]äVúõ client/src/Resources/Batches.phpnu„[µü¤ $parameters */ public function create(array $parameters): BatchResponse { $payload = Payload::create('batches', $parameters); /** @var Response}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array}> $response */ $response = $this->transporter->requestObject($payload); return BatchResponse::from($response->data(), $response->meta()); } /** * Retrieves a batch. * * * @see https://platform.openai.com/docs/api-reference/batch/retrieve */ public function retrieve(string $id): BatchResponse { $payload = Payload::retrieve('batches', $id); /** @var Response}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array}> $response */ $response = $this->transporter->requestObject($payload); return BatchResponse::from($response->data(), $response->meta()); } /** * Cancels an in-progress batch. * * * @see https://platform.openai.com/docs/api-reference/batch/cancel */ public function cancel(string $id): BatchResponse { $payload = Payload::cancel('batches', $id); /** @var Response}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array}> $response */ $response = $this->transporter->requestObject($payload); return BatchResponse::from($response->data(), $response->meta()); } /** * List your organization's batches. * * @see https://platform.openai.com/docs/api-reference/batch/list * * @param array $parameters */ public function list(array $parameters = []): BatchListResponse { $payload = Payload::list('batches', $parameters); /** @var Response}, input_file_id: string, completion_window: string, status: string, output_file_id: ?string, error_file_id: ?string, created_at: int, in_progress_at: ?int, expires_at: ?int, finalizing_at: ?int, completed_at: ?int, failed_at: ?int, expired_at: ?int, cancelling_at: ?int, cancelled_at: ?int, request_counts?: array{total: int, completed: int, failed: int}, metadata: ?array}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return BatchListResponse::from($response->data(), $response->meta()); } } PKS%W]”z��client/src/Resources/Chat.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $this->ensureNotStreamed($parameters); $payload = Payload::create('chat/completions', $parameters); /** @var Response}, logprobs: ?array{content: ?array}>}, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } /** * Creates a streamed completion for the chat message * * @see https://platform.openai.com/docs/api-reference/chat/create * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('chat/completions', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(CreateStreamedResponse::class, $response); } } PKS%W]s”ƒÄ77$client/src/Resources/Completions.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $this->ensureNotStreamed($parameters); $payload = Payload::create('completions', $parameters); /** @var Response, token_logprobs: array, top_logprobs: array|null, text_offset: array}|null, finish_reason: string}>, usage: array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } /** * Creates a streamed completion for the provided prompt and parameters * * @see https://platform.openai.com/docs/api-reference/completions/create-completion * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('completions', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(CreateStreamedResponse::class, $response); } } PKS%W]ÛÄWƒ0ƒ0$client/src/Resources/ThreadsRuns.phpnu„[µü¤ $parameters */ public function create(string $threadId, array $parameters): ThreadRunResponse { $payload = Payload::create('threads/' . $threadId . '/runs', $parameters); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * Creates a streamed run * * @see https://platform.openai.com/docs/api-reference/runs/createRun * * @param array $parameters * * @return StreamResponse */ public function createStreamed(string $threadId, array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('threads/' . $threadId . '/runs', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(ThreadRunStreamResponse::class, $response); } /** * Retrieves a run. * * @see https://platform.openai.com/docs/api-reference/runs/getRun */ public function retrieve(string $threadId, string $runId): ThreadRunResponse { $payload = Payload::retrieve('threads/' . $threadId . '/runs', $runId); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * Modifies a run. * * @see https://platform.openai.com/docs/api-reference/runs/modifyRun * * @param array $parameters */ public function modify(string $threadId, string $runId, array $parameters): ThreadRunResponse { $payload = Payload::modify('threads/' . $threadId . '/runs', $runId, $parameters); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * This endpoint can be used to submit the outputs from the tool calls once they're all completed. * * @see https://platform.openai.com/docs/api-reference/runs/submitToolOutputs * * @param array $parameters */ public function submitToolOutputs(string $threadId, string $runId, array $parameters): ThreadRunResponse { $payload = Payload::create('threads/' . $threadId . '/runs/' . $runId . '/submit_tool_outputs', $parameters); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * This endpoint can be used to submit the outputs from the tool calls once they're all completed. * And stream back the response * * @see https://platform.openai.com/docs/api-reference/runs/submitToolOutputs * * @param array $parameters * * @return StreamResponse */ public function submitToolOutputsStreamed(string $threadId, string $runId, array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('threads/' . $threadId . '/runs/' . $runId . '/submit_tool_outputs', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(ThreadRunStreamResponse::class, $response); } /** * Cancels a run that is `in_progress`. * * @see https://platform.openai.com/docs/api-reference/runs/cancelRun */ public function cancel(string $threadId, string $runId): ThreadRunResponse { $payload = Payload::cancel('threads/' . $threadId . '/runs', $runId); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * Returns a list of runs belonging to a thread. * * @see https://platform.openai.com/docs/api-reference/runs/listRuns * * @param array $parameters */ public function list(string $threadId, array $parameters = []): ThreadRunListResponse { $payload = Payload::list('threads/' . $threadId . '/runs', $parameters); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunListResponse::from($response->data(), $response->meta()); } /** * Get steps attached to a run. * * @see https://platform.openai.com/docs/api-reference/runs/step-object */ public function steps(): ThreadsRunsStepsContract { return new ThreadsRunsSteps($this->transporter); } } PKS%W]”¬“É  #client/src/Resources/Containers.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateContainer { $payload = Payload::create('containers', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return CreateContainer::from($response->data(), $response->meta()); } /** * Retrieves a container with the given ID. * * @see https://platform.openai.com/docs/api-reference/containers/retrieveContainer */ public function retrieve(string $id): RetrieveContainer { $payload = Payload::retrieve('containers', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return RetrieveContainer::from($response->data(), $response->meta()); } /** * Delete a container with the given ID. * * @see https://platform.openai.com/docs/api-reference/containers/deleteContainer */ public function delete(string $id): DeleteContainer { $payload = Payload::delete('containers', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return DeleteContainer::from($response->data(), $response->meta()); } /** * List containers * * @see https://platform.openai.com/docs/api-reference/containers/listContainers * * @param array $parameters */ public function list(array $parameters = []): ListContainers { $payload = Payload::list('containers', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return ListContainers::from($response->data(), $response->meta()); } } PKS%W]Õ¡^#client/src/Resources/Embeddings.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $payload = Payload::create('embeddings', $parameters); /** @var Response, index: int}>, usage: array{prompt_tokens: int, total_tokens: int}}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } } PKS%W]òS¢â¯¯"client/src/Resources/FineTunes.phpnu„[µü¤ $parameters */ public function create(array $parameters): RetrieveResponse { $payload = Payload::create('fine-tunes', $parameters); /** @var Response, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * List your organization's fine-tuning jobs. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/list */ public function list(): ListResponse { $payload = Payload::list('fine-tunes'); /** @var Response, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}>}> $response */ $response = $this->transporter->requestObject($payload); return ListResponse::from($response->data(), $response->meta()); } /** * Gets info about the fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/list */ public function retrieve(string $fineTuneId): RetrieveResponse { $payload = Payload::retrieve('fine-tunes', $fineTuneId); /** @var Response, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Immediately cancel a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/cancel */ public function cancel(string $fineTuneId): RetrieveResponse { $payload = Payload::cancel('fine-tunes', $fineTuneId); /** @var Response, fine_tuned_model: ?string, hyperparams: array{batch_size: ?int, learning_rate_multiplier: ?float, n_epochs: int, prompt_loss_weight: float}, organization_id: string, result_files: array|string|null}>, status: string, validation_files: array|string|null}>, training_files: array|string|null}>, updated_at: int}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Get fine-grained status updates for a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/events */ public function listEvents(string $fineTuneId): ListEventsResponse { $payload = Payload::retrieve('fine-tunes', $fineTuneId, '/events'); /** @var Response}> $response */ $response = $this->transporter->requestObject($payload); return ListEventsResponse::from($response->data(), $response->meta()); } /** * Get streamed fine-grained status updates for a fine-tune job. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/events * * @return StreamResponse */ public function listEventsStreamed(string $fineTuneId): StreamResponse { $payload = Payload::retrieve('fine-tunes', $fineTuneId, '/events?stream=true'); $response = $this->transporter->requestStream($payload); return new StreamResponse(RetrieveStreamedResponseEvent::class, $response); } } PKS%W];¯ ÖÖ client/src/Resources/Threads.phpnu„[µü¤ $parameters */ public function create(array $parameters = []): ThreadResponse { $payload = Payload::create('threads', $parameters); /** @var Response}, file_search?: array{vector_store_ids: array}}, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadResponse::from($response->data(), $response->meta()); } /** * Create a thread and run it in one request. * * @see https://platform.openai.com/docs/api-reference/runs/createThreadAndRun * * @param array $parameters */ public function createAndRun(array $parameters): ThreadRunResponse { $payload = Payload::create('threads/runs', $parameters); /** @var Response}}, last_error: ?array{code: string, message: string}, expires_at: ?int, started_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, model: string, instructions: ?string, tools: array}}>, metadata: array, usage?: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int}, incomplete_details: ?array{reason: string}, temperature: float|int|null, top_p: null|float|int, max_prompt_tokens: ?int, max_completion_tokens: ?int, truncation_strategy: array{type: string, last_messages: ?int}, tool_choice: string|array{type: string, function?: array{name: string}}, response_format: string|array{type: 'text'|'json_object'}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunResponse::from($response->data(), $response->meta()); } /** * Create a thread and run it in one request, returning a stream. * * @see https://platform.openai.com/docs/api-reference/runs/createThreadAndRun * * @param array $parameters * * @return StreamResponse */ public function createAndRunStreamed(array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('threads/runs', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(ThreadRunStreamResponse::class, $response); } /** * Retrieves a thread. * * @see https://platform.openai.com/docs/api-reference/threads/getThread */ public function retrieve(string $id): ThreadResponse { $payload = Payload::retrieve('threads', $id); /** @var Response}, file_search?: array{vector_store_ids: array}}, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadResponse::from($response->data(), $response->meta()); } /** * Modifies a thread. * * @see https://platform.openai.com/docs/api-reference/threads/modifyThread * * @param array $parameters */ public function modify(string $id, array $parameters): ThreadResponse { $payload = Payload::modify('threads', $id, $parameters); /** @var Response}, file_search?: array{vector_store_ids: array}}, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadResponse::from($response->data(), $response->meta()); } /** * Delete a thread. * * @see https://platform.openai.com/docs/api-reference/threads/deleteThread */ public function delete(string $id): ThreadDeleteResponse { $payload = Payload::delete('threads', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return ThreadDeleteResponse::from($response->data(), $response->meta()); } /** * Manage messages attached to a thread. * * @see https://platform.openai.com/docs/api-reference/messages */ public function messages(): ThreadsMessagesContract { return new ThreadsMessages($this->transporter); } /** * Represents an execution run on a thread. * * @see https://platform.openai.com/docs/api-reference/runs */ public function runs(): ThreadsRunsContract { return new ThreadsRuns($this->transporter); } } PKS%W]QΙ  %client/src/Resources/VectorStores.phpnu„[µü¤ $parameters */ public function create(array $parameters): VectorStoreResponse { $payload = Payload::create('vector_stores', $parameters); /** @var Response}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreResponse::from($response->data(), $response->meta()); } /** * Returns a list of vector stores. * * @see https://platform.openai.com/docs/api-reference/vector-stores/list * * @param array $parameters */ public function list(array $parameters = []): VectorStoreListResponse { $payload = Payload::list('vector_stores', $parameters); /** @var Response}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreListResponse::from($response->data(), $response->meta()); } /** * Retrieves a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores/retrieve */ public function retrieve(string $vectorStoreId): VectorStoreResponse { $payload = Payload::retrieve('vector_stores', $vectorStoreId); /** @var Response}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreResponse::from($response->data(), $response->meta()); } /** * Modify a vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores/modify * * @param array $parameters */ public function modify(string $vectorStoreId, array $parameters): VectorStoreResponse { $payload = Payload::modify('vector_stores', $vectorStoreId, $parameters); /** @var Response}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreResponse::from($response->data(), $response->meta()); } /** * Delete a vector store. * * https://platform.openai.com/docs/api-reference/vector-stores/delete */ public function delete(string $vectorStoreId): VectorStoreDeleteResponse { $payload = Payload::delete('vector_stores', $vectorStoreId); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return VectorStoreDeleteResponse::from($response->data(), $response->meta()); } /** * Manage the files related to the vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-files */ public function files(): VectorStoresFilesContract { return new VectorStoresFiles($this->transporter); } /** * Manage the file batches related to the vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches */ public function batches(): VectorStoresFileBatchesContract { return new VectorStoresFileBatches($this->transporter); } /** * Search a vector store for relevant chunks based on a query and file attributes filter. * * @see https://platform.openai.com/docs/api-reference/vector-stores/search * * @param array $parameters */ public function search(string $vectorStoreId, array $parameters = []): VectorStoreSearchResponse { $payload = Payload::create("vector_stores/{$vectorStoreId}/search", $parameters); /** @var Response, data: array, content: array}>, has_more: bool, next_page: ?string}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreSearchResponse::from($response->data(), $response->meta()); } } PKS%W]6è²Û÷÷/client/src/Resources/Concerns/Transportable.phpnu„[µü¤ $parameters */ private function ensureNotStreamed(array $parameters, string $fallbackFunction = 'createStreamed'): void { if (! isset($parameters['stream'])) { return; } if ($parameters['stream'] !== true) { return; } throw new InvalidArgumentException("Stream option is not supported. Please use the $fallbackFunction() method instead."); } /** * Set the stream parameter to true. * * @param array $parameters * * @return array */ private function setStreamParameter(array $parameters): array { $parameters['stream'] = true; return $parameters; } } PKS%W]ú7Š@ÆÆ!client/src/Resources/Realtime.phpnu„[µü¤ $parameters */ public function token(array $parameters = []): SessionResponse { $payload = Payload::create('realtime/sessions', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return SessionResponse::from($response->data()); } /** * Create an ephemeral API token for real time transcription sessions. * * @see https://platform.openai.com/docs/api-reference/realtime-sessions/create-transcription * * @param array $parameters */ public function transcribeToken(array $parameters = []): TranscriptionSessionResponse { $payload = Payload::create('realtime/transcription_sessions', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return TranscriptionSessionResponse::from($response->data()); } } PKS%W]„BÅrrclient/src/Resources/Models.phpnu„[µü¤}> $response */ $response = $this->transporter->requestObject($payload); return ListResponse::from($response->data(), $response->meta()); } /** * Retrieves a model instance, providing basic information about the model such as the owner and permissioning. * * @see https://platform.openai.com/docs/api-reference/models/retrieve */ public function retrieve(string $model): RetrieveResponse { $payload = Payload::retrieve('models', $model); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Delete a fine-tuned model. You must have the Owner role in your organization. * * @see https://platform.openai.com/docs/api-reference/fine-tunes/delete-model */ public function delete(string $model): DeleteResponse { $payload = Payload::delete('models', $model); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return DeleteResponse::from($response->data(), $response->meta()); } } PKS%W]-ˆ }š š )client/src/Resources/ThreadsRunsSteps.phpnu„[µü¤}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunStepResponse::from($response->data(), $response->meta()); } /** * Returns a list of run steps belonging to a run. * * @see https://platform.openai.com/docs/api-reference/runs/listRunSteps * * @param array $parameters */ public function list(string $threadId, string $runId, array $parameters = []): ThreadRunStepListResponse { $payload = Payload::list('threads/' . $threadId . '/runs/' . $runId . '/steps', $parameters); /** @var Response}}|array{id: string, type: 'file_search', file_search: array}|array{id?: string, type: 'function', function: array{name?: string, arguments: string, output?: ?string}}>}|array{type: 'message_creation', message_creation: array{message_id: string}}, last_error: ?array{code: string, message: string}, expires_at: ?int, cancelled_at: ?int, failed_at: ?int, completed_at: ?int, metadata?: array, usage: ?array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return ThreadRunStepListResponse::from($response->data(), $response->meta()); } } PKS%W]õ£Ò¤¤client/src/Resources/Audio.phpnu„[µü¤ $parameters */ public function speech(array $parameters): string { $this->ensureNotStreamed($parameters, 'speechStreamed'); $payload = Payload::create('audio/speech', $parameters); return $this->transporter->requestContent($payload); } /** * Generates streamed audio from the input text. * * @see https://platform.openai.com/docs/api-reference/audio/createSpeech * * @param array $parameters */ public function speechStreamed(array $parameters): SpeechStreamResponse { $payload = Payload::create('audio/speech', $parameters); $response = $this->transporter->requestStream($payload); return new SpeechStreamResponse($response); } /** * Transcribes audio into the input language. * * @see https://platform.openai.com/docs/api-reference/audio/createTranscription * * @param array $parameters */ public function transcribe(array $parameters): TranscriptionResponse { $this->ensureNotStreamed($parameters, 'transcribeStreamed'); $payload = Payload::upload('audio/transcriptions', $parameters); /** @var Response, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, words: array, text: string}> $response */ $response = $this->transporter->requestObject($payload); return TranscriptionResponse::from($response->data(), $response->meta()); } /** * Transcribes audio input the streamed events. * * @see https://platform.openai.com/docs/api-reference/audio/createTranscription#audio-createtranscription-stream * * @param array $parameters * * @return StreamResponse */ public function transcribeStreamed(array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::upload('audio/transcriptions', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(TranscriptionStreamResponse::class, $response); } /** * Translates audio into English. * * @see https://platform.openai.com/docs/api-reference/audio/createTranslation * * @param array $parameters */ public function translate(array $parameters): TranslationResponse { $payload = Payload::upload('audio/translations', $parameters); /** @var Response, temperature: float, avg_logprob: float, compression_ratio: float, no_speech_prob: float, transient?: bool}>, text: string}> $response */ $response = $this->transporter->requestObject($payload); return TranslationResponse::from($response->data(), $response->meta()); } } PKS%W]�ÅÍ?SS(client/src/Resources/ThreadsMessages.phpnu„[µü¤ $parameters */ public function create(string $threadId, array $parameters): ThreadMessageResponse { $payload = Payload::create("threads/$threadId/messages", $parameters); /** @var Response}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadMessageResponse::from($response->data(), $response->meta()); } /** * Retrieve a message. * * @see https://platform.openai.com/docs/api-reference/messages/getMessage */ public function retrieve(string $threadId, string $messageId): ThreadMessageResponse { $payload = Payload::retrieve("threads/$threadId/messages", $messageId); /** @var Response}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadMessageResponse::from($response->data(), $response->meta()); } /** * Modifies a message. * * @see https://platform.openai.com/docs/api-reference/messages/modifyMessage * * @param array $parameters */ public function modify(string $threadId, string $messageId, array $parameters): ThreadMessageResponse { $payload = Payload::modify("threads/$threadId/messages", $messageId, $parameters); /** @var Response}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array}> $response */ $response = $this->transporter->requestObject($payload); return ThreadMessageResponse::from($response->data(), $response->meta()); } /** * Deletes a message. * * @see https://platform.openai.com/docs/api-reference/messages/deleteMessage */ public function delete(string $threadId, string $messageId): ThreadMessageDeleteResponse { $payload = Payload::delete("threads/$threadId/messages", $messageId); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return ThreadMessageDeleteResponse::from($response->data(), $response->meta()); } /** * Returns a list of messages for a given thread. * * @see https://platform.openai.com/docs/api-reference/messages/listMessages * * @param array $parameters */ public function list(string $threadId, array $parameters = []): ThreadMessageListResponse { $payload = Payload::list("threads/$threadId/messages", $parameters); /** @var Response}}>, assistant_id: ?string, run_id: ?string, attachments?: array}>, metadata: array}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return ThreadMessageListResponse::from($response->data(), $response->meta()); } } PKS%W]Í-³QQ"client/src/Resources/Responses.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $this->ensureNotStreamed($parameters); $payload = Payload::create('responses', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } /** * When you create a Response with stream set to true, * the server will emit server-sent events to the client as the Response is generated. * * @see https://platform.openai.com/docs/api-reference/responses-streaming * * @param array $parameters * * @return StreamResponse */ public function createStreamed(array $parameters): StreamResponse { $parameters = $this->setStreamParameter($parameters); $payload = Payload::create('responses', $parameters); $response = $this->transporter->requestStream($payload); return new StreamResponse(CreateStreamedResponse::class, $response); } /** * Retrieves a model response with the given ID. * * @see https://platform.openai.com/docs/api-reference/responses/get */ public function retrieve(string $id): RetrieveResponse { $payload = Payload::retrieve('responses', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Cancels a model response with the given ID. Must be marked as 'background' to be cancellable. * * @see https://platform.openai.com/docs/api-reference/responses/cancel */ public function cancel(string $id): RetrieveResponse { $payload = Payload::cancel('responses', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Deletes a model response with the given ID. * * @see https://platform.openai.com/docs/api-reference/responses/delete */ public function delete(string $id): DeleteResponse { $payload = Payload::delete('responses', $id); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return DeleteResponse::from($response->data(), $response->meta()); } /** * Lists input items for a response with the given ID. * * @see https://platform.openai.com/docs/api-reference/responses/input-items * * @param array $parameters */ public function list(string $id, array $parameters = []): ListInputItems { $payload = Payload::list('responses/' . $id . '/input_items', $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return ListInputItems::from($response->data(), $response->meta()); } } PKS%W]ůóq” ” client/src/Resources/Images.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $payload = Payload::create('images/generations', $parameters); /** @var Response, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } /** * Creates an edited or extended image given an original image and a prompt. * * @see https://platform.openai.com/docs/api-reference/images/create-edit * * @param array $parameters */ public function edit(array $parameters): EditResponse { $payload = Payload::upload('images/edits', $parameters); /** @var Response, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> $response */ $response = $this->transporter->requestObject($payload); return EditResponse::from($response->data(), $response->meta()); } /** * Creates a variation of a given image. * * @see https://platform.openai.com/docs/api-reference/images/create-variation * * @param array $parameters */ public function variation(array $parameters): VariationResponse { $payload = Payload::upload('images/variations', $parameters); /** @var Response, usage?: array{total_tokens: int, input_tokens: int, output_tokens: int, input_tokens_details: array{text_tokens: int, image_tokens: int}}}> $response */ $response = $this->transporter->requestObject($payload); return VariationResponse::from($response->data(), $response->meta()); } } PKS%W]˜†sœ''*client/src/Resources/VectorStoresFiles.phpnu„[µü¤ $parameters */ public function create(string $vectorStoreId, array $parameters): VectorStoreFileResponse { $payload = Payload::create("vector_stores/$vectorStoreId/files", $parameters); /** @var Response, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileResponse::from($response->data(), $response->meta()); } /** * Returns a list of files within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-files/listFiles * * @param array $parameters */ public function list(string $vectorStoreId, array $parameters = []): VectorStoreFileListResponse { $payload = Payload::list("vector_stores/$vectorStoreId/files", $parameters); /** @var Response, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileListResponse::from($response->data(), $response->meta()); } /** * Retrieves a file within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-files/getFile */ public function retrieve(string $vectorStoreId, string $fileId): VectorStoreFileResponse { $payload = Payload::retrieve("vector_stores/$vectorStoreId/files", $fileId); /** @var Response, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileResponse::from($response->data(), $response->meta()); } /** * Update attributes on a vector store file. * * @see https://platform.openai.com/docs/api-reference/vector-stores-files/updateAttributes * * @param array $parameters */ public function updateAttributes(string $vectorStoreId, string $fileId, array $parameters): VectorStoreFileResponse { $payload = Payload::modify("vector_stores/$vectorStoreId/files", $fileId, $parameters); /** @var Response, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileResponse::from($response->data(), $response->meta()); } /** * Delete a file within a vector store. * * https://platform.openai.com/docs/api-reference/vector-stores/delete */ public function delete(string $vectorStoreId, string $fileId): VectorStoreFileDeleteResponse { $payload = Payload::delete("vector_stores/$vectorStoreId/files", $fileId); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileDeleteResponse::from($response->data(), $response->meta()); } } PKS%W]ˆˆ²æ æ client/src/Resources/Files.phpnu„[µü¤|string|null}>}> $response */ $response = $this->transporter->requestObject($payload); return ListResponse::from($response->data(), $response->meta()); } /** * Returns information about a specific file. * * @see https://platform.openai.com/docs/api-reference/files/retrieve */ public function retrieve(string $file): RetrieveResponse { $payload = Payload::retrieve('files', $file); /** @var Response|string|null}> $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); } /** * Returns the contents of the specified file. * * @see https://platform.openai.com/docs/api-reference/files/retrieve-content */ public function download(string $file): string { $payload = Payload::retrieveContent('files', $file); return $this->transporter->requestContent($payload); } /** * Upload a file that contains document(s) to be used across various endpoints/features. * * @see https://platform.openai.com/docs/api-reference/files/upload * * @param array $parameters */ public function upload(array $parameters): CreateResponse { $payload = Payload::upload('files', $parameters); /** @var Response|string|null}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } /** * Delete a file. * * @see https://platform.openai.com/docs/api-reference/files/delete */ public function delete(string $file): DeleteResponse { $payload = Payload::delete('files', $file); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return DeleteResponse::from($response->data(), $response->meta()); } } PKS%W]ý:–ÔÔclient/src/Resources/Edits.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $payload = Payload::create('edits', $parameters); /** @var Response, usage: array{prompt_tokens: int, completion_tokens: int, total_tokens: int}}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } } PKS%W]h£n•II$client/src/Resources/Moderations.phpnu„[µü¤ $parameters */ public function create(array $parameters): CreateResponse { $payload = Payload::create('moderations', $parameters); /** @var Response, category_scores: array, flagged: bool,category_applied_input_types?: array>}>}> $response */ $response = $this->transporter->requestObject($payload); return CreateResponse::from($response->data(), $response->meta()); } } PKS%W]Øf£SS0client/src/Resources/VectorStoresFileBatches.phpnu„[µü¤ $parameters */ public function create(string $vectorStoreId, array $parameters): VectorStoreFileBatchResponse { $payload = Payload::create("vector_stores/$vectorStoreId/file_batches", $parameters); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileBatchResponse::from($response->data(), $response->meta()); } /** * Retrieves a file batch within a vector store. * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/getBatch */ public function retrieve(string $vectorStoreId, string $fileBatchId): VectorStoreFileBatchResponse { $payload = Payload::retrieve("vector_stores/$vectorStoreId/file_batches", $fileBatchId); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileBatchResponse::from($response->data(), $response->meta()); } /** * Lists the files within a file batch within a vector store * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/listBatchFiles * * @param array $parameters */ public function listFiles(string $vectorStoreId, string $fileBatchId, array $parameters = []): VectorStoreFileListResponse { $payload = Payload::list("vector_stores/$vectorStoreId/file_batches/$fileBatchId/files", $parameters); /** @var Response, last_error: ?array{code: string, message: string}, chunking_strategy: array{type: 'static', static: array{max_chunk_size_tokens: int, chunk_overlap_tokens: int}}|array{type: 'other'}}>, first_id: ?string, last_id: ?string, has_more: bool}> $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileListResponse::from($response->data(), $response->meta()); } /** * Cancel a vector store file batch * * @see https://platform.openai.com/docs/api-reference/vector-stores-file-batches/cancelBatch */ public function cancel(string $vectorStoreId, string $fileBatchId): VectorStoreFileBatchResponse { $payload = Payload::cancel("vector_stores/$vectorStoreId/file_batches", $fileBatchId); /** @var Response $response */ $response = $this->transporter->requestObject($payload); return VectorStoreFileBatchResponse::from($response->data(), $response->meta()); } } PKS%W]N§&‘‘client/composer.jsonnu„[µü¤{ "version": "0.15.0", "name": "openai-php/client", "description": "OpenAI PHP is a supercharged PHP API client that allows you to interact with the Open AI API", "keywords": ["php", "openai", "sdk", "codex", "GPT-3", "DALL-E", "api", "client", "natural", "language", "processing"], "license": "MIT", "authors": [ { "name": "Nuno Maduro", "email": "enunomaduro@gmail.com" }, { "name": "Sandro Gehri" } ], "require": { "php": "^8.2.0", "php-http/discovery": "^1.20.0", "php-http/multipart-stream-builder": "^1.4.2", "psr/http-client": "^1.0.3", "psr/http-client-implementation": "^1.0.1", "psr/http-factory-implementation": "*", "psr/http-message": "^1.1.0|^2.0.0" }, "require-dev": { "guzzlehttp/guzzle": "^7.9.3", "guzzlehttp/psr7": "^2.7.1", "laravel/pint": "^1.24.0", "mockery/mockery": "^1.6.12", "nunomaduro/collision": "^8.8.0", "pestphp/pest": "^3.8.2|^4.0.0", "pestphp/pest-plugin-arch": "^3.1.1|^4.0.0", "pestphp/pest-plugin-type-coverage": "^3.5.1|^4.0.0", "phpstan/phpstan": "^1.12.25", "symfony/var-dumper": "^7.2.6" }, "autoload": { "psr-4": { "OpenAI\\": "src/" }, "files": [ "src/OpenAI.php" ] }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true, "preferred-install": "dist", "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": false } }, "scripts": { "lint": "pint -v --parallel", "test:lint": "pint --test -v --parallel", "test:types": "phpstan analyse --ansi", "test:type-coverage": "pest --type-coverage --min=100", "test:unit": "pest --colors=always", "test": [ "@test:lint", "@test:types", "@test:type-coverage", "@test:unit" ] } } PKS%W]E_> IIclient/LICENSE.mdnu„[µü¤The MIT License (MIT) Copyright (c) Nuno Maduro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PKS%W]b+¨ñÍÍlaravel/src/Facades/OpenAI.phpnu„[µü¤PKS%W]fuW³qq"laravel/src/Testing/OpenAIFake.phpnu„[µü¤PKS%W]ƒZÅÅ*Þlaravel/src/Exceptions/ApiKeyIsMissing.phpnu„[µü¤PKS%W]O:±‡‡ý laravel/src/Support/View.phpnu„[µü¤PKS%W]K£S††'Ðlaravel/src/Commands/InstallCommand.phpnu„[µü¤PKS%W]B£ÕI  ­ laravel/src/ServiceProvider.phpnu„[µü¤PKS%W]0Bá‘¿¿*laravel/composer.jsonnu„[µü¤PKS%W]E_> II1laravel/LICENSE.mdnu„[µü¤PKS%W]º{>ö /§5laravel/resources/views/components/new-line.phpnu„[µü¤PKS%W]Ùêf ¢¢,6laravel/resources/views/components/badge.phpnu„[µü¤PKS%W]d¾FLL88laravel/resources/views/components/two-column-detail.phpnu„[µü¤PKS%W]p;Ÿ??Ä9laravel/config/openai.phpnu„[µü¤PKS%W]$õµWÃÃ'LAclient/src/ValueObjects/ResourceUri.phpnu„[µü¤PKS%W]]¯””/fJclient/src/ValueObjects/Transporter/Headers.phpnu„[µü¤PKS%W]òÃ��¸¸0YSclient/src/ValueObjects/Transporter/Response.phpnu„[µü¤PKS%W]Ÿ,J�––3qXclient/src/ValueObjects/Transporter/QueryParams.phpnu„[µü¤PKS%W]ö¡Ô•  /j\client/src/ValueObjects/Transporter/Payload.phpnu„[µü¤PKS%W]di›??/iuclient/src/ValueObjects/Transporter/BaseUri.phpnu„[µü¤PKS%W]B@9w))"yclient/src/ValueObjects/ApiKey.phpnu„[µü¤PKS%W]Bdá--‚{client/src/Factory.phpnu„[µü¤PKS%W]¿!ÃÃõ�client/src/OpenAI.phpnu„[µü¤PKS%W]�œÅ0+ý’client/src/Testing/Requests/TestRequest.phpnu„[µü¤PKS%W]ÞÔš88!m•client/src/Testing/ClientFake.phpnu„[µü¤PKS%W](º{;ÜÜ2ö­client/src/Testing/Responses/Concerns/Fakeable.phpnu„[µü¤PKS%W]gݧëTTE4¶client/src/Testing/Responses/Concerns/FakeableForStreamedResponse.phpnu„[µü¤PKS%W]6C££Mý¹client/src/Testing/Responses/Fixtures/Assistants/AssistantResponseFixture.phpnu„[µü¤PKS%W]Èï€ôôQ½client/src/Testing/Responses/Fixtures/Assistants/AssistantListResponseFixture.phpnu„[µü¤PKS%W]9­ÄS’Áclient/src/Testing/Responses/Fixtures/Assistants/AssistantDeleteResponseFixture.phpnu„[µü¤PKS%W]³Þ*PK&Ãclient/src/Testing/Responses/Fixtures/Moderations/CreateResponseFixture.phpnu„[µü¤PKS%W]:Y}r × ×?¤Êclient/src/Testing/Responses/Fixtures/Audio/speech-streamed.mp3nu„[µü¤PKS%W]uHù++J³¢client/src/Testing/Responses/Fixtures/Audio/TranslationResponseFixture.phpnu„[µü¤PKS%W]×*¥·00LX§client/src/Testing/Responses/Fixtures/Audio/TranscriptionResponseFixture.phpnu„[µü¤PKS%W]ºÚ¬�  M¬client/src/Testing/Responses/Fixtures/Threads/ThreadDeleteResponseFixture.phpnu„[µü¤PKS%W] ðÀ**G‹­client/src/Testing/Responses/Fixtures/Threads/ThreadResponseFixture.phpnu„[µü¤PKS%W]’vµEEY,¯client/src/Testing/Responses/Fixtures/Threads/Runs/Steps/ThreadRunStepResponseFixture.phpnu„[µü¤PKS%W]�‹ßîî]ú³client/src/Testing/Responses/Fixtures/Threads/Runs/Steps/ThreadRunStepListResponseFixture.phpnu„[µü¤PKS%W]K>óçl%l%Uuºclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunStreamResponseFixture.txtnu„[µü¤PKS%W]x”¬××Ofàclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunResponseFixture.phpnu„[µü¤PKS%W]·ÛÎî--S¼æclient/src/Testing/Responses/Fixtures/Threads/Runs/ThreadRunListResponseFixture.phpnu„[µü¤PKS%W]VOg(VV[lîclient/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageListResponseFixture.phpnu„[µü¤PKS%W] ahY]Mõclient/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageDeleteResponseFixture.phpnu„[µü¤PKS%W]ÈÞ<ä��Wùöclient/src/Testing/Responses/Fixtures/Threads/Messages/ThreadMessageResponseFixture.phpnu„[µü¤PKS%W]Ò8éÉCCJüclient/src/Testing/Responses/Fixtures/Batches/BatchListResponseFixture.phpnu„[µü¤PKS%W]Þk†rrFÌclient/src/Testing/Responses/Fixtures/Batches/BatchResponseFixture.phpnu„[µü¤PKS%W]Õÿ§ÆH´client/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.phpnu„[µü¤PKS%W]�§åýþþFE client/src/Testing/Responses/Fixtures/Models/DeleteResponseFixture.phpnu„[µü¤PKS%W]¶? ËõõD¹ client/src/Testing/Responses/Fixtures/Models/ListResponseFixture.phpnu„[µü¤PKS%W]䟣ÖÖE" client/src/Testing/Responses/Fixtures/Edits/CreateResponseFixture.phpnu„[µü¤PKS%W]ºš ‘ÛÛKmclient/src/Testing/Responses/Fixtures/Completions/CreateResponseFixture.phpnu„[µü¤PKS%W]!Z–<ÆÆSÃclient/src/Testing/Responses/Fixtures/Completions/CreateStreamedResponseFixture.txtnu„[µü¤PKS%W]´»Y+ÙÙD client/src/Testing/Responses/Fixtures/Chat/CreateResponseFixture.phpnu„[µü¤PKS%W]®œ-¤¤LYclient/src/Testing/Responses/Fixtures/Chat/CreateStreamedResponseFixture.txtnu„[µü¤PKS%W]ÕgÓ((Dy(client/src/Testing/Responses/Fixtures/Images/EditResponseFixture.phpnu„[µü¤PKS%W]ÐÇR--I*client/src/Testing/Responses/Fixtures/Images/VariationResponseFixture.phpnu„[µü¤PKS%W]/:z**F»+client/src/Testing/Responses/Fixtures/Images/CreateResponseFixture.phpnu„[µü¤PKS%W]ÿÏV>……V[-client/src/Testing/Responses/Fixtures/Realtime/TranscriptionSessionResponseFixture.phpnu„[µü¤PKS%W]™ý¸øøIf0client/src/Testing/Responses/Fixtures/Realtime/SessionResponseFixture.phpnu„[µü¤PKS%W][f<Ýääb×4client/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseFileFixture.phpnu„[µü¤PKS%W]�Èÿ|ÀÀ^M7client/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseFixture.phpnu„[µü¤PKS%W]û¯®ùe›;client/src/Testing/Responses/Fixtures/VectorStores/Search/VectorStoreSearchResponseContentFixture.phpnu„[µü¤PKS%W]Í÷W……U2=client/src/Testing/Responses/Fixtures/VectorStores/VectorStoreListResponseFixture.phpnu„[µü¤PKS%W]<®pfééQbF��IÉmclient/src/Testing/Responses/Fixtures/Responses/ListInputItemsFixture.phpnu„[µü¤PKS%W]pÁ‹EZZIÃqclient/src/Testing/Responses/Fixtures/Responses/CancelResponseFixture.phpnu„[µü¤PKS%W]ßÕÌI–�client/src/Testing/Responses/Fixtures/Responses/DeleteResponseFixture.phpnu„[µü¤PKS%W]$®  ZZI%ƒclient/src/Testing/Responses/Fixtures/Responses/ResponseObjectFixture.phpnu„[µü¤PKS%W]-Å«ZZIø’client/src/Testing/Responses/Fixtures/Responses/CreateResponseFixture.phpnu„[µü¤PKS%W]ÝP›3 3 QË¢client/src/Testing/Responses/Fixtures/Responses/CreateStreamedResponseFixture.txtnu„[µü¤PKS%W]KißÃÚÚG°client/src/Testing/Responses/Fixtures/Files/RetrieveResponseFixture.phpnu„[µü¤PKS%W] J÷¹ööEвclient/src/Testing/Responses/Fixtures/Files/DeleteResponseFixture.phpnu„[µü¤PKS%W]fMppC;´client/src/Testing/Responses/Fixtures/Files/ListResponseFixture.phpnu„[µü¤PKS%W]tFÐØØE·client/src/Testing/Responses/Fixtures/Files/CreateResponseFixture.phpnu„[µü¤PKS%W]â&™tffKk¹client/src/Testing/Responses/Fixtures/FineTunes/RetrieveResponseFixture.phpnu„[µü¤PKS%W]Z­`ÝVVXL¿client/src/Testing/Responses/Fixtures/FineTunes/RetrieveStreamedResponseEventFixture.txtnu„[µü¤PKS%W]n,éFøøG*Åclient/src/Testing/Responses/Fixtures/FineTunes/ListResponseFixture.phpnu„[µü¤PKS%W]콸ÝÝM™Æclient/src/Testing/Responses/Fixtures/FineTunes/ListEventsResponseFixture.phpnu„[µü¤PKS%W]WbÎÈÈ9óÈclient/src/Testing/Resources/VectorStoresTestResource.phpnu„[µü¤PKS%W]¶¨)@ÂÂ4$Ñclient/src/Testing/Resources/BatchesTestResource.phpnu„[µü¤PKS%W]É»â#DJÕclient/src/Testing/Resources/VectorStoresFileBatchesTestResource.phpnu„[µü¤PKS%W]å7??7ÄÚclient/src/Testing/Resources/ContainersTestResource.phpnu„[µü¤PKS%W]¨T[<<6jßclient/src/Testing/Resources/FineTunesTestResource.phpnu„[µü¤PKS%W]¿ÌŒŒ2 åclient/src/Testing/Resources/FilesTestResource.phpnu„[µü¤PKS%W]±ˆA—ll3úéclient/src/Testing/Resources/ImagesTestResource.phpnu„[µü¤PKS%W]—¤ÇgÅÅ7Éíclient/src/Testing/Resources/AssistantsTestResource.phpnu„[µü¤PKS%W]BÄ5ïðð5õòclient/src/Testing/Resources/RealtimeTestResource.phpnu„[µü¤PKS%W]TÒßü÷÷>Jöclient/src/Testing/Resources/VectorStoresFilesTestResource.phpnu„[µü¤PKS%W]Æsn¿™™2¯ûclient/src/Testing/Resources/Concerns/Testable.phpnu„[µü¤PKS%W]§b…ää7ªÿclient/src/Testing/Resources/FineTuningTestResource.phpnu„[µü¤PKS%W]ãž}tt6õclient/src/Testing/Resources/ResponsesTestResource.phpnu„[µü¤PKS%W]9©M¾ÔÔ8Ï client/src/Testing/Resources/CompletionsTestResource.phpnu„[µü¤PKS%W]Ú �VV4 client/src/Testing/Resources/ThreadsTestResource.phpnu„[µü¤PKS%W] z¢±±8Åclient/src/Testing/Resources/ThreadsRunsTestResource.phpnu„[µü¤PKS%W]x`,ö<Þclient/src/Testing/Resources/ThreadsMessagesTestResource.phpnu„[µü¤PKS%W]rv±õ7É"client/src/Testing/Resources/EmbeddingsTestResource.phpnu„[µü¤PKS%W]ňYÞ??3I%client/src/Testing/Resources/ModelsTestResource.phpnu„[µü¤PKS%W] •ûû2ë(client/src/Testing/Resources/EditsTestResource.phpnu„[µü¤PKS%W]îˆÐéÍÍ2H+client/src/Testing/Resources/AudioTestResource.phpnu„[µü¤PKS%W]Éb¤Ô8w0client/src/Testing/Resources/ModerationsTestResource.phpnu„[µü¤PKS%W]~dÏZ^^=þ2client/src/Testing/Resources/ThreadsRunsStepsTestResource.phpnu„[µü¤PKS%W]�yypªª1É6client/src/Testing/Resources/ChatTestResource.phpnu„[µü¤PKS%W]f)Þ'††/Ô9client/src/Exceptions/UnknownEventException.phpnu„[µü¤PKS%W]^˜ä„„.¹:client/src/Exceptions/TransporterException.phpnu„[µü¤PKS%W]€-¥x``0›<client/src/Exceptions/UnserializableResponse.phpnu„[µü¤PKS%W] ¢""([>client/src/Exceptions/ErrorException.phpnu„[µü¤PKS%W] ’é.‰‰2ÕCclient/src/Exceptions/InvalidArgumentException.phpnu„[µü¤PKS%W]tè9Z¼¼9ÀDclient/src/Enums/Moderations/CategoryAppliedInputType.phpnu„[µü¤PKS%W]TN+nn)åEclient/src/Enums/Moderations/Category.phpnu„[µü¤PKS%W]cû'"ìì,¬Hclient/src/Enums/Transporter/ContentType.phpnu„[µü¤PKS%W]�©ÓÓ'ôIclient/src/Enums/Transporter/Method.phpnu„[µü¤PKS%W]™::žž4Kclient/src/Enums/FineTuning/FineTuningEventLevel.phpnu„[µü¤PKS%W]Kô‰wMM+ Lclient/src/Transporters/HttpTransporter.phpnu„[µü¤PKS%W]Ö¡ØÛÛ,È]client/src/Contracts/TransporterContract.phpnu„[µü¤PKS%W]�1ˆÈÈ;ÿaclient/src/Contracts/ResponseHasMetaInformationContract.phpnu„[µü¤PKS%W]. b()2cclient/src/Contracts/ResponseContract.phpnu„[µü¤PKS%W]&S®F&&0¢gclient/src/Contracts/MetaInformationContract.phpnu„[µü¤PKS%W]ž ¸DD:(lclient/src/Contracts/Resources/ThreadsMessagesContract.phpnu„[µü¤PKS%W]Êudˆ2 2 7Örclient/src/Contracts/Resources/VectorStoresContract.phpnu„[µü¤PKS%W]ÊýOO3o|client/src/Contracts/Resources/RealtimeContract.phpnu„[µü¤PKS%W]Û°$ðÂÂB!€client/src/Contracts/Resources/VectorStoresFileBatchesContract.phpnu„[µü¤PKS%W]_šÖuxx4U†client/src/Contracts/Resources/FineTunesContract.phpnu„[µü¤PKS%W]ÿß/ïee01Žclient/src/Contracts/Resources/EditsContract.phpnu„[µü¤PKS%W]lÕ¸™ÿÿ;ö�client/src/Contracts/Resources/ThreadsRunsStepsContract.phpnu„[µü¤PKS%W]ÖË㟟5`”client/src/Contracts/Resources/FineTuningContract.phpnu„[µü¤PKS%W]½mí &&/d›client/src/Contracts/Resources/ChatContract.phpnu„[µü¤PKS%W]˨°–1éžclient/src/Contracts/Resources/ImagesContract.phpnu„[µü¤PKS%W]š.d››5Y£client/src/Contracts/Resources/EmbeddingsContract.phpnu„[µü¤PKS%W]�Ì‚fÁÁ2Y¥client/src/Contracts/Resources/ThreadsContract.phpnu„[µü¤PKS%W]l~2ƒƒ6|®client/src/Contracts/Resources/CompletionsContract.phpnu„[µü¤PKS%W]aÒùSšš6e²client/src/Contracts/Resources/ModerationsContract.phpnu„[µü¤PKS%W]>…Ñòšš0e´client/src/Contracts/Resources/FilesContract.phpnu„[µü¤PKS%W]Z3#¯……<_ºclient/src/Contracts/Resources/VectorStoresFilesContract.phpnu„[µü¤PKS%W]7Ÿˆh h 6PÀclient/src/Contracts/Resources/ThreadsRunsContract.phpnu„[µü¤PKS%W]ƒ#XOèè1Ìclient/src/Contracts/Resources/ModelsContract.phpnu„[µü¤PKS%W]óQë0gÐclient/src/Contracts/Resources/AudioContract.phpnu„[µü¤PKS%W]¦îËB5Ú×client/src/Contracts/Resources/ContainersContract.phpnu„[µü¤PKS%W]`Äá®~~4FÝclient/src/Contracts/Resources/ResponsesContract.phpnu„[µü¤PKS%W]Oç„==2(æclient/src/Contracts/Resources/BatchesContract.phpnu„[µü¤PKS%W]'úx+ËË5Çêclient/src/Contracts/Resources/AssistantsContract.phpnu„[µü¤PKS%W]G¡U ää/÷ðclient/src/Contracts/ResponseStreamContract.phpnu„[µü¤PKS%W]K�êää+:òclient/src/Contracts/StringableContract.phpnu„[µü¤PKS%W]i4‰‰'yóclient/src/Contracts/ClientContract.phpnu„[µü¤PKS%W]EžÌ®¼¼Yclient/src/Client.phpnu„[µü¤PKS%W]kàˆhmm5Z!client/src/Responses/Assistants/AssistantResponse.phpnu„[µü¤PKS%W]Z1š¸ŽŽA,9client/src/Responses/Assistants/AssistantResponseToolFunction.phpnu„[µü¤PKS%W]{#By>>P+?client/src/Responses/Assistants/AssistantResponseToolResourceCodeInterpreter.phpnu„[µü¤PKS%W]-:G쨨IéCclient/src/Responses/Assistants/AssistantResponseToolFunctionFunction.phpnu„[µü¤PKS%W]…o½lÂÂC Jclient/src/Responses/Assistants/AssistantResponseToolFileSearch.phpnu„[µü¤PKS%W]AË:¬ƒƒ9?Nclient/src/Responses/Assistants/AssistantListResponse.phpnu„[µü¤PKS%W]vÂè,'';+^client/src/Responses/Assistants/AssistantDeleteResponse.phpnu„[µü¤PKS%W]›©ÉÉC½dclient/src/Responses/Assistants/AssistantResponseResponseFormat.phpnu„[µü¤PKS%W]ÊJÚ3vvKùhclient/src/Responses/Assistants/AssistantResponseToolResourceFileSearch.phpnu„[µü¤PKS%W]‚™ÌÌHêmclient/src/Responses/Assistants/AssistantResponseToolCodeInterpreter.phpnu„[µü¤PKS%W]�ÒR¾¾B.rclient/src/Responses/Assistants/AssistantResponseToolResources.phpnu„[µü¤PKS%W],î¿¿G^yclient/src/Responses/Assistants/AssistantResponseResponseFormatText.phpnu„[µü¤PKS%W]$›Ù«g g 3”}client/src/Responses/Moderations/CreateResponse.phpnu„[µü¤PKS%W]Ljý ] ] 9^‡client/src/Responses/Moderations/CreateResponseResult.phpnu„[µü¤PKS%W]öOÀ††;$‘client/src/Responses/Moderations/CreateResponseCategory.phpnu„[µü¤PKS%W]1gìKŽŽ<”client/src/Responses/Audio/Streaming/TranscriptTextDelta.phpnu„[µü¤PKS%W]KKÑ�ƒƒ;œclient/src/Responses/Audio/Streaming/TranscriptTextDone.phpnu„[µü¤PKS%W]†êª''1ý£client/src/Responses/Audio/Streaming/Logprobs.phpnu„[µü¤PKS%W]ÂÕ«04 4 ;…ªclient/src/Responses/Audio/TranscriptionResponseSegment.phpnu„[µü¤PKS%W]šW)¹3$¶client/src/Responses/Audio/SpeechStreamResponse.phpnu„[µü¤PKS%W] ¥”X¨¨:£¼client/src/Responses/Audio/TranscriptionStreamResponse.phpnu„[µü¤PKS%W]—L)ÒÒ4µÄclient/src/Responses/Audio/TranscriptionResponse.phpnu„[µü¤PKS%W]‘u5¤™™8ëÓclient/src/Responses/Audio/TranscriptionResponseWord.phpnu„[µü¤PKS%W]z·O  2ìØclient/src/Responses/Audio/TranslationResponse.phpnu„[µü¤PKS%W]”ÝšÕ2 2 9`åclient/src/Responses/Audio/TranslationResponseSegment.phpnu„[µü¤PKS%W]¯Â  /ûðclient/src/Responses/Threads/ThreadResponse.phpnu„[µü¤PKS%W]騢 !!5oûclient/src/Responses/Threads/ThreadDeleteResponse.phpnu„[µü¤PKS%W]ƒùŒ§§Aõclient/src/Responses/Threads/Runs/ThreadRunResponseToolChoice.phpnu„[µü¤PKS%W]~B\[[@ client/src/Responses/Threads/Runs/ThreadRunResponseLastError.phpnu„[µü¤PKS%W]Žæ£““EØ client/src/Responses/Threads/Runs/Steps/ThreadRunStepListResponse.phpnu„[µü¤PKS%W];ÅøI……Fà client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseUsage.phpnu„[µü¤PKS%W]¸­=JŠŠZÛ&client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputLogs.phpnu„[µü¤PKS%W]d†º¤ ¤ Pï+client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreter.phpnu„[µü¤PKS%W]Ì61ú ú J6client/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaObject.phpnu„[µü¤PKS%W]¬­"‹> > L‡Bclient/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaResponse.phpnu„[µü¤PKS%W]¶œ³ô¼¼SANclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFileSearchToolCall.phpnu„[µü¤PKS%W]EÉ|-§§[€Tclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseMessageCreationStepDetails.phpnu„[µü¤PKS%W]hÖà§kkM²Zclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeToolCall.phpnu„[µü¤PKS%W]ï¡V¹Ê Ê Ušbclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseToolCallsStepDetails.phpnu„[µü¤PKS%W]tÛEÔ<<[éoclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputImage.phpnu„[µü¤PKS%W]#SrìQ°uclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFunctionToolCall.phpnu„[µü¤PKS%W]]U³Àëë`O|client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreterOutputImageImage.phpnu„[µü¤PKS%W]ĪÿýððPÊ€client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseMessageCreation.phpnu„[µü¤PKS%W]T «--A:…client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponse.phpnu„[µü¤PKS%W]þ6ò))IØžclient/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseFunction.phpnu„[µü¤PKS%W]ö¯i i =z¤client/src/Responses/Threads/Runs/ThreadRunStreamResponse.phpnu„[µü¤PKS%W]SÚ´DÀÀAP²client/src/Responses/Threads/Runs/ThreadRunResponseFileSearch.phpnu„[µü¤PKS%W]I},úÎÎJ�¶client/src/Responses/Threads/Runs/ThreadRunResponseToolCodeInterpreter.phpnu„[µü¤PKS%W]æÖº��Cɺclient/src/Responses/Threads/Runs/ThreadRunResponseToolFunction.phpnu„[µü¤PKS%W]ý%*ÄŠŠIÉÀclient/src/Responses/Threads/Runs/ThreadRunResponseTruncationStrategy.phpnu„[µü¤PKS%W]sƒòƒƒVÌÅclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionSubmitToolOutputs.phpnu„[µü¤PKS%W]ÞÖÖUÕÌclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionFunctionToolCall.phpnu„[µü¤PKS%W]ÁÝŒuggE0Óclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredAction.phpnu„[µü¤PKS%W]ƒìg¦¦K Úclient/src/Responses/Threads/Runs/ThreadRunResponseToolFunctionFunction.phpnu„[µü¤PKS%W]02tÁÁI-àclient/src/Responses/Threads/Runs/ThreadRunResponseToolChoiceFunction.phpnu„[µü¤PKS%W] ©¤íí<gäclient/src/Responses/Threads/Runs/ThreadRunResponseUsage.phpnu„[µü¤PKS%W] z¹‚ÎÎHÀèclient/src/Responses/Threads/Runs/ThreadRunResponseIncompleteDetails.phpnu„[µü¤PKS%W]^®„åh'h'7íclient/src/Responses/Threads/Runs/ThreadRunResponse.phpnu„[µü¤PKS%W]}Tˆˆ]Õclient/src/Responses/Threads/Runs/ThreadRunResponseRequiredActionFunctionToolCallFunction.phpnu„[µü¤PKS%W]ôãëââ;êclient/src/Responses/Threads/Runs/ThreadRunListResponse.phpnu„[µü¤PKS%W]ë�&ãèè\70client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFilePath.phpnu„[µü¤PKS%W]‰3 ,ÇÇ`«4client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFileCitation.phpnu„[µü¤PKS%W]±ÿí; ; H:client/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaObject.phpnu„[µü¤PKS%W]2Ä œhh`µGclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentImageFileObject.phpnu„[µü¤PKS%W]õÂQUµµ[­Nclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentTextObject.phpnu„[µü¤PKS%W]èºl·  UíWclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponseContentText.phpnu„[µü¤PKS%W]øó䯬 ¬ Jƒdclient/src/Responses/Threads/Messages/Delta/ThreadMessageDeltaResponse.phpnu„[µü¤PKS%W]ß‚îÁÁf©oclient/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFileCitationObject.phpnu„[µü¤PKS%W]xå¹llTxclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageUrlObject.phpnu„[µü¤PKS%W]üzÆ*ò ò Jð}client/src/Responses/Threads/Messages/ThreadMessageResponseContentText.phpnu„[µü¤PKS%W]aŠ<­­I\‰client/src/Responses/Threads/Messages/ThreadMessageResponseAttachment.phpnu„[µü¤PKS%W]4͉ÍP‚‘client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextObject.phpnu„[µü¤PKS%W]3¡¾ÄÖÖPšclient/src/Responses/Threads/Messages/ThreadMessageResponseIncompleteDetails.phpnu„[µü¤PKS%W]EÅn¡¼¼Omžclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageFile.phpnu„[µü¤PKS%W]jšùBW¨£client/src/Responses/Threads/Messages/ThreadMessageResponseAttachmentFileSearchTool.phpnu„[µü¤PKS%W]ž3e11\G¨client/src/Responses/Threads/Messages/ThreadMessageResponseAttachmentCodeInterpreterTool.phpnu„[µü¤PKS%W]wD‹¬¬C­client/src/Responses/Threads/Messages/ThreadMessageListResponse.phpnu„[µü¤PKS%W]`iú11E#¿client/src/Responses/Threads/Messages/ThreadMessageDeleteResponse.phpnu„[µü¤PKS%W]û×ìì?ÉÅclient/src/Responses/Threads/Messages/ThreadMessageResponse.phpnu„[µü¤PKS%W]?,‹¡££N$Ýclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageUrl.phpnu„[µü¤PKS%W]á#b„@@UEâclient/src/Responses/Threads/Messages/ThreadMessageResponseContentImageFileObject.phpnu„[µü¤PKS%W]‹-»!SSb èclient/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFilePathObject.phpnu„[µü¤PKS%W]Þþs·//8ïïclient/src/Responses/Batches/BatchResponseErrorsData.phpnu„[µü¤PKS%W]"˜«}}2†õclient/src/Responses/Batches/BatchListResponse.phpnu„[µü¤PKS%W]3§AÑÈÈ.eclient/src/Responses/Batches/BatchResponse.phpnu„[µü¤PKS%W]ECh&&4‹client/src/Responses/Batches/BatchResponseErrors.phpnu„[µü¤PKS%W]Nø 9¢¢;"client/src/Responses/Batches/BatchResponseRequestCounts.phpnu„[µü¤PKS%W]Æ'ÝŽ££,"'client/src/Responses/Models/ListResponse.phpnu„[µü¤PKS%W]´;‘•.!/client/src/Responses/Models/DeleteResponse.phpnu„[µü¤PKS%W]\eGîýý0™5client/src/Responses/Models/RetrieveResponse.phpnu„[µü¤PKS%W]l�@ ää4ö<client/src/Responses/Concerns/HasMetaInformation.phpnu„[µü¤PKS%W]ºÒ?5„„1>>client/src/Responses/Concerns/ArrayAccessible.phpnu„[µü¤PKS%W]¡æi:Ê Ê -#Bclient/src/Responses/Edits/CreateResponse.phpnu„[µü¤PKS%W]�0(Ö­­3JLclient/src/Responses/Edits/CreateResponseChoice.phpnu„[µü¤PKS%W]j8@ÐÐ2ZOclient/src/Responses/Edits/CreateResponseUsage.phpnu„[µü¤PKS%W]t}=žžAŒSclient/src/Responses/Completions/CreateResponseChoiceLogprobs.phpnu„[µü¤PKS%W]×;˜ ˜ ;›Yclient/src/Responses/Completions/CreateStreamedResponse.phpnu„[µü¤PKS%W]ÊVÝ6Þ Þ 3ždclient/src/Responses/Completions/CreateResponse.phpnu„[µü¤PKS%W]˜–S  9ßqclient/src/Responses/Completions/CreateResponseChoice.phpnu„[µü¤PKS%W]íù½¡éé8Rxclient/src/Responses/Completions/CreateResponseUsage.phpnu„[µü¤PKS%W]u—“~~8£|client/src/Responses/Containers/Objects/ExpiresAfter.phpnu„[µü¤PKS%W]A˜lJp p 5‰�client/src/Responses/Containers/RetrieveContainer.phpnu„[µü¤PKS%W]¢†8°òò2^‹client/src/Responses/Containers/ListContainers.phpnu„[µü¤PKS%W]È ’f f 3²”client/src/Responses/Containers/CreateContainer.phpnu„[µü¤PKS%W]k îññ3{žclient/src/Responses/Containers/DeleteContainer.phpnu„[µü¤PKS%W]±u‹²ÖÖ:Ϥclient/src/Responses/Chat/CreateResponseChoiceLogprobs.phpnu„[µü¤PKS%W]Li¡¸ÕÕ4ªclient/src/Responses/Chat/CreateResponseToolCall.phpnu„[µü¤PKS%W]–B#4ˆˆHH®client/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.phpnu„[µü¤PKS%W]In’3AHµclient/src/Responses/Chat/CreateResponseChoiceLogprobsContent.phpnu„[µü¤PKS%W]ë:EøøI¹¹client/src/Responses/Chat/CreateResponseChoiceAnnotationsUrlCitations.phpnu„[µü¤PKS%W]²*\º º 4*¾client/src/Responses/Chat/CreateStreamedResponse.phpnu„[µü¤PKS%W]ä1Ù ÛÛ<HÊclient/src/Responses/Chat/CreateResponseToolCallFunction.phpnu„[µü¤PKS%W]lЉîî8�Íclient/src/Responses/Chat/CreateResponseFunctionCall.phpnu„[µü¤PKS%W]ŒŠ:¬‹‹@åÐclient/src/Responses/Chat/CreateStreamedResponseFunctionCall.phpnu„[µü¤PKS%W]µT…j††,àÔclient/src/Responses/Chat/CreateResponse.phpnu„[µü¤PKS%W];Ï·ää9Âçclient/src/Responses/Chat/CreateStreamedResponseDelta.phpnu„[µü¤PKS%W]s�o~~Dðclient/src/Responses/Chat/CreateResponseUsagePromptTokensDetails.phpnu„[µü¤PKS%W]ŒÙV}}:ôclient/src/Responses/Chat/CreateStreamedResponseChoice.phpnu„[µü¤PKS%W]ž¨833Dèøclient/src/Responses/Chat/CreateStreamedResponseToolCallFunction.phpnu„[µü¤PKS%W]}Qu*2�üclient/src/Responses/Chat/CreateResponseChoice.phpnu„[µü¤PKS%W]¯¬úõõ1 client/src/Responses/Chat/CreateResponseUsage.phpnu„[µü¤PKS%W]E1Y}±±=a client/src/Responses/Chat/CreateResponseChoiceAnnotations.phpnu„[µü¤PKS%W]v¨ºQ’’7client/src/Responses/Chat/CreateResponseChoiceAudio.phpnu„[µü¤PKS%W] ˜YÃÓÓ<xclient/src/Responses/Chat/CreateStreamedResponseToolCall.phpnu„[µü¤PKS%W]�ÚMt t 3·client/src/Responses/Chat/CreateResponseMessage.phpnu„[µü¤PKS%W] õ„° ° 'Ž)client/src/Responses/StreamResponse.phpnu„[µü¤PKS%W]¿£ì°ww-•4client/src/Responses/Meta/MetaInformation.phpnu„[µü¤PKS%W]÷$¦¨¨3iFclient/src/Responses/Meta/MetaInformationOpenAI.phpnu„[µü¤PKS%W]õ®Y|%%6tIclient/src/Responses/Meta/MetaInformationRateLimit.phpnu„[µü¤PKS%W]Ü�Ê" " 1ÿKclient/src/Responses/Images/VariationResponse.phpnu„[µü¤PKS%W]_'ã ,‚Vclient/src/Responses/Images/EditResponse.phpnu„[µü¤PKS%W]r©Dç`client/src/Responses/Images/ImageResponseUsageInputTokensDetails.phpnu„[µü¤PKS%W]–JÁÁ2`dclient/src/Responses/Images/CreateResponseData.phpnu„[µü¤PKS%W]3@è�??2ƒjclient/src/Responses/Images/ImageResponseUsage.phpnu„[µü¤PKS%W]ÞYæò^ ^ .$pclient/src/Responses/Images/CreateResponse.phpnu„[µü¤PKS%W]µ÷±XX5àzclient/src/Responses/Images/VariationResponseData.phpnu„[µü¤PKS%W]%Î^WSS0�client/src/Responses/Images/EditResponseData.phpnu„[µü¤PKS%W]J2Œu££NP„client/src/Responses/Realtime/TranscriptionSession/InputAudioTranscription.phpnu„[µü¤PKS%W]‰ÕÌFF6qŠclient/src/Responses/Realtime/Session/ClientSecret.phpnu„[µü¤PKS%W]øzÝèA�client/src/Responses/Realtime/Session/InputAudioTranscription.phpnu„[µü¤PKS%W]j L�!!7¤“client/src/Responses/Realtime/Session/TurnDetection.phpnu„[µü¤PKS%W]`t±±G G >,šclient/src/Responses/Realtime/TranscriptionSessionResponse.phpnu„[µü¤PKS%W]8òÉêê4á¥client/src/Responses/Realtime/Tools/FunctionTool.phpnu„[µü¤PKS%W]�mgÇáá1/¬client/src/Responses/Realtime/SessionResponse.phpnu„[µü¤PKS%W]œ)#bbMq¿client/src/Responses/VectorStores/Search/VectorStoreSearchResponseContent.phpnu„[µü¤PKS%W]ìꙋ ‹ FPÄclient/src/Responses/VectorStores/Search/VectorStoreSearchResponse.phpnu„[µü¤PKS%W]Œ)u- JQÑclient/src/Responses/VectorStores/Search/VectorStoreSearchResponseFile.phpnu„[µü¤PKS%W]‡<(~++?ÕÚclient/src/Responses/VectorStores/VectorStoreDeleteResponse.phpnu„[µü¤PKS%W]‰7!þÒÒ9oáclient/src/Responses/VectorStores/VectorStoreResponse.phpnu„[µü¤PKS%W]p�÷3qqCªñclient/src/Responses/VectorStores/VectorStoreResponseFileCounts.phpnu„[µü¤PKS%W]NüZH H =Žøclient/src/Responses/VectorStores/VectorStoreListResponse.phpnu„[µü¤PKS%W]o-£î^^EC client/src/Responses/VectorStores/VectorStoreResponseExpiresAfter.phpnu„[µü¤PKS%W]êiXJ9 9 G client/src/Responses/VectorStores/Files/VectorStoreFileListResponse.phpnu„[µü¤PKS%W]—tN·qqYÆ client/src/Responses/VectorStores/Files/VectorStoreFileResponseChunkingStrategyStatic.phpnu„[µü¤PKS%W]ý˜®CÀ client/src/Responses/VectorStores/Files/VectorStoreFileResponse.phpnu„[µü¤PKS%W]¢}I  X;/ client/src/Responses/VectorStores/Files/VectorStoreFileResponseChunkingStrategyOther.phpnu„[µü¤PKS%W]2ý{]yyLÍ3 client/src/Responses/VectorStores/Files/VectorStoreFileResponseLastError.phpnu„[µü¤PKS%W]W=…«55IÂ8 client/src/Responses/VectorStores/Files/VectorStoreFileDeleteResponse.phpnu„[µü¤PKS%W]è= ^  Np? client/src/Responses/VectorStores/FileBatches/VectorStoreFileBatchResponse.phpnu„[µü¤PKS%W]ÂçÉ É 9J client/src/Responses/FineTuning/ListJobEventsResponse.phpnu„[µü¤PKS%W]ù¦Qù’’73T client/src/Responses/FineTuning/RetrieveJobResponse.phpnu„[µü¤PKS%W]dq�¦ãã>,g client/src/Responses/FineTuning/ListJobEventsResponseEvent.phpnu„[µü¤PKS%W]Ýè˜Ë Ë 4}p client/src/Responses/FineTuning/ListJobsResponse.phpnu„[µü¤PKS%W]NsNôôF¬} client/src/Responses/FineTuning/RetrieveJobResponseHyperparameters.phpnu„[µü¤PKS%W]WÀá�ÈÈ<„ client/src/Responses/FineTuning/RetrieveJobResponseError.phpnu„[µü¤PKS%W]ˆÐS†mmBJ‰ client/src/Responses/FineTuning/ListJobEventsResponseEventData.phpnu„[µü¤PKS%W]ŽËÊÅ;)� client/src/Responses/Embeddings/CreateResponseEmbedding.phpnu„[µü¤PKS%W]¨|-9 9 2˜“ client/src/Responses/Embeddings/CreateResponse.phpnu„[µü¤PKS%W]ÝAEƒ73ž client/src/Responses/Embeddings/CreateResponseUsage.phpnu„[µü¤PKS%W]³#¹zww@ž¡ client/src/Responses/Responses/ToolChoice/FunctionToolChoice.phpnu„[µü¤PKS%W]A@ìMM>…¦ client/src/Responses/Responses/ToolChoice/HostedToolChoice.phpnu„[µü¤PKS%W]Ûç­þ}}I@« client/src/Responses/Responses/Input/ComputerToolCallOutputScreenshot.phpnu„[µü¤PKS%W]ÏØŽE½ ½ 56± client/src/Responses/Responses/Input/InputMessage.phpnu„[µü¤PKS%W]—œXRââ@X¼ client/src/Responses/Responses/Input/AcknowledgedSafetyCheck.phpnu„[µü¤PKS%W]n—ßEwwEªÁ client/src/Responses/Responses/Input/InputMessageContentInputText.phpnu„[µü¤PKS%W]³À>žž?–Æ client/src/Responses/Responses/Input/FunctionToolCallOutput.phpnu„[µü¤PKS%W]ƒ¸¹MÙ Ù ?£Í client/src/Responses/Responses/Input/ComputerToolCallOutput.phpnu„[µü¤PKS%W]ÖzÇÇFëØ client/src/Responses/Responses/Input/InputMessageContentInputImage.phpnu„[µü¤PKS%W]tª}Õ¾¾E(ß client/src/Responses/Responses/Input/InputMessageContentInputFile.phpnu„[µü¤PKS%W]/"–”tt@[å client/src/Responses/Responses/Streaming/ImageGenerationPart.phpnu„[µü¤PKS%W]…–çÉE?ì client/src/Responses/Responses/Streaming/ReasoningSummaryTextDone.phpnu„[µü¤PKS%W] ZÕîQQD¸ó client/src/Responses/Responses/Streaming/CodeInterpreterCodeDone.phpnu„[µü¤PKS%W]¦OkÒÒ;}ú client/src/Responses/Responses/Streaming/OutputTextDone.phpnu„[µü¤PKS%W] �Ä[[Eº client/src/Responses/Responses/Streaming/CodeInterpreterCodeDelta.phpnu„[µü¤PKS%W]m|‰‰7Š client/src/Responses/Responses/Streaming/OutputItem.phpnu„[µü¤PKS%W]ðøŽ_ûû4z client/src/Responses/Responses/Streaming/McpCall.phpnu„[µü¤PKS%W]øÏÝ>eeGÙ client/src/Responses/Responses/Streaming/FunctionCallArgumentsDelta.phpnu„[µü¤PKS%W]?·k“ÒÒ8µ& client/src/Responses/Responses/Streaming/RefusalDone.phpnu„[µü¤PKS%W]…ýqúžž;ï- client/src/Responses/Responses/Streaming/FileSearchCall.phpnu„[µü¤PKS%W]©¸T[[Cø3 client/src/Responses/Responses/Streaming/McpListToolsInProgress.phpnu„[µü¤PKS%W]†ú FÆ: client/src/Responses/Responses/Streaming/ReasoningSummaryTextDelta.phpnu„[µü¤PKS%W]`Y_ÝÝ2JB client/src/Responses/Responses/Streaming/Error.phpnu„[µü¤PKS%W]Š‚xØÍÍ9‰H client/src/Responses/Responses/Streaming/RefusalDelta.phpnu„[µü¤PKS%W]ûŸ…_ttF¿O client/src/Responses/Responses/Streaming/FunctionCallArgumentsDone.phpnu„[µü¤PKS%W]wkÐa<<F©V client/src/Responses/Responses/Streaming/OutputTextAnnotationAdded.phpnu„[µü¤PKS%W]$©üâ! ! 8[e client/src/Responses/Responses/Streaming/ContentPart.phpnu„[µü¤PKS%W]‡ûg¶ÈÈ<än client/src/Responses/Responses/Streaming/OutputTextDelta.phpnu„[µü¤PKS%W]?!Ð<<Hv client/src/Responses/Responses/Streaming/ImageGenerationPartialImage.phpnu„[µü¤PKS%W]SØQhBÌ~ client/src/Responses/Responses/Streaming/McpCallArgumentsDelta.phpnu„[µü¤PKS%W]ÇÛdÁÁAF† client/src/Responses/Responses/Streaming/ReasoningSummaryPart.phpnu„[µü¤PKS%W]WÙ··@xŽ client/src/Responses/Responses/Streaming/CodeInterpreterCall.phpnu„[µü¤PKS%W]™…Í#AŸ” client/src/Responses/Responses/Streaming/McpCallArgumentsDone.phpnu„[µü¤PKS%W]ÙÛF™™:+œ client/src/Responses/Responses/Streaming/WebSearchCall.phpnu„[µü¤PKS%W]«X9.¢ client/src/Responses/Responses/Streaming/McpListTools.phpnu„[µü¤PKS%W]ÇLÔ ôôG«§ client/src/Responses/Responses/CreateResponseUsageInputTokenDetails.phpnu„[µü¤PKS%W]ø©)qšš1¬ client/src/Responses/Responses/ListInputItems.phpnu„[µü¤PKS%W]T‹%Xqq8¾ client/src/Responses/Responses/ReferencePromptObject.phpnu„[µü¤PKS%W]Œ¥Î²ëë1êà client/src/Responses/Responses/DeleteResponse.phpnu„[µü¤PKS%W]N²Ä¤  H6Ê client/src/Responses/Responses/CreateResponseUsageOutputTokenDetails.phpnu„[µü¤PKS%W]yµ…æ,5,53¹Î client/src/Responses/Responses/RetrieveResponse.phpnu„[µü¤PKS%W]›ž%Ñ’’9H client/src/Responses/Responses/CreateStreamedResponse.phpnu„[µü¤PKS%W]g©ª 7C# client/src/Responses/Responses/Tool/ComputerUseTool.phpnu„[µü¤PKS%W] mŸ;YY@¸) client/src/Responses/Responses/Tool/FileSearchCompoundFilter.phpnu„[µü¤PKS%W]EB´>>;�0 client/src/Responses/Responses/Tool/CodeInterpreterTool.phpnu„[µü¤PKS%W]^‹þ///=*7 client/src/Responses/Responses/Tool/WebSearchUserLocation.phpnu„[µü¤PKS%W]p3ªî 5Æ= client/src/Responses/Responses/Tool/RemoteMcpTool.phpnu„[µü¤PKS%W]éuMÍææ5KK client/src/Responses/Responses/Tool/WebSearchTool.phpnu„[µü¤PKS%W]„iŸÿÿD–R client/src/Responses/Responses/Tool/CodeInterpreterContainerAuto.phpnu„[µü¤PKS%W]ˆž •é é 6 X client/src/Responses/Responses/Tool/FileSearchTool.phpnu„[µü¤PKS%W]a] ] BI• client/src/Responses/Responses/Output/OutputFileSearchToolCall.phpnu„[µü¤PKS%W]Ü7AáááGŸ client/src/Responses/Responses/Output/OutputImageGenerationToolCall.phpnu„[µü¤PKS%W]YBªEp¥ client/src/Responses/Responses/Output/OutputMessageContentRefusal.phpnu„[µü¤PKS%W]¹bLrr<dª client/src/Responses/Responses/Output/OutputMcpListTools.phpnu„[µü¤PKS%W]°G"ii7B² client/src/Responses/Responses/Output/OutputMcpCall.phpnu„[µü¤PKS%W]œœUë––@» client/src/Responses/Responses/Output/OutputMcpListToolsTool.phpnu„[µü¤PKS%W]{åº[HH^ client/src/Responses/Responses/Output/OutputMessageContentOutputTextAnnotationsUrlCitation.phpnu„[µü¤PKS%W]Ã¥;ëAîÈ client/src/Responses/Responses/Output/OutputWebSearchToolCall.phpnu„[µü¤PKS%W]"€C””:}Î client/src/Responses/Responses/Format/JsonSchemaFormat.phpnu„[µü¤PKS%W]�TuÝÅÅ4{Õ client/src/Responses/Responses/Format/TextFormat.phpnu„[µü¤PKS%W]º^c¨ññ:¤Ù client/src/Responses/Responses/Format/JsonObjectFormat.phpnu„[µü¤PKS%W]ÜNÓàà+ÿÝ client/src/Responses/Files/ListResponse.phpnu„[µü¤PKS%W]Mòë -:ç client/src/Responses/Files/DeleteResponse.phpnu„[µü¤PKS%W]ì]±v v /°í client/src/Responses/Files/RetrieveResponse.phpnu„[µü¤PKS%W]î‰Ëp p -…ø client/src/Responses/Files/CreateResponse.phpnu„[µü¤PKS%W]ã£%dÿÿ/R client/src/Responses/FineTunes/ListResponse.phpnu„[µü¤PKS%W]¬÷cõõ@° client/src/Responses/FineTunes/RetrieveStreamedResponseEvent.phpnu„[µü¤PKS%W]rÞrO°°3 client/src/Responses/FineTunes/RetrieveResponse.phpnu„[µü¤PKS%W]ë~>ll>(8 client/src/Responses/FineTunes/RetrieveResponseHyperparams.phpnu„[µü¤PKS%W]{6ök„„8? client/src/Responses/FineTunes/RetrieveResponseEvent.phpnu„[µü¤PKS%W]ØŠšt  7îD client/src/Responses/FineTunes/RetrieveResponseFile.phpnu„[µü¤PKS%W]tuwÇÇ5\N client/src/Responses/FineTunes/ListEventsResponse.phpnu„[µü¤PKS%W]äú*½½#ˆV client/src/Resources/FineTuning.phpnu„[µü¤PKS%W]²/>›»»#˜k client/src/Resources/Assistants.phpnu„[µü¤PKS%W]äVúõ ¦� client/src/Resources/Batches.phpnu„[µü¤PKS%W]”z��” client/src/Resources/Chat.phpnu„[µü¤PKS%W]s”ƒÄ77$ëœ client/src/Resources/Completions.phpnu„[µü¤PKS%W]ÛÄWƒ0ƒ0$v¥ client/src/Resources/ThreadsRuns.phpnu„[µü¤PKS%W]”¬“É  #MÖ client/src/Resources/Containers.phpnu„[µü¤PKS%W]Õ¡^#¸á client/src/Resources/Embeddings.phpnu„[µü¤PKS%W]òS¢â¯¯"*æ client/src/Resources/FineTunes.phpnu„[µü¤PKS%W];¯ ÖÖ +client/src/Resources/Threads.phpnu„[µü¤PKS%W]QΙ  %Qclient/src/Resources/VectorStores.phpnu„[µü¤PKS%W]6è²Û÷÷/³4client/src/Resources/Concerns/Transportable.phpnu„[µü¤PKS%W]\hØww, 6client/src/Resources/Concerns/Streamable.phpnu„[µü¤PKS%W]ú7Š@ÆÆ!Ü9client/src/Resources/Realtime.phpnu„[µü¤PKS%W]„BÅrró@client/src/Resources/Models.phpnu„[µü¤PKS%W]-ˆ }š š )´Iclient/src/Resources/ThreadsRunsSteps.phpnu„[µü¤PKS%W]õ£Ò¤¤§Wclient/src/Resources/Audio.phpnu„[µü¤PKS%W]�ÅÍ?SS(™gclient/src/Resources/ThreadsMessages.phpnu„[µü¤PKS%W]Í-³QQ"D�client/src/Resources/Responses.phpnu„[µü¤PKS%W]ůóq” ” ç’client/src/Resources/Images.phpnu„[µü¤PKS%W]˜†sœ''*Ê�client/src/Resources/VectorStoresFiles.phpnu„[µü¤PKS%W]ˆˆ²æ æ K±client/src/Resources/Files.phpnu„[µü¤PKS%W]ý:–ÔÔ¾client/src/Resources/Edits.phpnu„[µü¤PKS%W]h£n•II$¡Ãclient/src/Resources/Moderations.phpnu„[µü¤PKS%W]Øf£SS0>Èclient/src/Resources/VectorStoresFileBatches.phpnu„[µü¤PKS%W]N§&‘‘ñ×client/composer.jsonnu„[µü¤PKS%W]E_> IIÆàclient/LICENSE.mdnu„[µü¤PKÉÉ¿ßPå