Modelverse Chat
200+ models behind one dropdown
- client
- image_in
- files
- response
This is the odd one in the pack and probably the most useful sleeper. Every other node here is a fixed model with a fixed job; Modelverse Chat is an OpenAI-compatible chat client that can talk to any model the Modelverse API serves. The model dropdown is dynamically fetched from the API - the brief shows bge embeddings, Doubao prose models, MiniMax, IndexTTS-2 text-to-speech, and "…+210 more" - so it's less a node and more a front door to the whole catalog.
What it is
A chat-completion node in the shape of a ComfyUI node. You give it a user prompt, optionally a system prompt, optionally an image or files, and it returns the model's response as a response STRING. In practice people use it three ways: as a prompt-engineer in the loop (ask the model to rewrite your prompt, feed the result into a generation node), as a free-form text tool alongside generation, or as a routing point where one node reaches many models.
The inputs that matter
- client - required, from the Modelverse Client / Secret Client node.
- model - the dropdown, populated from the API on first load with a curated fallback list if the fetch fails. Defaults to
zai-org/glm-5. - user_prompt - the question/instruction.
- system_prompt - optional persona or constraints ("You are a helpful assistant" by default).
- temperature (0.7), top_p (1), max_tokens (6000) - the usual sampling knobs. Lower temperature for more deterministic outputs.
- presence_penalty / frequency_penalty - push the model toward novelty or away from repetition.
- image_in - an IMAGE tensor for vision models. This is how you get a vision LLM in your graph.
- files - an
OPENAI_INPUT_FILESinput, fed from the OpenAI Input Files node. Note it says "files," plural - document context for models that accept it. - response_format -
textonly, currently.
The single output is response (STRING). Whatever the model says, in one string, ready to wire into a prompt field elsewhere.
Installing and keying up
Standard pack install. ComfyUI Manager → search "ComfyUl-UCloud" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ucloud/comfyui-plugin
restart ComfyUI. Deps are light (requests, pillow, numpy, openai, GitPython); the openai dependency is what powers the chat client. Get a ModelVerse API key from the UCloud console and enter it via the Modelverse Secret Client node (name in workflow, key in secrets.json) or a config.ini MODELVERSE_API_KEY=... entry.
Common issues
- Model list is short or stale - the list is cached after first fetch. If the catalog changed, restart ComfyUI or clear the cache so it refetches; if your key isn't valid the node silently falls back to the built-in list.
- Model doesn't support images - you wired
image_into a text-only model and got a refusal or a confusing reply. Pick a vision-capable model. - "API key is not set" - empty client node. The eternal first check.
- Long responses truncate -
max_tokensdefaults to 6000 but some models have shorter context. Lower it or pick a bigger model. - Billing by token - chat is cheaper per call than video, but the meter still runs. Batch your prompt work.
The genuinely clever workflow: chain this node's response string into a Flux or video node's prompt field, and you've built a "director LLM" that writes the prompts your generators execute. That's the real reason this node exists, and it's worth having just for that.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MODELVERSE_API_CLIENT | — | |
| model | COMBO | zai-org/glm-5 | 222 options: BAAI/bge-large-zh-v1.5, BAAI/bge-m3, ByteDance/doubao-1-5-pro-32k-250115, ByteDance/doubao-seed-1.6, IndexTeam/IndexTTS-2, MiniMax-Hailuo-02, +216 |
| user_prompt | STRING | What can you tell me about this? | — |
| temperature | FLOAT | 0.70–2 | — |
| max_tokens | INT | 60001–128000 | — |
| top_p | FLOAT | 1.000–1 | — |
| system_promptopt | STRING | You are a helpful assistant. | — |
| image_inopt | IMAGE | — | |
| filesopt | OPENAI_INPUT_FILES | Optional file(s) to use as context for the model. Accepts inputs from the OpenAI Input Files node. | |
| response_formatopt | COMBO | text | 1 options: text |
| presence_penaltyopt | FLOAT | 0.0-2–2 | — |
| frequency_penaltyopt | FLOAT | 0.0-2–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| response | STRING | — |