fromGeminiPart function
Part
fromGeminiPart(
- Part p
)
Implementation
@visibleForTesting
Part fromGeminiPart(gcl.Part p) {
final metadata = <String, dynamic>{
if (p.thoughtSignature != null) 'thoughtSignature': p.thoughtSignature,
};
if (p.text != null) {
if (p.thought == true) {
return ReasoningPart(reasoning: p.text!, metadata: metadata);
}
return TextPart(text: p.text!, metadata: metadata);
}
if (p.functionCall != null) {
return ToolRequestPart(
toolRequest: ToolRequest(
ref: p.functionCall!.id == '' ? null : p.functionCall!.id,
name: _fromGeminiToolName(p.functionCall!.name ?? ''),
input: p.functionCall!.args,
),
metadata: metadata,
);
}
if (p.codeExecutionResult != null) {
return CustomPart(
custom: {'codeExecutionResult': p.codeExecutionResult!.toJson()},
metadata: metadata,
);
}
if (p.executableCode != null) {
return CustomPart(
custom: {'executableCode': p.executableCode!.toJson()},
metadata: metadata,
);
}
if (p.inlineData != null) {
final mimeType = p.inlineData!.mimeType;
final data = p.inlineData!.data;
if (data != null) {
return MediaPart(
media: Media(url: 'data:$mimeType;base64,$data', contentType: mimeType),
metadata: metadata,
);
}
}
if (p.fileData != null) {
final mimeType = p.fileData!.mimeType;
final fileUri = p.fileData!.fileUri;
if (fileUri != null) {
return MediaPart(
media: Media(url: fileUri, contentType: mimeType),
metadata: metadata,
);
}
}
throw UnimplementedError('Unsupported part type: ${p.toJson()}');
}