xtekky/gpt4free · error · RetryNoProviderError

No content response from any provider.

Error message

No content response from any provider. 

What it means

RetryNoProviderError raised by raise_exceptions when the exceptions dict is empty after a retry run: providers were tried, none raised, but no content chunk was ever yielded (started stayed False). It distinguishes 'failed with errors' from 'succeeded silently with nothing' — e.g. providers returned only empty deltas or none at all.

Source

Thrown at g4f/providers/retry_provider.py:299

    Raises:
        RetryProviderError: If any provider encountered an exception.
        RetryNoProviderError: If no provider is found.
    """
    if exceptions:
        if len(exceptions) == 1:
            raise list(exceptions.values())[0]
        raise RetryProviderError(
            "RetryProvider failed:\n"
            + "\n".join(
                [
                    f"{p}: {type(exception).__name__}: {exception}"
                    for p, exception in exceptions.items()
                ]
            )
        ) from list(exceptions.values())[0]

    raise RetryNoProviderError("No content response from any provider. ")

View on GitHub (pinned to 973504e177)

Solutions

  1. Update g4f — empty-stream behavior often follows upstream markup changes that later releases fix.
  2. Try a different model on the same chain to see whether the model specifically returns empty.
  3. Enable debug logging to inspect which providers ran and what raw chunks (if any) arrived.
  4. Retry once — transient empty responses occur; if persistent, pin the chain to a provider known to return content.

Example fix

// before
result = await g4f.ChatCompletion.create_async(model=model, messages=messages)

// after
from g4f.errors import RetryNoProviderError
try:
    result = await g4f.ChatCompletion.create_async(model=model, messages=messages)
except RetryNoProviderError:
    result = await g4f.ChatCompletion.create_async(model='gpt-4o-mini', messages=messages)
Defensive patterns

Strategy: retry

Type guard

def is_empty_response_error(e: BaseException) -> bool:
    from g4f.errors import RetryNoProviderError
    return isinstance(e, RetryNoProviderError) and 'No content response' in str(e)

Try / catch

from g4f.errors import RetryNoProviderError
try:
    result = await g4f.ChatCompletion.create_async(model, messages)
except RetryNoProviderError as e:
    if 'No content response' in str(e):
        result = await g4f.ChatCompletion.create_async(model, messages)  # one retry: often transient
    else:
        raise

Prevention

When it happens

Trigger: A RetryProvider completes its loop where each provider's generator finishes without yielding any is_content chunk — empty responses, whitespace-only deltas, or providers that return instantly without streaming content.

Common situations: Upstream A/B changes returning empty bodies; providers whose anti-bot layer returns an empty stream instead of an error; models that emit only empty reasoning chunks; version mismatches where chunk parsing yields nothing.

Related errors


AI-assisted analysis of xtekky/gpt4free@973504e177 (2026-08-14). Data as JSON: /api/errors/8886a5358761b00b. Report an issue: GitHub.