Amux

Anthropic 适配器

使用 Anthropic 适配器连接 Claude 3.5 Sonnet、Claude 3 Opus 等模型

Anthropic 适配器提供了与 Anthropic Claude API 的完整集成,支持 Messages API、工具使用、视觉能力和流式传输。

安装

pnpm add @amux.ai/llm-bridge @amux.ai/adapter-anthropic

基本使用

import { createBridge } from '@amux.ai/llm-bridge'
import { anthropicAdapter } from '@amux.ai/adapter-anthropic'

const bridge = createBridge({
  inbound: anthropicAdapter,
  outbound: anthropicAdapter,
  config: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: '什么是 Amux?' }
  ]
})

console.log(response.content[0].text)

Anthropic API 要求必须指定 max_tokens 参数。

支持的功能

工具使用

const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: '北京现在几点?' }
  ],
  tools: [{
    name: 'get_current_time',
    description: '获取指定城市的当前时间',
    input_schema: {
      type: 'object',
      properties: {
        city: {
          type: 'string',
          description: '城市名称'
        }
      },
      required: ['city']
    }
  }]
})

// 检查工具调用
if (response.stop_reason === 'tool_use') {
  const toolUse = response.content.find(c => c.type === 'tool_use')
  console.log('工具名:', toolUse.name)
  console.log('参数:', toolUse.input)
}

视觉能力

const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [{
    role: 'user',
    content: [
      {
        type: 'text',
        text: '这张图片里有什么?'
      },
      {
        type: 'image',
        source: {
          type: 'url',
          url: 'https://example.com/image.jpg'
        }
      }
    ]
  }]
})

支持的图像格式:

  • URL(https://)
  • Base64 编码(需要指定 media_type)

系统提示

Claude 使用单独的 system 参数:

const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  system: '你是一个有帮助的 AI 助手,专门解答技术问题。',
  messages: [
    { role: 'user', content: '什么是 TypeScript?' }
  ]
})

流式传输

const stream = bridge.chatStream({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: '讲一个故事' }
  ],
  stream: true
})

for await (const event of stream) {
  if (event.type === 'content_block_delta') {
    if (event.delta.type === 'text_delta') {
      process.stdout.write(event.delta.text)
    }
  }
}

扩展思考(推理)

Claude 支持扩展思考功能,用于复杂推理任务:

const response = await bridge.chat({
  model: 'claude-3-7-sonnet-20250219',
  max_tokens: 4096,
  messages: [
    { role: 'user', content: '逐步解决这个复杂问题...' }
  ],
  thinking: {
    type: 'enabled',
    budget_tokens: 2000
  }
})

// 访问推理内容
for (const block of response.content) {
  if (block.type === 'thinking') {
    console.log('推理过程:', block.thinking)
  } else if (block.type === 'text') {
    console.log('答案:', block.text)
  }
}

支持的模型

模型上下文长度描述
claude-3-5-sonnet-20241022200K最新最强大的模型
claude-3-opus-20240229200K最智能的模型
claude-3-sonnet-20240229200K平衡性能和速度
claude-3-haiku-20240307200K最快最经济

配置选项

const bridge = createBridge({
  inbound: anthropicAdapter,
  outbound: anthropicAdapter,
  config: {
    apiKey: process.env.ANTHROPIC_API_KEY,
    baseURL: 'https://api.anthropic.com', // 可选
    timeout: 60000, // 可选
    headers: {
      'anthropic-version': '2023-06-01' // API 版本
    }
  }
})

与 OpenAI 格式互转

OpenAI → Anthropic

import { openaiAdapter } from '@amux.ai/adapter-openai'
import { anthropicAdapter } from '@amux.ai/adapter-anthropic'

const bridge = createBridge({
  inbound: openaiAdapter,
  outbound: anthropicAdapter,
  config: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

// 使用 OpenAI 格式发送请求
const response = await bridge.chat({
  model: 'gpt-4',
  messages: [{ role: 'user', content: '你好' }]
})
// 返回 OpenAI 格式的响应

Anthropic → OpenAI

const bridge = createBridge({
  inbound: anthropicAdapter,
  outbound: openaiAdapter,
  config: {
    apiKey: process.env.OPENAI_API_KEY
  }
})

// 使用 Anthropic 格式发送请求
const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [{ role: 'user', content: '你好' }]
})
// 返回 Anthropic 格式的响应

功能支持

功能支持说明
Messages API完全支持
流式传输完全支持
工具使用完全支持(基于内容块)
视觉Claude 3 系列
系统提示单独的 system 参数(顶层字段,不在消息中)
长上下文200K tokens
扩展思考推理支持,可配置 budget_tokens
top_kAnthropic 特有采样参数(OpenAI 中不可用)
max_tokens必填(作为出站适配器使用时默认为 4096)

最佳实践

1. 始终设置 max_tokens

// ✅ 正确
const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024, // 必需
  messages: [...]
})

// ❌ 错误 - 会报错
const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  messages: [...] // 缺少 max_tokens
})

2. 使用系统提示优化响应

const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  system: '你是一个专业的技术文档编写者。使用清晰、简洁的语言。',
  messages: [
    { role: 'user', content: '解释什么是 REST API' }
  ]
})

3. 处理长对话

// Claude 支持 200K tokens 的上下文
const response = await bridge.chat({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 2048,
  messages: [
    { role: 'user', content: '第一个问题' },
    { role: 'assistant', content: '第一个回答' },
    { role: 'user', content: '第二个问题' },
    { role: 'assistant', content: '第二个回答' },
    // ... 可以有很多轮对话
    { role: 'user', content: '最新的问题' }
  ]
})

相关资源

下一步

On this page