simpleQuery method
Future<String>
simpleQuery({
- String? model,
- List<
Message> history = const [], - Duration? delay,
- required String prompt,
- String? system,
- String role = 'user',
- List<
Context> ? contexts,
override
Implementation
@override
Future<String> simpleQuery({
String? model,
List<Message> history = const [],
Duration? delay,
required String prompt,
String? system,
String role = 'user',
List<Context>? contexts,
}) async {
await Future.delayed(delay ?? this.delay ?? const Duration(milliseconds: 300));
final contextMessage = buildPrompt(prompt: prompt, contexts: contexts);
final data = {
'model': model ?? _model,
"stop": [],
//"stream": true,
//"stream_options": {"include_usage": true, "continuous_usage_stats": true},
"top_p": 1,
"max_tokens": 1000,
"temperature": 1,
"presence_penalty": 1,
"frequency_penalty": 1,
'messages': [
if (system != null) {'role': 'system', 'content': system},
...history.map((message) => {'role': message.type, 'content': message.content}),
{'role': 'user', 'content': prompt + contextMessage},
],
};
try {
logRequest(data);
final response = await _dio.post('/chat/completions', data: data);
logResponse(response.data);
final choices = response.data['choices'];
if (choices != null && choices.isNotEmpty) {
return choices[0]['message']['content'] as String;
} else {
throw Exception('No response from ChatGPT API.');
}
} on DioException catch (e) {
logError(e);
throw Exception('Failed to fetch response: ${e.response?.data ?? e.message}');
}
}