createMessage method
Future<Message>
createMessage({
- required List<
Message> messages, - required String systemPrompt,
- List<
ToolDefinition> tools = const [], - int? maxTokens,
override
Send a non-streaming completion via the Gemini generateContent endpoint.
Implementation
@override
Future<Message> createMessage({
required List<Message> messages,
required String systemPrompt,
List<ToolDefinition> tools = const [],
int? maxTokens,
}) async {
final body = _buildRequestBody(
messages: messages,
systemPrompt: systemPrompt,
tools: tools,
maxTokens: maxTokens,
);
final url = '${config.baseUrl}/models/${config.model}'
':generateContent?key=${config.apiKey}';
_log.d('Gemini non-streaming request to ${config.model}');
final response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
...config.extraHeaders,
},
body: jsonEncode(body),
);
if (response.statusCode != 200) {
_log.e('Gemini API error ${response.statusCode}: ${response.body}');
throw Exception(
'Gemini API error ${response.statusCode}: ${response.body}',
);
}
return _parseResponse(jsonDecode(response.body) as Map<String, dynamic>);
}