WordPress\AiClient\Providers\OpenAiCompatibleImplementation
AbstractOpenAiCompatibleImageGenerationModel::parseResponseToGenerativeAiResult
Parses the response from the API endpoint to a generative AI result.
Method of the class: AbstractOpenAiCompatibleImageGenerationModel{}
No Hooks.
Returns
GenerativeAiResult. The parsed generative AI result.
Usage
// protected - for code of main (parent) or child class $result = $this->parseResponseToGenerativeAiResult( $response, $expectedMimeType ): GenerativeAiResult;
- $response(Response) (required)
- The response from the API endpoint.
- $expectedMimeType(string)
- The expected MIME type the response is in.
Default:'image/png'
Changelog
| Since 0.1.0 | Introduced. |
AbstractOpenAiCompatibleImageGenerationModel::parseResponseToGenerativeAiResult() AbstractOpenAiCompatibleImageGenerationModel::parseResponseToGenerativeAiResult code WP 7.0
protected function parseResponseToGenerativeAiResult(Response $response, string $expectedMimeType = 'image/png'): GenerativeAiResult
{
/** @var ResponseData $responseData */
$responseData = $response->getData();
if (!isset($responseData['data']) || !$responseData['data']) {
throw ResponseException::fromMissingData($this->providerMetadata()->getName(), 'data');
}
if (!is_array($responseData['data'])) {
throw ResponseException::fromInvalidData($this->providerMetadata()->getName(), 'data', 'The value must be an array.');
}
$candidates = [];
foreach ($responseData['data'] as $index => $choiceData) {
if (!is_array($choiceData) || array_is_list($choiceData)) {
throw ResponseException::fromInvalidData($this->providerMetadata()->getName(), "data[{$index}]", 'The value must be an associative array.');
}
$candidates[] = $this->parseResponseChoiceToCandidate($choiceData, $index, $expectedMimeType);
}
$id = $this->getResultId($responseData);
if (isset($responseData['usage']) && is_array($responseData['usage'])) {
$usage = $responseData['usage'];
$tokenUsage = new TokenUsage($usage['input_tokens'] ?? 0, $usage['output_tokens'] ?? 0, $usage['total_tokens'] ?? 0);
} else {
$tokenUsage = new TokenUsage(0, 0, 0);
}
// Use any other data from the response as provider-specific response metadata.
$providerMetadata = $responseData;
unset($providerMetadata['id'], $providerMetadata['data'], $providerMetadata['usage']);
return new GenerativeAiResult($id, $candidates, $tokenUsage, $this->providerMetadata(), $this->metadata(), $providerMetadata);
}