> ## Documentation Index
> Fetch the complete documentation index at: https://iso8583sim.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Base

> Base classes for LLM providers.

`iso8583sim.llm.base`

This module defines the abstract base class for LLM providers, allowing
multiple backend implementations (Anthropic, OpenAI, Google, Ollama).

## `LLMResponse`

```python theme={null}
LLMResponse(
    content: str,
    model: str,
    provider: str,
    usage: dict[str, int] | None = None,
)
```

Response from an LLM provider.

## `LLMError`

Bases: `Exception`

Base exception for LLM-related errors.

## `ProviderNotAvailableError`

Bases: `LLMError`

```python theme={null}
ProviderNotAvailableError(provider: str, package: str)
```

Raised when a provider's dependencies are not installed.

## `ProviderConfigError`

Bases: `LLMError`

Raised when provider configuration is invalid.

## `GenerationError`

Bases: `LLMError`

Raised when message generation fails.

## `LLMProvider`

Bases: `ABC`

Abstract base class for LLM providers.

All LLM providers must implement this interface to be compatible
with MessageExplainer and MessageGenerator.

**Example**

```python theme={null}
class MyProvider(LLMProvider):
    def complete(self, prompt, system=None):
        return "response"
    @property
    def name(self):
        return "my-provider"
```

### `complete()`

```python theme={null}
def complete(prompt: str, system: str | None = None) -> str
```

Send a prompt to the LLM and return the response text.

**Parameters**

<ResponseField name="prompt" type="str" required>
  The user prompt to send
</ResponseField>

<ResponseField name="system" type="str | None" default="None">
  Optional system prompt for context
</ResponseField>

<ResponseField name="Returns" type="str">
  The LLM's response text
</ResponseField>

**Raises**

* `LLMError`: If the API call fails

### `name`

Return the provider name for logging/display.

### `model`

Return the model name being used.

### `complete_with_metadata()`

```python theme={null}
def complete_with_metadata(prompt: str, system: str | None = None) -> LLMResponse
```

Send a prompt and return response with metadata.

Default implementation wraps complete(). Providers can override
for more detailed metadata.

**Parameters**

<ResponseField name="prompt" type="str" required>
  The user prompt to send
</ResponseField>

<ResponseField name="system" type="str | None" default="None">
  Optional system prompt for context
</ResponseField>

<ResponseField name="Returns" type="LLMResponse">
  LLMResponse with content and metadata
</ResponseField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.