parseOpenAiImageResponse function
OpenAI 形式の画像生成レスポンス(data[].b64_json / data[].url)を
ImageGenerationResponse に変換する。
media_type(OpenRouter)が無ければ defaultMimeType。usage は
input_tokens / output_tokens(OpenAI)か prompt_tokens /
completion_tokens、費用は usage.cost(OpenRouter)。
Implementation
ImageGenerationResponse parseOpenAiImageResponse(
Map<String, dynamic> data, {
String defaultMimeType = 'image/png',
}) {
final images = <LLMImagePart>[];
String? revised;
for (final item in (data['data'] as List?) ?? const []) {
if (item is! Map<String, dynamic>) continue;
final b64 = item['b64_json'];
final url = item['url'];
if (b64 is String && b64.isNotEmpty) {
images.add(
LLMImagePart.bytes(
base64Decode(b64),
mimeType: (item['media_type'] as String?) ?? defaultMimeType,
),
);
} else if (url is String && url.isNotEmpty) {
images.add(LLMImagePart.dataUri(url));
}
revised ??= item['revised_prompt'] as String?;
}
final usage = data['usage'];
final usageMap = usage is Map<String, dynamic> ? usage : null;
return ImageGenerationResponse(
images: images,
usage: usageMap == null ? null : _parseGenerationUsage(usageMap),
costUsd: (usageMap?['cost'] as num?)?.toDouble(),
revisedPrompt: revised,
);
}