getResponseAsync method

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

Implementation

@override
Stream<String> getResponseAsync() {
  _controller = StreamController<String>();

  final String fullPrompt = _queryChunks.join(" ");
  final List<String> responseBuffer = [];

  llmInference.generateResponse(
    fullPrompt.toJS,
    ((JSString partialJs, JSAny completeRaw) {
      final complete = completeRaw.parseBool();
      final partial = partialJs.toDart;

      responseBuffer.add(partial);
      _controller?.add(partial);
      if (complete) {
        final String fullResponse = responseBuffer.join("");
        addQueryChunk(Message(text: fullResponse, isUser: false));
        _controller?.close();
        _controller = null;
      }
    }).toJS,
  );

  return _controller!.stream;
}