# API Reference

### AIModel Class

#### Constructor

```typescript
new AIModel(config: AIModelConfig, logger?: Logger)
```

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `config` | `AIModelConfig` | Yes | Model configuration |
| `logger` | `Logger` | No | Custom logger instance |

#### Core Methods

| Method | Returns | Description |
|--------|---------|-------------|
| `send(options?)` | `Promise<AIResponse>` | Send conversation and get response |
| `stream(onChunk, options?)` | `Promise<string>` | Stream response in real-time |
| `sendTextMessage(text, options?)` | `Promise<AIResponse>` | Quick text message and response |
| `sendImageMessage(text, imageUrl, options?)` | `Promise<AIResponse>` | Quick image analysis |
| `sendMultipleMessages(messages, options?)` | `Promise<AIResponse>` | Send multiple messages at once |

#### Message Management

| Method | Returns | Description |
|--------|---------|-------------|
| `addMessage(content, role)` | `this` | Add message to conversation |
| `addUserMessage(content)` | `this` | Add user message |
| `addAssistantMessage(content)` | `this` | Add assistant message |
| `addTextMessage(text, role)` | `this` | Add text message |
| `addImageMessage(text, imageUrl)` | `this` | Add image with text |
| `getMessages()` | `Message[]` | Get all messages |
| `clearMessages()` | `this` | Clear conversation history |
| `reset()` | `this` | Reset model (messages + system prompt) |

#### Configuration Methods

| Method | Returns | Description |
|--------|---------|-------------|
| `setSystemPrompt(prompt)` | `this` | Set/update system prompt |
| `getSystemPrompt()` | `string` | Get current system prompt |
| `updateConfig(config)` | `this` | Update model configuration |
| `getConfig()` | `AIModelConfig` | Get current configuration |
| `enableDebug(enable)` | `this` | Enable/disable debug logging |

#### Static Factory Methods

| Method | Returns | Description |
|--------|---------|-------------|
| `create(config, logger?)` | `AIModel` | Create new instance |
| `createFromEnv(provider?, overrides?, logger?)` | `AIModel` | Create from environment variables |
| `createForProvider(providerId, apiKey, overrides?, logger?)` | `AIModel` | Create for specific provider |

### AIResponse Interface

| Property | Type | Description |
|----------|------|-------------|
| `content` | `string` | Generated text response |
| `usage.promptTokens` | `number` | Input tokens used |
| `usage.completionTokens` | `number` | Output tokens used |
| `usage.totalTokens` | `number` | Total tokens used |
| `model` | `string` | Model that generated response |
| `finishReason` | `string` | Reason generation stopped |

### ProviderRegistry Class

| Method | Returns | Description |
|--------|---------|-------------|
| `registerProvider(id, config)` | `void` | Register new provider |
| `getProvider(id)` | `AIProviderConfig | undefined` | Get provider config |
| `getAllProviders()` | `Map<string, AIProviderConfig>` | Get all providers |
| `updateProvider(id, config)` | `boolean` | Update provider config |
| `hasProvider(id)` | `boolean` | Check if provider exists |
| `removeProvider(id)` | `boolean` | Remove provider |