generateStream method

Stream<GenerationEvent> generateStream(
  1. ImageInput image,
  2. String prompt, {
  3. LlmOptions? options,
})

Stream an answer to prompt about image token by token.

Throws SDKException into the consumer when generation fails.

Implementation

Stream<GenerationEvent> generateStream(
  ImageInput image,
  String prompt, {
  LlmOptions? options,
}) {
  final controller = StreamController<GenerationEvent>();
  // onCancel also fires on normal completion; only cancel a generation that is
  // still running so a finished stream doesn't emit a spurious cancellation.
  var completed = false;
  var cancelled = false;
  controller.onListen = () {
    unawaited(
      _pump(
        controller,
        image,
        prompt,
        options,
        () => completed = true,
        () => cancelled,
      ),
    );
  };
  controller.onCancel = () {
    if (!completed) {
      cancelled = true;
      cancel();
    }
  };
  return controller.stream;
}