apache/seatunnel · error · ValueError
No AI provider configured. Set up with one of: 1. Run…
Error message
No AI provider configured. Set up with one of:
1. Run: seatunnel --init (interactive setup)
2. Set: export AI_PROVIDER=<{available}>
3. Set provider credentials:
- Anthropic: export ANTHROPIC_API_KEY=sk-ant-...
- OpenAI: export OPENAI_API_KEY=sk-...
- Bedrock: configure AWS credentials (aws configure) What it means
create_provider() is the factory that resolves which LLM provider to use. When no provider name was given (explicitly, via saved config, or via AI_PROVIDER) and _auto_detect_provider() finds no detectable credentials, it raises ValueError with a multi-line setup guide covering --init, AI_PROVIDER, and per-provider credential env vars.
Solutions
- Run `seatunnel --init` for interactive provider setup
- Set a provider explicitly: export AI_PROVIDER=anthropic|openai|bedrock|orcarouter
- Export the matching credentials (ANTHROPIC_API_KEY, OPENAI_API_KEY, or AWS credentials for Bedrock)
Example fix
// before provider = create_provider() # ValueError: No AI provider configured // after os.environ["AI_PROVIDER"] = "openai" os.environ["OPENAI_API_KEY"] = "sk-..." provider = create_provider()
Defensive patterns
Strategy: validation
Validate before calling
import os
creds = ["ANTHROPIC_API_KEY", "OPENAI_API_KEY", "ORCAROUTER_API_KEY"]
if not os.environ.get("AI_PROVIDER") and not any(os.environ.get(c) for c in creds):
raise SystemExit("No AI provider configured; run `seatunnel --init`") Try / catch
try:
provider = create_provider()
except ValueError as e:
if str(e).startswith("No AI provider configured"):
run_interactive_setup()
else:
raise Prevention
- Run `seatunnel --init` once on each new machine/container image
- Keep AI_PROVIDER set explicitly in deployment configs instead of relying on auto-detection
- Document required credential env vars in your project's setup guide
When it happens
Trigger: Calling create_provider() (directly or via run_benchmark, _ensure_provider, _cmd_config, run_init) with no name argument, no AI_PROVIDER env var, no saved config, and none of ANTHROPIC_API_KEY / OPENAI_API_KEY / AWS credentials present for auto-detection.
Common situations: First run of the CLI on a new machine before any setup; cleaned environment in CI; user deleted the saved provider config; running inside a container that strips env vars.
Related errors
- ORCAROUTER_API_KEY environment variable is required for…
- Unknown AI provider ' '. Available
- Agent config file not found
- AmazonDocumentDB option '' must be a valid BSON/JSON…
- AmazonDocumentDB option '' must not be blank
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/c7209d3bf4a7e109.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-cli/seatunnel_cli/llm_provider.py:1445
if name in ("openai", "bedrock-mantle"):
os.environ.setdefault("OPENAI_MODEL", model_config["model"])
else:
os.environ.setdefault("ANTHROPIC_MODEL", model_config["model"])
if model_config.get("fast_model"):
if name == "orcarouter":
os.environ.setdefault("ORCAROUTER_SMALL_FAST_MODEL", model_config["fast_model"])
elif not os.environ.get("ANTHROPIC_SMALL_FAST_MODEL") and not os.environ.get("OPENAI_SMALL_FAST_MODEL"):
if name in ("openai", "bedrock-mantle"):
os.environ.setdefault("OPENAI_SMALL_FAST_MODEL", model_config["fast_model"])
else:
os.environ.setdefault("ANTHROPIC_SMALL_FAST_MODEL", model_config["fast_model"])
# 4. Auto-detect
if not name:
name = _auto_detect_provider()
if not name:
raise ValueError(
f"No AI provider configured. Set up with one of:\n"
f" 1. Run: seatunnel --init (interactive setup)\n"
f" 2. Set: export AI_PROVIDER=<{available}>\n"
f" 3. Set provider credentials:\n"
f" - Anthropic: export ANTHROPIC_API_KEY=sk-ant-...\n"
f" - OpenAI: export OPENAI_API_KEY=sk-...\n"
f" - Bedrock: configure AWS credentials (aws configure)"
)
name = name.lower().strip()
cls = _PROVIDERS.get(name)
if cls is None:
raise ValueError(f"Unknown AI provider '{name}'. Available: {available}")
return cls()
View on GitHub (pinned to cf67b549a7)