Gemini 3 Flash
An LLM in your graph, no API account of your own
- messages
- images
- text
Gemini 3 Flash is the budget workhorse of the pack's text models: Google's small fast model, hosted by Runware and exposed as a node that takes messages and returns text. The whole point is that the LLM becomes a first-class citizen of your ComfyUI graph - prompt rewriting, captioning, JSON structuring, workflow decisions - without you standing up a separate LLM server or wiring a second API key into everything.
The real draw is the messages input, which comes from the Runware Messages builder: you build role/content pairs (system, user, assistant) and chain them, so this node does multi-turn conversations, not just one-shot completions. That turns it into a genuinely useful automation part: a system prompt that imposes a format, a user message that carries your input, and a text output that feeds a parser or a prompt processor downstream.
What you set
messages(required) - the conversation, from the Messages builder. Each entry isrole+content; chain them for multi-turn.images- optional IMAGE input, which makes this vision-capable: ask the model to describe or caption what's in a frame.settings.systemPrompt- the global instruction for behavior and output style.settings.maxTokens- up to 65536, default 4096.settings.temperature(0–2, default 1) andsettings.topP(0.95) - the creativity dials.settings.thinkingLevel-minimal/low/medium/high, how much internal reasoning before answering.toolChoice- gated tool-calling:auto/any/tool/none, with a tool name when you force one.includeUsage- include token stats in the response.
Output is text, a STRING. advanced_json covers the gaps: extra audio/document/video inputs, stop sequences, tools.
How it works
Standard pack flow: taskType: textInference over REST through the Runware SDK, and the model's reply comes back as a string (joined across results). All the heavy lifting happens on Google's/Runware's side - no local model, no VRAM, cost on the title bar. Because it's a hosted call, each text out is a fresh inference; keep your context in the Messages chain, not in your head. For the price of a local setup you get a model that's been through a generation of improvements you'd never see by running the same checkpoint for months.
Installing
ComfyUI Manager → search Runware → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
No model downloads; deps are runware-sdk, pillow, soundfile. API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.
Troubleshooting
Empty or truncated output usually means maxTokens is cutting the answer off - bump it. Model rambling off-format? Put the format contract in settings.systemPrompt, where it belongs, rather than begging in the user turn. If you need heavier reasoning for a hard task, the family scales up: Gemini 3.1 Flash Lite is the cheaper sibling, Gemini 3.1 Pro is the brainier one.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| messages | RUNWARE_MESSAGES | — | |
| imagesopt | IMAGE | — | |
| seedopt | INT | 00–4294967295 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| includeUsageopt | BOOLEAN | false | Include token usage statistics in the response. |
| settings.maxTokensopt | INT | 40961–65536 | Maximum number of tokens to generate in the response. |
| settings.systemPromptopt | STRING | System-level instruction that guides the model's behavior and output style across the entire generation. | |
| settings.temperatureopt | FLOAT | 1.000–2 | Controls randomness in generation. Lower values produce more deterministic outputs, higher values increase variation and creativity. |
| settings.thinkingLevelopt | COMBO | high | Controls the depth of internal reasoning the model performs before generating a response. |
| toolChoiceopt | BOOLEAN | false | Enable to set toolChoice. Off uses the model's default. |
| toolChoice.nameopt | STRING | Name of the specific tool the model must call. Required when type is `tool`. | |
| toolChoice.typeopt | COMBO | (default) | Strategy the model uses to decide when and which tools to call. |
| settings.topPopt | FLOAT | 0.950–1 | Nucleus sampling parameter that controls diversity by limiting the probability mass. Lower values make outputs more focused, higher values increase diversity. |
| outputFormatopt | COMBO | TEXT | Output format for the generated text. |
| advanced_jsonopt | STRING | Optional JSON merged into the request. For: inputs.audios, inputs.documents, inputs.videos, settings.stopSequences, tools |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |