Fosowl/agenticSeek · error · Exception
Deepseek (API) is not available for local use. Change config
Error message
Deepseek (API) is not available for local use. Change config.ini
What it means
deepseek_fn refuses to run when self.is_local is true, because the Deepseek cloud API endpoint (api.deepseek.com) cannot be used as a local/offline model. The library throws this immediately, before any HTTP call, to force the user to correct their config.ini provider/model selection.
Source
Thrown at sources/llm_provider.py:335
model=self.model,
messages=history,
)
if response is None:
raise Exception("Together AI response is empty.")
thought = response.choices[0].message.content
if verbose:
print(thought)
return thought
except Exception as e:
raise Exception(f"Together AI API error: {str(e)}") from e
def deepseek_fn(self, history, verbose=False):
"""
Use deepseek api to generate text.
"""
client = OpenAI(api_key=self.api_key, base_url="https://api.deepseek.com")
if self.is_local:
raise Exception("Deepseek (API) is not available for local use. Change config.ini")
try:
response = client.chat.completions.create(
model=self.model,
messages=history,
stream=False
)
thought = response.choices[0].message.content
if verbose:
print(thought)
return thought
except Exception as e:
raise Exception(f"Deepseek API error: {str(e)}") from e
def lm_studio_fn(self, history, verbose=False):
"""
Use local lm-studio server to generate text.
"""
if self.in_docker:View on GitHub (pinned to ae57a23577)
Solutions
- Edit config.ini: either disable local mode or switch provider/model to a locally-run option (e.g. LM Studio / Ollama style provider)
- If you intend to use Deepseek's cloud, set is_local/local mode to false and provide a valid api_key
- Ensure the model string corresponds to the chosen provider (deepseek-chat / deepseek-reasoner for the API)
- Re-run after config change; this error is raised pre-flight, so no API call was consumed
Example fix
// before (config.ini) [LLM] provider = deepseek local = true // after [LLM] provider = deepseek local = false api_key = sk-...
Defensive patterns
Strategy: validation
Validate before calling
def validate_deepseek_config(provider):
if provider.is_local:
raise ValueError("Deepseek (API) cannot run locally — switch provider in config.ini to a local server")
assert provider.api_key, "Deepseek API key missing" Type guard
def supports_local_mode(provider) -> bool:
return not getattr(provider, "is_local", False) or provider.__class__.__name__.lower().startswith("lmstudio") Try / catch
try:
thought = provider.deepseek_fn(history)
except Exception as e:
if "not available for local use" in str(e):
thought = provider.lm_studio_fn(history) # fall back to local provider
else:
raise Prevention
- Keep config.ini provider and local flag consistent — never pair deepseek with local=true
- Add a config sanity check at app startup
- Document which providers work in local vs cloud mode for your team
When it happens
Trigger: config.ini selects the deepseek (API) provider while is_local is enabled (local mode), so deepseek_fn raises before creating the chat completion.
Common situations: User switched to a local setup but left provider=deepseek in config.ini; developer running offline tests with an API-provider config; mixing 'local' and hosted provider flags.
Related errors
- Unknown provider: {provider_name}
- Model not set
- Prompt file not found at path: {file_path}
- Permission denied to read prompt file at path: {file_path}
- API key {api_key_var} not found in .env file. Please add it
AI-assisted analysis of Fosowl/agenticSeek@ae57a23577 (2026-08-30).
Data as JSON: /api/errors/c00460209e779a41.
Report an issue: GitHub.