complete method

  1. @override
Future<ChatResponse> complete(
  1. List<ChatMessage> messages, {
  2. String? system,
  3. int? maxTokens,
})
override

Generates a complete response to messages.

system is prepended to any system messages in messages. maxTokens overrides the client's default output limit.

Implementation

@override
Future<ChatResponse> complete(
  List<ChatMessage> messages, {
  String? system,
  int? maxTokens,
}) async {
  final key = _render(messages, system);
  final cached = await cache.lookup(key);
  if (cached != null) {
    return ChatResponse(cached, stopReason: 'cache_hit', model: inner.model);
  }
  final response = await inner.complete(
    messages,
    system: system,
    maxTokens: maxTokens,
  );
  // Truncated answers are not worth replaying.
  if (!response.truncated) await cache.put(key, response.text);
  return response;
}