@bernierllc/ai-provider-anthropic

中文文档
1.6.2发布于 2026/11/05SEE LICENSE IN LICENSETypeScriptCommonJS近 30 天下载 2313

Anthropic Claude API adapter implementing the unified AI provider interface

原始使用文档
文档目录19 节
  1. Features
  2. Installation
  3. Basic Usage
  4. API Reference
  5. Constructor
  6. Methods
  7. Available Models
  8. Error Handling
  9. Limitations
  10. Embeddings
  11. Content Moderation
  12. Integration Status
  13. Advanced Usage
  14. Model Comparison
  15. Complex Reasoning Task
  16. Vision with Multiple Images
  17. TypeScript Types
  18. License
  19. See Also

@bernierllc/ai-provider-anthropic

Anthropic Claude API adapter implementing the unified AI provider interface from @bernierllc/ai-provider-core.

Features

  • All Claude 3 Models: Full support for Opus, Sonnet, and Haiku
  • Streaming: Async generator-based streaming completions
  • Vision Analysis: Image analysis with all Claude 3 models
  • Extended Context: Support for 200K token context windows
  • Cost Estimation: Accurate cost calculation with model-specific pricing
  • TypeScript: Full type safety with strict mode
  • Error Handling: Comprehensive error handling with retry support

Installation

npm install @bernierllc/ai-provider-anthropic

Basic Usage

import { AnthropicProvider } from '@bernierllc/ai-provider-anthropic';

const provider = new AnthropicProvider({
  providerName: 'anthropic',
  apiKey: process.env.ANTHROPIC_API_KEY!,
  defaultModel: 'claude-3-opus-20240229'
});

// Generate completion
const response = await provider.complete({
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Explain TypeScript generics in simple terms.' }
  ],
  maxTokens: 500,
  temperature: 0.7
});

if (response.success) {
  console.log(response.content);
  console.log(`Tokens used: ${response.usage?.totalTokens}`);
}

API Reference

Constructor

new AnthropicProvider(config: AnthropicProviderConfig)

Config Options:

  • providerName: Must be 'anthropic'
  • apiKey: Anthropic API key (required)
  • defaultModel: Default model to use (optional, defaults to claude-3-opus-20240229)
  • baseURL: Custom API base URL (optional)
  • timeout: Request timeout in milliseconds (optional, defaults to 60000)
  • maxRetries: Maximum number of retries (optional, defaults to 3)

Methods

complete(request: CompletionRequest): Promise<CompletionResponse>

Generate a text completion.

const response = await provider.complete({
  messages: [
    { role: 'user', content: 'Hello!' }
  ],
  maxTokens: 100,
  temperature: 0.7
});

streamComplete(request: CompletionRequest): AsyncGenerator<StreamChunk>

Generate a streaming text completion.

for await (const chunk of provider.streamComplete({
  messages: [
    { role: 'user', content: 'Write a short poem about coding' }
  ]
})) {
  process.stdout.write(chunk.delta);

  if (chunk.finishReason) {
    console.log(`\n\nFinished: ${chunk.finishReason}`);
  }
}

analyzeImage(imageData, prompt, model?, maxTokens?, temperature?): Promise<CompletionResponse>

Analyze an image using Claude's vision capabilities.

const imageBuffer = fs.readFileSync('diagram.png');

const analysis = await provider.analyzeImage(
  imageBuffer,
  'Describe this architecture diagram in detail',
  'claude-3-opus-20240229'
);

if (analysis.success) {
  console.log(analysis.content);
}

extendedContextCompletion(request): Promise<CompletionResponse>

Process requests with extended context (200K tokens).

const longDocument = fs.readFileSync('very-long-document.txt', 'utf-8');

const response = await provider.extendedContextCompletion({
  messages: [
    { role: 'user', content: `Summarize this document:\n\n${longDocument}` }
  ],
  enableExtendedContext: true
});

estimateCost(request: CompletionRequest): CostEstimate

Estimate the cost of a request before sending it.

const cost = provider.estimateCost({
  messages: [{ role: 'user', content: 'Hello world!' }],
  model: 'claude-3-opus-20240229',
  maxTokens: 100
});

console.log(`Estimated cost: $${cost.estimatedCostUSD.toFixed(4)}`);

getAvailableModels(): Promise<ModelInfo[]>

Get information about all available Claude models.

const models = await provider.getAvailableModels();

models.forEach(model => {
  console.log(`${model.name}: ${model.contextWindow} tokens`);
});

checkHealth(): Promise<HealthStatus>

Check if the Anthropic API is available.

const health = await provider.checkHealth();

if (health.status === 'healthy') {
  console.log(`API is healthy (latency: ${health.latency}ms)`);
}

