Oxen AI Chat Completion (Soze)
An LLM Node for Workflow Automation — Let a Model Rewrite Prompts or Pick the Next Step
- image1
- image2
- image3
- image4
- response_text
- prompt_tokens
- completion_tokens
- total_tokens
- status
ComfyUI has a thousand ways to generate an image and surprisingly few ways to make a decision. Oxen AI Chat Completion is the decision-maker: an LLM call wrapped as a node, so your workflow can rewrite a prompt on the fly, turn a raw description into structured tags, or pick one of several options and hand the choice downstream as a string. It's OpenAI-compatible chat completions against Oxen's hosted endpoint - hub.oxen.ai/api/ai/chat/completions - with an OXEN_API_KEY instead of a local model.
The model menu is the first thing you'll notice: Claude Opus 4.7, GPT 5.5, GPT 5.5 Pro, DeepSeek V4 Pro, QWEN 3.6 Plus, Opus 4.6 - a multi-provider list in one dropdown, which is unusual and handy. The node maps each friendly label to the platform's model id, so you can A/B different model families without touching anything but the dropdown.
The inputs that matter
prompt- the user message. This is the instruction your workflow actually needs answered.system_prompt- optional context prepended to the conversation. This is where you put "you are a prompt engineer for SDXL" or "always answer with a single word."model- which of the six hosted models does the thinking.temperature- 0–2, default 1.-1omits it and lets the model default, which is a nicer "I don't care" than most nodes offer.max_tokens- 0 means omit, model default.image1throughimage4- optional IMAGE inputs for vision. Batch tensors get split frame-by-frame and each is sent as its own image part, so you can genuinely ask "describe what's in this image" and feed the answer back into a prompt.
Outputs are the useful part: response_text (the actual answer), plus prompt_tokens, completion_tokens, and total_tokens so you can watch your spend, and a status string.
How people actually use it
The classic loop is prompt augmentation: a rough idea goes in, a better-crafted prompt comes out, and that string feeds your KSampler's positive prompt - optionally through a prompt-merge node so you keep control of the base. Another strong pattern is routing: ask the model to return a tag or index, compare it downstream, and branch the workflow. The vision inputs make it a light captioning tool too. It's not a replacement for a local LLM node if you want zero-cloud automation, but for "I want a good model to do a thing once per run without standing up a server," it's the whole package.
Install & gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
Then export OXEN_API_KEY. Missing key and the node errors immediately with a clear message rather than silently failing. Watch your token counts if you attach big image batches - every frame is encoded and sent, and vision calls are where the bill sneaks up on you. The model names in the dropdown are as advertised by the platform, so if one family is down you can hot-swap to another mid-workflow and keep the graph intact.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Claude Opus 4.7 | 6 options: Claude Opus 4.7, GPT 5.5, DeepSeek V4 Pro, GPT 5.5 Pro, QWEN 3.6 Plus, Opus 4.6 |
| prompt | STRING | User message sent to the model. | |
| system_promptopt | STRING | Optional system message prepended to the conversation. | |
| temperatureopt | FLOAT | 1.000–2 | Sampling temperature (0–2). Pass -1 to omit and let the model default. |
| max_tokensopt | INT | 00–1048576 | Max output tokens. 0 = omit and let the model default. |
| image_formatopt | COMBO | JPEG | Encoding for attached images. JPEG is smaller; PNG is lossless. |
| image1opt | IMAGE | Optional image attached to the user message (slot 1). Batch tensors are sent as multiple images. | |
| image2opt | IMAGE | Optional image attached to the user message (slot 2). Batch tensors are sent as multiple images. | |
| image3opt | IMAGE | Optional image attached to the user message (slot 3). Batch tensors are sent as multiple images. | |
| image4opt | IMAGE | Optional image attached to the user message (slot 4). Batch tensors are sent as multiple images. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| response_text | STRING | — |
| prompt_tokens | INT | — |
| completion_tokens | INT | — |
| total_tokens | INT | — |
| status | STRING | — |