xtekky/gpt4free · error · NotImplementedError
{provider_name} has no supported create method
Error message
{provider_name} has no supported create method What it means
NotImplementedError raised in config_provider's dispatch loop: the resolved provider class exposes neither create_async_generator nor create_completion, so there is no way to call it. It flags provider classes that are abstract helpers, base classes, or pure utility classes being listed directly in config.yaml.
Source
Thrown at g4f/providers/config_provider.py:578
)
if not current_api_key or AppConfig.disable_custom_api_key:
current_api_key = AuthManager.load_api_key(provider)
if current_api_key:
extra_body["api_key"] = current_api_key
try:
if hasattr(provider, "create_async_generator"):
async for chunk in provider.create_async_generator(
target_model, messages, **extra_body
):
yield chunk
elif hasattr(provider, "create_completion"):
for chunk in provider.create_completion(
target_model, messages, **extra_body
):
yield chunk
else:
raise NotImplementedError(
f"{provider_name} has no supported create method"
)
debug.log(f"config.yaml: {provider_name} succeeded for model {model!r}")
return # Success
except Exception as e:
# On rate-limit errors invalidate the quota cache
from ..errors import RateLimitError
if isinstance(e, RateLimitError) or "429" in str(e):
debug.log(
f"config.yaml: Rate-limited by {provider_name}, "
"invalidating quota cache"
)
QuotaCache.invalidate(provider_name)
ErrorCounter.increment(provider_name)
last_exception = e
debug.error(f"config.yaml: {provider_name} failed:", e)View on GitHub (pinned to 973504e177)
Solutions
- Replace the entry with a concrete provider that implements create_async_generator or create_completion (most working providers do).
- List available working providers via g4f.Provider and pick one whose needs_auth/working flags are set.
- Update g4f in case the named provider was recently fixed to implement a create method.
- Remove the entry — other providers in the chain will still be tried (this error is caught per-provider, but the entry never succeeds).
Example fix
# before (config.yaml) providers: - provider: "BaseProvider" # after providers: - provider: "OpenaiChat"
Defensive patterns
Strategy: validation
Validate before calling
def is_callable_provider(p) -> bool:
return hasattr(p, 'create_async_generator') or hasattr(p, 'create_completion')
bad = [n for n, p in resolved_providers.items() if not is_callable_provider(p)]
if bad:
raise ValueError(f'providers without a create method: {bad}') Type guard
def is_callable_provider(p) -> bool:
return hasattr(p, 'create_async_generator') or hasattr(p, 'create_completion') Prevention
- List only concrete providers in config.yaml, never base/utility classes.
- Validate with hasattr checks when building provider lists programmatically.
- Prefer providers whose .working flag is True.
When it happens
Trigger: A config.yaml entry points at a class like a base provider, an ignored/deprecated stub, or a helper with only get_quota — the dispatch checks hasattr for both create methods and both fail.
Common situations: Listing base or internal provider names (e.g. AsyncGeneratorProvider itself, or an 'Ignored' provider) in config.yaml; g4f refactors that strip create methods from a provider while configs still reference it.
Related errors
- Provider not found: {provider_name!r}
- Unexpected end of condition expression
- Unknown variable in condition: {root!r}
- Cannot access field {part!r} on non-dict value while resolvi
- Unexpected token {kind!r}={value!r} in condition expression
AI-assisted analysis of xtekky/gpt4free@973504e177 (2026-08-14).
Data as JSON: /api/errors/f9ab72869c6ed318.
Report an issue: GitHub.