관리-도구
편집 파일: ThreadMessageDeltaResponseContentText.php
<?php declare(strict_types=1); namespace OpenAI\Responses\Threads\Messages\Delta; use OpenAI\Contracts\ResponseContract; use OpenAI\Responses\Concerns\ArrayAccessible; use OpenAI\Responses\Threads\Messages\ThreadMessageResponseContentTextAnnotationFileCitationObject; use OpenAI\Responses\Threads\Messages\ThreadMessageResponseContentTextAnnotationFilePathObject; use OpenAI\Testing\Responses\Concerns\Fakeable; /** * @implements ResponseContract<array{value: ?string, annotations: array<int, array{type: 'file_citation', text: string, file_citation: array{file_id: string, quote?: string}, start_index: int, end_index: int}|array{type: 'file_path', text: string, file_path: array{file_id: string}, start_index: int, end_index: int}>}> */ final class ThreadMessageDeltaResponseContentText implements ResponseContract { /** * @use ArrayAccessible<array{value: ?string, annotations: array<int, array{type: 'file_citation', text: string, file_citation: array{file_id: string, quote?: string}, start_index: int, end_index: int}|array{type: 'file_path', text: string, file_path: array{file_id: string}, start_index: int, end_index: int}>}> */ 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<int, array{type: 'file_citation', text: string, file_citation: array{file_id: string, quote?: string}, start_index: int, end_index: int}|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 { $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, ), ]; } }