Mintplex-Labs/anything-llm · error · Error

LLM processing failed: ${error.message}

Error message

LLM processing failed: ${error.message}

What it means

The catch-all in executeLLMInstruction(). Any failure during provider.stream() or provider.complete(), or when accessing completion.textResponse, is logged and re-thrown with this prefix. The executor depends on aibitat.defaultProvider being configured and the provider being reachable.

Source

Thrown at server/utils/agentFlows/executors/llm-instruction.js:43

    let completion;
    const provider = aibitat.getProviderForConfig(aibitat.defaultProvider);
    if (provider.supportsAgentStreaming) {
      completion = await provider.stream(
        [{ role: "user", content: input }],
        [],
        null
      );
    } else {
      completion = await provider.complete([{ role: "user", content: input }]);
    }

    introspect(`Successfully received LLM response`);
    if (resultVariable) config.resultVariable = resultVariable;
    return completion.textResponse;
  } catch (error) {
    logger(`LLM processing failed: ${error.message}`, error);
    throw new Error(`LLM processing failed: ${error.message}`);
  }
}

module.exports = executeLLMInstruction;

View on GitHub (pinned to 526360e320)

Solutions

  1. Confirm a default LLM provider and model are configured for the agent running the flow (aibitat.defaultProvider must be set).
  2. Verify the provider API key is valid and has quota/billing.
  3. Check that the model name is correct and available on the chosen provider.
  4. If using a local provider, ensure the local server is running and reachable.
  5. Inspect server logs for the original error logged before the re-throw.
Defensive patterns

Strategy: try-catch

Validate before calling

function validateLlmStepContext(context) {
  const p = context?.aibitat?.defaultProvider;
  if (!p || !p.provider || !p.model)
    throw new Error("LLM Instruction block requires aibitat.defaultProvider with provider and model");
}

Type guard

const hasDefaultProvider = (aibitat) =>
  !!(aibitat && aibitat.defaultProvider && aibitat.defaultProvider.provider && aibitat.defaultProvider.model);

Try / catch

try {
  result = await executeLLMInstruction(config, context);
} catch (error) {
  if (error.message.startsWith("LLM processing failed")) {
    // surface to the flow as a failed step; result captured by FlowExecutor
  } else throw error;
}

Prevention

When it happens

Trigger: aibitat.defaultProvider is null/undefined (TypeError reading .provider or .model); the provider API key is missing or invalid; the model name is wrong or unavailable; the provider request times out or is rate-limited; completion is returned without a textResponse property.

Common situations: Running an LLM Instruction block in a flow without a default LLM provider configured for the agent; expired API key; pointing at a local model server (Ollama/LMStudio) that is not running; a model identifier that does not exist on the provider.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13). Data as JSON: /api/errors/b9aab4f8592b8254. Report an issue: GitHub.