[Back to AI Framework Overview](../../README.md) | [All Providers](../README.md) # @memberjunction/ai-anthropic MemberJunction AI provider for Anthropic's Claude models. Implements the `BaseLLM` interface from `@memberjunction/ai`, supporting the Claude 4, Claude 3.5, and Claude 3 model families including Opus, Sonnet, and Haiku variants. ## Architecture ```mermaid graph TD A["AnthropicLLM
(Provider)"] -->|extends| B["BaseLLM
(@memberjunction/ai)"] B -->|registered via| C["@RegisterClass
(@memberjunction/global)"] A -->|wraps| D["Anthropic SDK
(@anthropic-ai/sdk)"] A -->|provides| E["Chat Completions"] A -->|provides| F["Streaming"] A -->|provides| G["Prompt Caching"] A -->|provides| H["Thinking/Reasoning
Extraction"] style A fill:#7c5295,stroke:#563a6b,color:#fff style B fill:#2d6a9f,stroke:#1a4971,color:#fff style C fill:#b8762f,stroke:#8a5722,color:#fff style D fill:#2d8659,stroke:#1a5c3a,color:#fff style E fill:#2d6a9f,stroke:#1a4971,color:#fff style F fill:#2d6a9f,stroke:#1a4971,color:#fff style G fill:#2d6a9f,stroke:#1a4971,color:#fff style H fill:#2d6a9f,stroke:#1a4971,color:#fff ``` ## Features - **Chat Completions**: Full support for Anthropic's Messages API - **Streaming**: Real-time response streaming with thinking block extraction - **Prompt Caching**: Automatic ephemeral cache control on content blocks for reduced latency and cost - **Multimodal Input**: Support for text, images (base64 and URL), and content block arrays - **Thinking/Reasoning**: Extraction of thinking content from Claude's extended thinking responses - **Error Analysis**: Integrated error analysis via `ErrorAnalyzer` ## Installation ```bash npm install @memberjunction/ai-anthropic ``` ## Usage ```typescript import { AnthropicLLM } from "@memberjunction/ai-anthropic"; const llm = new AnthropicLLM("your-anthropic-api-key"); const result = await llm.ChatCompletion({ model: "claude-sonnet-4-20250514", messages: [ { role: "user", content: "Explain quantum computing in simple terms." }, ], temperature: 0.7, maxOutputTokens: 1024, }); console.log(result.data.choices[0].message.content); ``` ### Streaming ```typescript const result = await llm.ChatCompletion({ model: "claude-sonnet-4-20250514", messages: [{ role: "user", content: "Write a short story." }], streaming: true, streamingCallbacks: { OnContent: (content) => process.stdout.write(content), OnComplete: (result) => console.log("\nDone!"), }, }); ``` ### Extended Thinking ```typescript const result = await llm.ChatCompletion({ model: "claude-opus-4-20250514", messages: [{ role: "user", content: "Solve this step by step: ..." }], effortLevel: "80", }); // Access thinking content alongside the response console.log("Thinking:", result.data.choices[0].message.thinking); console.log("Answer:", result.data.choices[0].message.content); ``` ## Supported Parameters | Parameter | Supported | Notes | |-----------|-----------|-------| | temperature | Yes | Controls randomness | | maxOutputTokens | Yes | Maximum response length | | topP | Yes | Nucleus sampling | | topK | Yes | Top-K sampling | | stopSequences | Yes | Custom stop sequences | | assistantPrefill | Yes | Pre-seed the start of the assistant's response ([guide](../../Prompts/PREFILL_AND_STOP_SEQUENCES.md)) | | responseFormat | Yes | JSON mode supported | | streaming | Yes | Real-time streaming | | effortLevel | Yes | Maps to thinking budget | ## Class Registration Registered as `AnthropicLLM` via `@RegisterClass(BaseLLM, 'AnthropicLLM')` for use with MemberJunction's class factory system. ## Dependencies - `@memberjunction/ai` - Core AI abstractions - `@memberjunction/global` - Class registration - `@anthropic-ai/sdk` - Official Anthropic SDK