ComfyUI Node

AZAll LLM

Talk to Ollama, LM Studio, or any local model endpoint

By cronos3k·Created 5 months ago·Updated 5 months ago· 0
AZAll LLM
    • response
    system_prompt
    user_prompt
    api_urlhttp://localhost:11434/v1/chat/completions
    modeldefault
    max_tokens1024
    temperature0.70
    timeout120

    The node that turns the pack from "a very fancy file organizer" into an actual agent brain. AgentAZAll_LLM calls any OpenAI-compatible /v1/chat/completions endpoint - Ollama, LM Studio, llama.cpp server, vLLM, whatever - with a system prompt and a user prompt, and returns the model's text. It's deliberately boring under the hood: standard library urllib only, no OpenAI SDK, no requests, no extra pip dependencies beyond the pack's own agentazall.

    What makes it worth using over the half-dozen other "Ollama in ComfyUI" packs is how it fits the ecosystem: it emits responses as plain STRING, which the pack's ToolParser, ChatHistory, and SystemPrompt nodes are built to consume. And it does one clever thing - it strips <think>...</think> blocks from reasoning models (Qwen, DeepSeek) so you get the answer, not the chain-of-thought monologue.

    How it works

    You give it a system prompt and a user prompt; it POSTs a non-streaming chat completion to the api_url. If the endpoint responds, it extracts choices[0].message.content, strips any <think> block, and returns the text. Failures don't crash your workflow - they come back as a string starting with [LLM_ERROR], which is exactly what the pack's Conditional Router is designed to catch (that's the graceful-error-handling pattern in the RAG demo).

    The inputs that matter

    • system_prompt (required) - the model's instructions. Wire this from System Prompt to give the agent its identity, memories, and inbox. This is the node's intended best friend.
    • user_prompt (required) - the actual task.
    • api_url (default http://localhost:11434/v1/chat/completions) - the endpoint. The default assumes Ollama running locally; for LM Studio or llama.cpp, point this at their URL.
    • model (default default) - the model name. With Ollama, this needs to match a model you have pulled (llama3.2, qwen2.5, whatever you've got). "default" works for servers that pick one for you, but you'll almost always want to set it explicitly.
    • max_tokens (default 1024), temperature (default 0.7), timeout (default 120s) - the usual knobs.

    The response output is the model's reply string - wire it to a Text Display to see it, to ChatHistory to save it, to ToolParser to let the model take actions, or to any downstream STRING input.

    Installing it

    Part of cronos3k/comfyui-agentazall. Manager search "AgentAZAll", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cronos3k/comfyui-agentazall.git
    pip install "agentazall>=1.0.13"
    # restart ComfyUI
    

    The node itself needs no model files - but it needs an LLM server running. That's the real dependency: ollama serve (or your LM Studio/llama.cpp server) must be up and reachable at the URL you configure.

    Common issues

    Nearly every failure comes back as [LLM_ERROR] text rather than a hard error, so watch the output string: "Connection failed" means the server isn't running or the URL/port is wrong; "HTTP 404" usually means the URL path isn't /v1/chat/completions; an auth-style 401/403 means your server requires a key the node has no field for - you'll need a proxy or an endpoint without auth. If the model name is wrong, Ollama will tell you explicitly. And remember streaming is off and max_tokens caps output - long generations get cut off, not failed.

    CategoryAgentAZAll/LLM

    Inputs (7)

    NameTypeDefaultDescription
    system_promptSTRING
    user_promptSTRING
    api_urloptSTRINGhttp://localhost:11434/v1/chat/completions
    modeloptSTRINGdefault
    max_tokensoptINT102464–16384
    temperatureoptFLOAT0.700–2
    timeoutoptINT12010–600

    Outputs (1)

    NameTypeDescription
    responseSTRING