completeMessages method

Future<AIResponse> completeMessages(
  1. List<AIMessage> messages, {
  2. int? maxTokens,
  3. double? temperature,
  4. bool useCache = false,
  5. List<AITool>? tools,
})

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;
}