JT Siliconflow LLM
A free-ish LLM chat node for ComfyUI (yes, it still needs a key)
- text
- messages
- session_history
JT Siliconflow LLM drops a chat interface into your ComfyUI graph, backed by Siliconflow's OpenAI-compatible API. The class name says "Free," and the honest version is: Siliconflow offers genuinely cheap (and sometimes free-tier) access to models like DeepSeek-V3 and Qwen, but you still need an API key - the "free" is about the model pricing, not the signup. Expect to paste a key into the node, not to skip one.
Why you'd reach for it
ComfyUI has no built-in way to ask a language model a question mid-workflow. This node fills that gap if you want to generate a prompt from a brief, summarize a text you just read from a file or spreadsheet, or add a commentary step before a generation. It's a chat node, not an agent - but for "ask a model for a prompt, feed the answer into your text pipeline," it's exactly the missing piece. Wire its text output into a prompt, or into JT Save Text to File to keep a transcript.
The inputs that matter
- api_key (STRING) - your Siliconflow key, from the platform dashboard. Treat it like a password; it's stored plain in the node.
- prompt (STRING, multiline) - your question/instruction.
- system_content (STRING, multiline) - the system prompt. The default is a stock "You are ChatGPT…" - replace it for your use case.
- model (4 choices) -
Pro/deepseek-ai/DeepSeek-V3(default),Qwen/QwQ-32B,Qwen/Qwen2.5-32B-Instruct,Pro/deepseek-ai/DeepSeek-R1. - context_size (INT, 0–30, default 1) - how many previous turns of conversation to keep. 0 means no history; higher means the model remembers more of the thread.
- max_tokens (INT, 512–200000, default 2048) - response length cap.
- seed (INT) - here's the thing: the seed input exists but is never used. The code accepts it and then ignores it. For a chat API that's arguably fine, but don't expect it to make output reproducible.
There's also an optional custom_model_name (STRING) that overrides the model dropdown entirely if you want a model Siliconflow hosts that isn't in the list.
How it works
The node keeps a session_history list in memory on the node instance, appending your prompt and the model's reply after every call. On the next run, it takes the last context_size turns, prepends the system prompt, and sends the whole thing to https://api.siliconflow.cn/v1 using the openai Python client. Outputs: text (the response), messages (the full message array sent, as JSON), and session_history (the accumulated conversation, as JSON).
Three practical consequences. History lives on the node object in memory - it survives repeated runs while ComfyUI is up, but resets when the server restarts. Because history accumulates, rerunning the same workflow keeps feeding old turns back into the model; set context_size small (or 0) if you want each call to be a fresh start. And since the response is returned as a plain string, if the API errors you get an Error: … string in text rather than a crash - useful, but check your output for the prefix.
Installing it
Part of Comfyui_JTnodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Jint8888/Comfyui_JTnodes
pip install "openai>=1.0.0" "openpyxl>=3.0.0"
or search "Comfyui_JTnodes" in ComfyUI Manager. This is the node with the real dependency: it needs the openai package, and because the repo ships no requirements.txt, neither Manager nor a plain clone installs it for you. Worse, openai is imported at pack load time - so skip the pip install and the entire pack fails to import, hiding all eight JT nodes from your menu. Run that pip line, restart ComfyUI, and it appears under JT > JT/text. (The README is in Chinese; the English docs for Siliconflow's API fill in the gaps.)
The honest verdict
It's a competent, minimal wrapper around a real, working API - Siliconflow is a legitimate provider (it's behind the OneDiff acceleration project) and DeepSeek-V3/Qwen are real models people actually use. The traps are all small: the fake-out seed, the memory-resident session history that vanishes on restart, the key sitting in plaintext in the node, and the whole-pack-fails-without-openai install quirk. If you want an LLM in ComfyUI and don't want to stand up a local model, this gets you there with less setup than most alternatives - just don't expect it to be the free lunch the name implies.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | your-api-key-here | — |
| prompt | STRING | — | |
| system_content | STRING | You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible. | — |
| model | COMBO | Pro/deepseek-ai/DeepSeek-V3 | 4 options: Pro/deepseek-ai/DeepSeek-V3, Qwen/QwQ-32B, Qwen/Qwen2.5-32B-Instruct, Pro/deepseek-ai/DeepSeek-R1 |
| seed | INT | 00–18446744073709550000 | — |
| context_size | INT | 10–30 | — |
| max_tokens | INT | 2048512–200000 | — |
| custom_model_nameopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| messages | STRING | — |
| session_history | STRING | — |