FreedomGPT Image Understand
Ask a cloud vision model what's actually in your image
- image
- image1
- image2
- image3
- image4
- history
- text
- history
- payload
FreedomGPT Image Understand is the "describe what you see" node: you feed it an image and a question, and it returns a text answer from FreedomGPT's vision model. "Is this person wearing a hat?" "Transcribe the text in this logo." "What's wrong with this render?" It's the read-the-image counterpart to the pack's cloud image generation node, and it opens up the whole auto-prompt / image-analysis workflow family - a vision model describing an output, that description feeding a prompt builder, a new image generated from it. Round-trip loops without any local captioning model.
The mechanism is standard vision-API plumbing: your ComfyUI IMAGE tensors (up to five, via image plus image1–image4) get converted to PIL and base64, sent to https://chat.freedomgpt.com/api/v1 with the prompt, and the model's text answer comes back. Because it's an API call, there's no local model download and no VRAM - but there's also a round-trip, an API key, and, for anyone outside regions with easy access, possibly a proxy to think about.
Inputs that matter
api_key- or the shared key file /FREEDOMGPT_API_KEYenv var.prompt- the question or instruction about the image.system_promptshapes the overall tone.model_name- defaults toliberty; verify against FreedomGPT's current vision model list if it errors.temperature(0–2),top_p,top_k,max_tokens- the usual sampling knobs. Defaults are sensible; most people never touch them.chat_template- the message formatting template, with{{system_instruction}}and{{prompt}}placeholders. The default works; changing it is for advanced users.seed,proxy_url,timeout- reproducibility, proxy support, and request timeout (0 = none).
Outputs
text- the model's answer, a STRING you can pipe into a prompt builder, a Switch, orStringConcat.history- the conversation history, so you can chain follow-up questions across nodes.payload- the raw request payload,*-typed, useful for debugging what was actually sent.
Install & key setup
Part of ComfyUI-YogurtNodes:
cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt
Restart ComfyUI; the node lives under "Yogurt Nodes" → LLM. Keys resolve in this order: the node's api_key field → api_key.json in custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/ ({"freedomgpt": "YOUR_KEY"}) → the FREEDOMGPT_API_KEY env var.
Common issues
- "No text comes back" - check the
textoutput is actually empty vs. just short, then checkpayloadto see what got sent. - "It can't see my image" - make sure an image is actually wired into one of the
imageports; the node only sends what's connected. - "Auth / timeout errors" - same key-resolution and proxy story as the generation node: check key sources in priority order and set
proxy_urlif the API is blocked in your region. - "The answer is generic" - vision models are literal; ask precise questions. "What color is the subject's shirt?" beats "describe this."
Honest take: if you're already paying for a big API, you may have a preferred vision provider - the pack offers Gemini, OpenAI, Grok, OpenRouter, and Vertex variants too. This node is the right call specifically when FreedomGPT is your provider of choice or your only reachable one.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | API key for accessing FreedomGPT API | |
| model_name | STRING | liberty | FreedomGPT vision model name |
| system_prompt | STRING | System-level prompt that affects the overall conversation style | |
| prompt | STRING | Question or instruction about the image | |
| temperature | FLOAT | 1.000–2 | Sampling temperature, higher values produce more random outputs |
| top_p | FLOAT | 1.000–1 | Sampling probability threshold, controls output diversity |
| top_k | INT | 401–100 | Top-K sampling parameter, limits vocabulary to top K tokens |
| max_tokens | INT | 40960–32768 | Maximum number of tokens in the generated text |
| retry_count | INT | 11–10 | Number of retry attempts if the request fails |
| chat_template | STRING | <-system-> {{system_instruction}} <-/system-> <-user-> {{prompt}} <-/user-> | Content template for the generated text |
| seed | INT | -1-1–2147483647 | Random seed for reproducible results, -1 for random |
| proxy_url | STRING | 代理URL,格式: protocol://user:pass@addr:port,支持http,https,socks5,socks5h | |
| timeout | INT | 00–2147483647 | Timeout for the request in seconds, 0 means no timeout |
| imageopt | IMAGE | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| historyopt | HISTORY | — | |
| extraopt | STRING | {} | Extra parameters for the request, in JSON format |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| history | HISTORY | — |
| payload | * | — |