@bernierllc/ai-professor-harmanic (英语)
Anthropic Claude API 适配器 执行统一的 AI 提供者接口 @bernierllc/ai-provider-core。 。 。 .
特征
- 所有克洛德3型号:全力支持奥普斯,索内特和海库
- 流线: 基于 Async 生成器的流式完成
- 远景分析: 图像分析, 所有 Claude 3 模型
- 扩展上下文: 支持 200K 令牌上下文窗口
- 费用估计数: 准确计算成本,并按具体模式定价
- 类型脚本: 严格模式的完整类型安全
- 处理错误: 全面处理重试支持错误
安装
npm install @bernierllc/ai-provider-anthropic
基本用途
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 参考
构造器
new AnthropicProvider(config: AnthropicProviderConfig)
配置选项 :
providerName: 必须是'anthropic'apiKey: Anthropic API 键(需要)defaultModel: 要使用的默认模式( 可选, 默认为claude-3-opus-20240229(中文(简体) )baseURL: 自定义 API 基础 URL (可选)timeout: 请求超时以毫秒计( 可选, 默认为6000)maxRetries: 最多重试次数(可选,默认为3)
方法
complete(request: CompletionRequest): Promise<CompletionResponse>
生成文本补全 .
const response = await provider.complete({
messages: [
{ role: 'user', content: 'Hello!' }
],
maxTokens: 100,
temperature: 0.7
});
streamComplete(request: CompletionRequest): AsyncGenerator<StreamChunk>
生成流式文本补全 .
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>
利用克洛德的视觉能力分析一幅图像.
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>
扩展上下文处理请求( 200K 令牌) .
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
在发出请求之前估计请求的费用.
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[]>
获取所有可用的克洛德模型的信息.
const models = await provider.getAvailableModels();
models.forEach(model => {
console.log(`${model.name}: ${model.contextWindow} tokens`);
});
checkHealth(): Promise<HealthStatus>
请检查authropic API是否可用 .
const health = await provider.checkHealth();
if (health.status === 'healthy') {
console.log(`API is healthy (latency: ${health.latency}ms)`);
}
可用模式
| 型号 | 身份证 | A. 背景情况 | 产出 | 费用(每100兆令牌的入/出) |
|---|---|---|---|---|
| 克劳德 3 Opus | claude-3-opus-20240229 | 200 000K 电话 | 4096 (英语) | 15美元/75美元 |
| 克洛德3号卫星 | claude-3-sonnet-20240229 | 200 000K 电话 | 4096 (英语) | 3美元/15美元 |
| 克劳德 三海库 | claude-3-haiku-20240307 | 200 000K 电话 | 4096 (英语) | 0.25美元/1.25美元(美元) |
所有模型支持 :
- 文本补全
- 流线
- 远景分析
- 扩展上下文( 200K 令牌)
处理错误
提供者返回结构化错误响应 :
const response = await provider.complete({
messages: [{ role: 'user', content: 'Test' }]
});
if (!response.success) {
console.error('Error:', response.error);
}
限制
嵌入层
Anthropic 不提供嵌入式API. 使用 @bernierllc/ai-provider-openai 用于嵌入的:
const embeddingResponse = await provider.generateEmbeddings({
input: 'test text'
});
// Returns: { success: false, error: 'Anthropic does not provide an embeddings API...' }
内容调和
Claude有内在的安全特征(宪法AI),所以不需要单独的节制API:
const moderation = await provider.moderate('content');
// Always returns: { success: true, flagged: false, ... }
一体化状况
- 锁定器: QQ综合 - 用途
@bernierllc/logger错误记录 - 多克套装: QQ 准备 - 完整类型Doc/JSDoc 文档
- 从不:QQ 可选 - 可用于监测和衡量标准
高级使用
模型比较
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`);
}
});
复杂的原因任务
// 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
});
具有多图像的视野
// 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}`);
}
类型脚本
import type {
AnthropicProviderConfig,
AnthropicVisionRequest,
AnthropicExtendedContextRequest
} from '@bernierllc/ai-provider-anthropic';
import type {
CompletionRequest,
CompletionResponse,
StreamChunk,
ModelInfo,
HealthStatus,
CostEstimate
} from '@bernierllc/ai-provider-core';
许可证
版权(c)2025 Bernier有限责任公司。 版权所有.
另见
- @bernierllc/ai-professor-core (英语) - 摘要提供者接口
- @bernierllc/ai-propei 提供商-openai - OpenAI 供应商执行
- @bernierllc/retry-policy (英语) - 重试此软件包所用的逻辑
- @ bernierllc/ 拖放器 - 这个软件包使用的日志