Mintplex-Labs/anything-llm · error · Error

e.message

Error message

e.message

What it means

Not a distinct error — the message is whatever the OpenAI SDK raised against Groq's endpoint. The `.catch((e) => { throw new Error(e.message); })` wrapper re-throws only the text, discarding the SDK error subclass (Groq's errors include rate-limit tokens-per-minute data) and the stack.

Source

Thrown at server/utils/AiProviders/groq/index.js:187

      attachments,
    });
  }

  async getChatCompletion(messages = null, { temperature = 0.7 }) {
    if (!(await this.isValidChatCompletionModel(this.model)))
      throw new Error(
        `GroqAI:chatCompletion: ${this.model} is not valid for chat completion!`
      );

    const result = await LLMPerformanceMonitor.measureAsyncFunction(
      this.openai.chat.completions
        .create({
          model: this.model,
          messages,
          temperature,
        })
        .catch((e) => {
          throw new Error(e.message);
        })
    );

    if (
      !result.output.hasOwnProperty("choices") ||
      result.output.choices.length === 0
    )
      return null;

    return {
      textResponse: result.output.choices[0].message.content,
      metrics: {
        prompt_tokens: result.output.usage.prompt_tokens || 0,
        completion_tokens: result.output.usage.completion_tokens || 0,
        total_tokens: result.output.usage.total_tokens || 0,
        outputTps:
          result.output.usage.completion_tokens /
          result.output.usage.completion_time,

View on GitHub (pinned to 526360e320)

Solutions

  1. Read e.message — Groq rate-limit errors include the limit and window
  2. If 429, throttle requests or upgrade the Groq plan
  3. Confirm GROQ_MODEL_PREF is still valid against GET /v1/models
  4. Shorten the prompt if the message mentions context length

Example fix

// before
.catch((e) => { throw new Error(e.message); })

// after
.catch((e) => { throw e; })
Defensive patterns

Strategy: try-catch

Try / catch

try {
  return await llm.getChatCompletion(messages, { temperature });
} catch (e) {
  const msg = e.message;
  if (/rate_limit|429|tpm|rpm/i.test(msg)) {
    await backoff();            // Groq rate limits are time-bounded
    return retryOnce();
  }
  if (/model_not_found|deprecat/i.test(msg)) throw new UnknownModelError(msg);
  throw e;
}

Prevention

When it happens

Trigger: this.openai.chat.completions.create({ model, messages, temperature }) rejecting: Groq TPM/RPM rate limit (429), invalid model (404), auth failure (401), prompt too long, or a Groq platform 5xx.

Common situations: Free-tier TPM exceeded; model id deprecated since the last config; prompt exceeds the model's context window; transient Groq overload (529).

Related errors


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