generate method

  1. @override
Future<ModelMessage> generate(
  1. List<LLMMessage> messages, {
  2. List<Tool>? tools,
  3. ToolChoice? toolChoice,
  4. required ModelConfig modelConfig,
  5. bool? jsonOutput,
  6. CancelToken? cancelToken,
})
override

Implementation

@override
Future<ModelMessage> generate(
  List<LLMMessage> messages, {
  List<Tool>? tools,
  ToolChoice? toolChoice,
  required ModelConfig modelConfig,
  bool? jsonOutput,
  CancelToken? cancelToken,
}) async {
  await rateLimitGate.acquire(estimatedTokens: modelConfig.maxTokens ?? 0);
  final response = await inner.generate(
    messages,
    tools: tools,
    toolChoice: toolChoice,
    modelConfig: modelConfig,
    jsonOutput: jsonOutput,
    cancelToken: cancelToken,
  );
  final hash = hasher.compute(
    messages: messages,
    tools: tools,
    modelConfig: modelConfig,
    jsonOutput: jsonOutput,
    trialSalt: trialSalt,
  );
  try {
    await store.put(hash, response);
  } catch (e, st) {
    _logger.warning('failed to record response for $hash', e, st);
  }
  return response;
}