Available Models

ModelIDContextOutputCost (Input/Output per 1M tokens)
Claude 3 Opusclaude-3-opus-20240229200K4096$15 / $75
Claude 3 Sonnetclaude-3-sonnet-20240229200K4096$3 / $15
Claude 3 Haikuclaude-3-haiku-20240307200K4096$0.25 / $1.25

All models support:

  • Text completion
  • Streaming
  • Vision analysis
  • Extended context (200K tokens)

Error Handling

The provider returns structured error responses:

const response = await provider.complete({
  messages: [{ role: 'user', content: 'Test' }]
});

if (!response.success) {
  console.error('Error:', response.error);
}

Limitations

Embeddings

Anthropic does not provide an embeddings API. Use @bernierllc/ai-provider-openai for embeddings:

const embeddingResponse = await provider.generateEmbeddings({
  input: 'test text'
});

// Returns: { success: false, error: 'Anthropic does not provide an embeddings API...' }

Content Moderation

Claude has built-in safety features (Constitutional AI), so no separate moderation API is needed:

const moderation = await provider.moderate('content');

// Always returns: { success: true, flagged: false, ... }

Integration Status

  • Logger: ✅ Integrated - Uses @bernierllc/logger for error logging
  • Docs-Suite: ✅ Ready - Full TypeDoc/JSDoc documentation
  • NeverHub: ⚠️ Optional - Can integrate for monitoring and metrics

Advanced Usage

Model Comparison

const models = await provider.getAvailableModels();

models.forEach(model => {
  console.log(`${model.name}:`);
  console.log(`  Context: ${model.contextWindow.toLocaleString()} tokens`);
  console.log(`  Capabilities: ${model.capabilities.join(', ')}`);
  if (model.pricing) {
    console.log(`  Input: $${model.pricing.inputPricePerToken * 1000000}/M tokens`);
    console.log(`  Output: $${model.pricing.outputPricePerToken * 1000000}/M tokens`);
  }
});

Complex Reasoning Task

// Claude excels at complex reasoning and analysis
const response = await provider.complete({
  messages: [
    {
      role: 'user',
      content: `Analyze this code architecture and suggest improvements:

[Large codebase content...]

Consider: scalability, maintainability, security, performance`
    }
  ],
  model: 'claude-3-opus-20240229',
  maxTokens: 4096,
  temperature: 0.3 // Lower temperature for analytical tasks
});

Vision with Multiple Images

// Analyze multiple images in sequence
const images = ['image1.png', 'image2.png', 'image3.png'];

for (const imagePath of images) {
  const imageBuffer = fs.readFileSync(imagePath);

  const analysis = await provider.analyzeImage(
    imageBuffer,
    'What do you see in this image?'
  );

  console.log(`${imagePath}: ${analysis.content}`);
}

TypeScript Types

import type {
  AnthropicProviderConfig,
  AnthropicVisionRequest,
  AnthropicExtendedContextRequest
} from '@bernierllc/ai-provider-anthropic';

import type {
  CompletionRequest,
  CompletionResponse,
  StreamChunk,
  ModelInfo,
  HealthStatus,
  CostEstimate
} from '@bernierllc/ai-provider-core';

License

Copyright (c) 2025 Bernier LLC. All rights reserved.

See Also

版本与发布记录

@bernierllc/ai-provider-anthropic 共发布 13 个版本,首次发布于 2025/10/13;过去 12 个月发布了 12 个版本。

版本发布日期距今
1.6.2latest2026/11/053 天前
1.6.12026/07/143 个月前
1.6.02026/05/205 个月前
1.5.02026/05/205 个月前
1.4.02026/05/205 个月前
1.2.52026/05/205 个月前

关于 @bernierllc/ai-provider-anthropic 的常见问题

@bernierllc/ai-provider-anthropic 是什么?

Anthropic Claude API adapter implementing the unified AI provider interface

如何安装 @bernierllc/ai-provider-anthropic?

在项目目录运行 npm install @bernierllc/ai-provider-anthropic,或使用 pnpm add / yarn add / bun add。

@bernierllc/ai-provider-anthropic 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bernierllc/ai-provider-anthropic 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bernierllc/ai-provider-anthropic 可以商用吗?

@bernierllc/ai-provider-anthropic 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@bernierllc/ai-provider-anthropic 的下载量有多少?

根据 npm 官方下载统计,@bernierllc/ai-provider-anthropic 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,313 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bernierllc/ai-provider-anthropic 还在维护吗?

最新版本 1.6.2 发布于 2026/11/05(3 天前);至今共发布 13 个版本,其中过去 12 个月发布了 12 个;首次发布于 2025/10/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。