# @memberjunction/ai-bedrock
MemberJunction AI provider for Amazon Bedrock. This package provides both LLM and embedding capabilities through AWS Bedrock's multi-model platform, supporting Claude, Titan, Llama, and other model families available on Bedrock.
## Architecture
```mermaid
graph TD
A["BedrockLLM
(Provider)"] -->|extends| B["BaseLLM
(@memberjunction/ai)"]
C["BedrockEmbedding
(Provider)"] -->|extends| D["BaseEmbeddings
(@memberjunction/ai)"]
A -->|wraps| E["AWS Bedrock
Runtime SDK"]
C -->|wraps| E
E -->|accesses| F["Claude / Titan /
Llama / Mistral"]
B -->|registered via| G["@RegisterClass"]
D -->|registered via| G
style A fill:#7c5295,stroke:#563a6b,color:#fff
style C fill:#7c5295,stroke:#563a6b,color:#fff
style B fill:#2d6a9f,stroke:#1a4971,color:#fff
style D fill:#2d6a9f,stroke:#1a4971,color:#fff
style E fill:#2d8659,stroke:#1a5c3a,color:#fff
style F fill:#b8762f,stroke:#8a5722,color:#fff
style G fill:#b8762f,stroke:#8a5722,color:#fff
```
## Features
- **Multi-Model Access**: Use Claude, Titan, Llama, Mistral, and other models via a single provider
- **Chat Completions**: Conversational AI through Bedrock's unified API
- **Embeddings**: Text embeddings via Amazon Titan and other embedding models
- **Streaming**: Real-time response streaming support
- **AWS Integration**: Native AWS authentication (IAM roles, access keys, SSO)
- **Private Deployments**: Support for custom and fine-tuned models on Bedrock
## Installation
```bash
npm install @memberjunction/ai-bedrock
```
## Usage
### Chat Completion
```typescript
import { BedrockLLM } from '@memberjunction/ai-bedrock';
const llm = new BedrockLLM('aws-credentials-json');
const result = await llm.ChatCompletion({
model: 'anthropic.claude-v2',
messages: [
{ role: 'user', content: 'Explain machine learning.' }
]
});
```
### Embeddings
```typescript
import { BedrockEmbedding } from '@memberjunction/ai-bedrock';
const embeddings = new BedrockEmbedding('aws-credentials-json');
const result = await embeddings.EmbedText({
text: 'Text to embed',
model: 'amazon.titan-embed-text-v1'
});
```
## Configuration
AWS credentials are passed as a JSON string containing:
| Field | Description |
|-------|-------------|
| `region` | AWS region (e.g., `us-east-1`) |
| `accessKeyId` | AWS access key ID |
| `secretAccessKey` | AWS secret access key |
| `sessionToken` | Optional session token for temporary credentials |
## Supported Features
| Feature | Supported | Notes |
|---------|-----------|-------|
| stopSequences | Yes | Supported for Anthropic Claude, AI21, and Amazon Titan models |
| assistantPrefill | Yes (Claude only) | Pre-seed the assistant's response for `anthropic.*` model IDs ([guide](../../Prompts/PREFILL_AND_STOP_SEQUENCES.md)) |
| streaming | Yes | Real-time streaming via `InvokeModelWithResponseStream` |
## Class Registration
- `BedrockLLM` -- Registered via `@RegisterClass(BaseLLM, 'BedrockLLM')`
- `BedrockEmbedding` -- Registered via `@RegisterClass(BaseEmbeddings, 'BedrockEmbedding')`
## Dependencies
- `@memberjunction/ai` - Core AI abstractions
- `@memberjunction/global` - Class registration
- `@aws-sdk/client-bedrock-runtime` - AWS Bedrock Runtime SDK