chatCompletion method
Future<ChatCompletionResponse>
chatCompletion({
- required List<
ChatMessage> messages, - required ChatCompletionRequest options,
override
Implementation
@override
Future<ChatCompletionResponse> chatCompletion({required List<ChatMessage> messages, required ChatCompletionRequest options}) async {
final generationConfig = _generationConfig(options);
final systemMessage = messages.where((message) => message.role == MessageRole.system).firstOrNull?.content;
final ai = _firebaseAI.generativeModel(
model: options.model,
systemInstruction: systemMessage != null ? Content.system(systemMessage) : null,
generationConfig: generationConfig
);
final conversationMessages = messages.where((message) => message.role != MessageRole.system)
.map((message) => Content(message.role == MessageRole.assistant ? 'model' : 'user', [TextPart(message.content)]))
.toList();
try {
final response = await ai.generateContent(conversationMessages);
if (response.text != null) {
return _parseResponse(options.model, response);
} else {
throw AIException(
'Request failed',
provider: providerName,
);
}
} catch (e) {
if (e is AIException) rethrow;
throw AINetworkException(e.toString(), provider: providerName);
}
}