RocketChat/Rocket.Chat · error · Meteor.Error

error-ai-provider-empty-response

error-ai-provider-empty-response

Error message

error-ai-provider-empty-response

What it means

Returned by POST ai.search.answer when the LLM provider responded successfully but with no usable content, and the AI service surfaced this as error-ai-provider-empty-response. The HTTP call itself worked; the model simply returned an empty completion (empty choices array or blank text).

Source

Thrown at apps/meteor/server/api/v1/ai-search.ts:380

		const answerMessages = await getSearchAnswerMessagesForUser(this.userId, messages);
		try {
			const answer = await AISearch.answer({
				query,
				messages: answerMessages,
			});

			return API.v1.success(answer);
		} catch (error) {
			const message = error instanceof Error ? error.message : '';
			if (message === 'error-ai-not-enabled') {
				throw new Meteor.Error('error-ai-not-enabled');
			}
			if (message === 'error-ai-provider-not-configured') {
				throw new Meteor.Error('error-ai-provider-not-configured');
			}
			if (message === 'error-ai-provider-empty-response') {
				throw new Meteor.Error('error-ai-provider-empty-response');
			}
			throw new Meteor.Error('error-ai-provider-request-failed');
		}
	},
);

View on GitHub (pinned to b2c16d5842)

Solutions

  1. Retry the request once: empty completions are frequently transient
  2. Inspect the provider's response logs to confirm the completion body was actually empty
  3. Increase or correct max_tokens / output limits for the answer-generation model
  4. If reproducible with the same query, switch or update the answer-generation model
Defensive patterns

Strategy: retry

Try / catch

try { /* ai.search.answer */ } catch (e) {
  if (e.error === 'error-ai-provider-empty-response') {
    await backoff(1000);
    return retryOnce(); // empty completions are often transient
  }
}

Prevention

When it happens

Trigger: POST /api/v1/ai.search.answer where the model returns an empty completion: overly aggressive max_tokens (e.g. 0 or 1), content filters swallowing the answer, or a misbehaving OpenAI-compatible endpoint returning 200 with empty choices.

Common situations: Self-hosted LLM gateways (Ollama/LiteLLM proxies) that return 200 with empty content under load; max output tokens misconfigured near zero; safety filters triggered by the query phrasing; model version that streams an empty first chunk and terminates.

Related errors


AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18). Data as JSON: /api/errors/a5fc0f9212b6ece4. Report an issue: GitHub.