Member Junction
    Preparing search index...

    Module @memberjunction/ai-anthropic - v6.2.0-edge.5

    Back to AI Framework Overview | All Providers

    @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.

    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
    • 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, with breakpoint placement that keeps a trailing volatile message (the agent runtime-state fragment) out of the cached prefix
    • 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
    npm install @memberjunction/ai-anthropic
    
    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);
    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!"),
    },
    });
    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);

    Anthropic caches only up to an explicit cache_control breakpoint, and a read-hit requires the new request to match a cached prefix at a breakpoint. By default the driver places the breakpoint on the last message. When the last message is the agent framework's volatile runtime-state fragment — recognised by the volatileState metadata flag via BaseLLM.isVolatileStateMessage, or by a leading <mj-runtime-state> / <mj-agent-specialization> literal for callers passing plain messages — the driver uses BaseLLM.splitTrailingVolatileState to put the breakpoint on the last real history message and sends the fragment (and any assistant prefill after it) uncached. If that leaves two user turns adjacent it inserts an OK assistant turn to preserve role alternation. Result: the stable history caches across loop iterations and only the fragment is re-processed. A <<<MJ_CACHE_BREAKPOINT>>> marker inside a text block still works for callers that want an explicit boundary elsewhere. See the Agent Prompt Caching Guide.

    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)
    responseFormat Yes JSON mode supported
    streaming Yes Real-time streaming
    effortLevel Yes Maps to thinking budget

    Registered as AnthropicLLM via @RegisterClass(BaseLLM, 'AnthropicLLM') for use with MemberJunction's class factory system.

    • @memberjunction/ai - Core AI abstractions
    • @memberjunction/global - Class registration
    • @anthropic-ai/sdk - Official Anthropic SDK

    Classes

    AnthropicLLM

    Interfaces

    AnthropicThinkingInput
    AnthropicThinkingRequest

    Type Aliases

    AnthropicEffort

    Variables

    ANTHROPIC_CACHE_BREAKPOINT
    ANTHROPIC_EFFORTS

    Functions

    BuildAnthropicThinking
    MapEffortLevelToAnthropicEffort
    UsesAdaptiveThinking