getResponseAsync method

  1. @override
Stream<String> getResponseAsync()
override

Implementation

@override
Stream<String> getResponseAsync() async* {
  _assertNotClosed();
  final text = _queryBuffer.toString();
  _queryBuffer.clear();
  final audio = _pendingAudio;
  final image = _pendingImage;
  _pendingAudio = null;
  _pendingImage = null;

  if (modelType == ModelType.gemma4) {
    final rawBuffer = StringBuffer();
    await for (final rawChunk in ffiClient.chatRaw(
      text,
      imageBytes: image,
      audioBytes: audio,
      enableThinking: enableThinking,
    )) {
      rawBuffer.write(rawChunk);
      yield LiteRtLmFfiClient.extractTextFromResponse(rawChunk);
    }
    _lastRawResponse = rawBuffer.toString();
    return;
  }

  _lastRawResponse = null;
  await for (final chunk in ffiClient.chat(
    text,
    imageBytes: image,
    audioBytes: audio,
    enableThinking: enableThinking,
  )) {
    yield chunk;
  }
}