completeMessages method
Sends a completion request with full message history.
Implementation
Future<AIResponse> completeMessages(
List<AIMessage> messages, {
int? maxTokens,
double? temperature,
bool useCache = false,
List<AITool>? tools,
}) async {
_validateAttachments(messages);
// Check cache
if (useCache && cache != null) {
final cacheKey = ResponseCache.keyFromMessages(messages, 'auto');
final cached = cache!.get(cacheKey);
if (cached != null) return cached;
}
// Enforce budget
if (budget != null) {
final estimated = _estimateRequestTokens(messages);
budget!.enforce(estimated);
}
// Execute with retry
final response = await retryHandler.execute(
() => router.route(
messages,
maxTokens: maxTokens,
temperature: temperature,
tools: tools,
),
);
// Record usage
tokenTracker.record(response.usage);
budget?.recordUsage(response.usage);
// Cache response
if (useCache && cache != null) {
final cacheKey = ResponseCache.keyFromMessages(messages, response.model);
cache!.put(cacheKey, response);
}
return response;
}