completion method

Future<CactusCompletionResult> completion(
  1. List<ChatMessage> messages, {
  2. int maxTokens = 256,
  3. double? temperature,
  4. int? topK,
  5. double? topP,
  6. List<String>? stopSequences,
  7. CactusTokenCallback? onToken,
})

Implementation

Future<CactusCompletionResult> completion(
  List<ChatMessage> messages, {
  int maxTokens = 256,
  double? temperature,
  int? topK,
  double? topP,
  List<String>? stopSequences,
  CactusTokenCallback? onToken,
}) async {
  if (_context == null) throw CactusException('CactusLM not initialized');

  final processed = _historyManager.processNewMessages(messages);
  if (processed.requiresReset) {
    _context!.rewind();
    _historyManager.reset();
  }

  final result = await _context!.completion(
    CactusCompletionParams(
      messages: processed.newMessages,
      maxPredictedTokens: maxTokens,
      temperature: temperature,
      topK: topK,
      topP: topP,
      stopSequences: stopSequences,
      onNewToken: onToken,
    ),
  );

  _historyManager.update(processed.newMessages, ChatMessage(role: 'assistant', content: result.text));

  return result;
}