npm package: @haiec/anthropic
Description: Anthropic Claude SDK wrapper with automatic usage tracking and cost calculation for HAIEC AI Inventory
Author: HAIEC
Latest version: 1.0.0

# @haiec/anthropic

Anthropic Claude SDK wrapper with automatic usage tracking and cost calculation for HAIEC AI Inventory.

## Features

- ✅ **Automatic Usage Tracking** - Logs every API call to HAIEC
- ✅ **Cost Calculation** - Calculates costs based on model pricing
- ✅ **Streaming Support** - Works with both regular and streaming responses
- ✅ **Low Overhead** - <10ms additional latency
- ✅ **Error Handling** - Gracefully handles tracking failures
- ✅ **Drop-in Replacement** - Works exactly like the official Anthropic SDK

## Installation

```bash
npm install @haiec/anthropic @anthropic-ai/sdk
```

## Usage

### Basic Example

```typescript
import TrackedAnthropic from '@haiec/anthropic';

const client = new TrackedAnthropic({
  apiKey: process.env.ANTHROPIC_API_KEY!,
  haiecApiKey: process.env.HAIEC_API_KEY!,
});

const response = await client.messages.create({
  model: 'claude-3-opus-20240229',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Hello, Claude!' }],
});

console.log(response.content[0].text);
```

### Streaming Example

```typescript
const stream = await client.messages.stream({
  model: 'claude-3-sonnet-20240229',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Tell me a story' }],
});

for await (const event of stream) {
  if (event.type === 'content_block_delta') {
    process.stdout.write(event.delta.text);
  }
}

const finalMessage = await stream.finalMessage();
// Usage is automatically logged when stream completes
```

### Configuration

```typescript
const client = new TrackedAnthropic({
  apiKey: 'sk-ant-...', // Your Anthropic API key
  haiecApiKey: 'haiec_...', // Your HAIEC API key
  haiecEndpoint: 'https://haiec.com/api/v1/inventory/usage/log', // Optional: Custom endpoint
});
```

### Self-Hosted HAIEC

```typescript
const client = new TrackedAnthropic({
  apiKey: process.env.ANTHROPIC_API_KEY!,
  haiecApiKey: process.env.HAIEC_API_KEY!,
  haiecEndpoint: 'https://your-haiec-instance.com/api/v1/inventory/usage/log',
});
```

## Supported Models & Pricing

| Model | Input Cost (per 1M tokens) | Output Cost (per 1M tokens) |
|-------|---------------------------|----------------------------|
| claude-3-opus-20240229 | $15.00 | $75.00 |
| claude-3-sonnet-20240229 | $3.00 | $15.00 |
| claude-3-haiku-20240307 | $0.25 | $1.25 |
| claude-2.1 | $8.00 | $24.00 |
| claude-2.0 | $8.00 | $24.00 |
| claude-instant-1.2 | $0.80 | $2.40 |

*Pricing is automatically updated based on Anthropic's latest rates.*

## What Gets Tracked

For each API call, the following data is logged to HAIEC:

- **Provider**: `anthropic`
- **Model**: e.g., `claude-3-opus-20240229`
- **Endpoint**: `messages` or `messages.stream`
- **Request Tokens**: Number of input tokens
- **Response Tokens**: Number of output tokens
- **Cost**: Calculated cost in USD
- **Latency**: Response time in milliseconds
- **Status Code**: HTTP status code
- **Error Message**: If the request failed

## Performance

- **Overhead**: <10ms per request
- **Async Logging**: Usage is logged asynchronously to avoid blocking
- **Streaming**: No additional overhead for streaming responses
- **Error Handling**: Tracking failures don't affect your API calls

## Error Handling

If usage tracking fails, the error is logged to console but your Anthropic API call continues normally:

```typescript
try {
  const response = await client.messages.create({...});
  // Your response is returned even if tracking fails
} catch (error) {
  // Only Anthropic API errors are thrown
}
```

## API Compatibility

This wrapper maintains 100% compatibility with the official Anthropic SDK. All methods and parameters work exactly the same.

## Streaming Support

Both regular and streaming responses are fully supported:

```typescript
// Regular response
const response = await client.messages.create({...});

// Streaming response
const stream = await client.messages.stream({...});
for await (const event of stream) {
  // Process events
}
```

Usage is automatically tracked for both modes.

## Getting Your HAIEC API Key

1. Sign up at [haiec.com](https://haiec.com)
2. Navigate to Settings > API Keys
3. Click "Create API Key"
4. Copy your key and add it to your environment variables

## Comparison with OpenAI Wrapper

| Feature | @haiec/openai | @haiec/anthropic |
|---------|--------------|------------------|
| Provider | OpenAI | Anthropic |
| Streaming | ✅ | ✅ |
| Cost Tracking | ✅ | ✅ |
| Error Handling | ✅ | ✅ |
| Overhead | <10ms | <10ms |

## Support

- **Documentation**: [docs.haiec.com](https://docs.haiec.com)
- **Issues**: [GitHub Issues](https://github.com/haiec/haiec-anthropic/issues)
- **Email**: support@haiec.com

## License

MIT