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

  1. Edit config.ini: either disable local mode or switch provider/model to a locally-run option (e.g. LM Studio / Ollama style provider)
  2. If you intend to use Deepseek's cloud, set is_local/local mode to false and provide a valid api_key
  3. Ensure the model string corresponds to the chosen provider (deepseek-chat / deepseek-reasoner for the API)
  4. 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

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


AI-assisted analysis of Fosowl/agenticSeek@ae57a23577 (2026-08-30). Data as JSON: /api/errors/c00460209e779a41. Report an issue: GitHub.