快速开始
在 5 分钟内构建您的第一个 Amux 桥接
本指南将引导您创建第一个桥接。您将学习如何在几分钟内在 OpenAI 和 Anthropic 格式之间进行转换。
步骤 1:安装包
pnpm add @amux.ai/llm-bridge @amux.ai/adapter-openai @amux.ai/adapter-anthropic步骤 2:设置 API 密钥
创建一个 .env 文件:
ANTHROPIC_API_KEY=your_key_here永远不要将 .env 文件提交到版本控制。将其添加到 .gitignore。
步骤 3:创建您的第一个桥接
创建 bridge.ts:
import { createBridge } from '@amux.ai/llm-bridge'
import { openaiAdapter } from '@amux.ai/adapter-openai'
import { anthropicAdapter } from '@amux.ai/adapter-anthropic'
// 创建一个桥接:OpenAI 格式输入 → Anthropic API 输出
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: '说你好!' }
]
})
console.log(response.choices[0].message.content)发生了什么:
- 您发送了一个 OpenAI 格式的请求
- Amux 将其转换为 Anthropic 格式
- 调用 Claude API
- 响应被转换回 OpenAI 格式
步骤 4:运行它
tsx bridge.ts您应该会看到来自 Claude 的响应,但格式是 OpenAI 的!
尝试流式传输
为了更好的用户体验,使用流式传输:
import { createBridge } from '@amux.ai/llm-bridge'
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
}
})
// 启用流式传输
const stream = await bridge.chat({
model: 'gpt-4',
messages: [
{ role: 'user', content: '讲一个短故事' }
],
stream: true
})
// 处理流事件
for await (const event of stream) {
if (event.type === 'content') {
process.stdout.write(event.content.delta)
}
}常见模式
反向转换
切换适配器以实现反向转换:
// Anthropic 格式输入 → OpenAI API 输出
const bridge = createBridge({
inbound: anthropicAdapter,
outbound: openaiAdapter,
config: {
apiKey: process.env.OPENAI_API_KEY
}
})
const response = await bridge.chat({
model: 'claude-3-5-sonnet-20241022',
messages: [{ role: 'user', content: '你好!' }],
max_tokens: 100
})
console.log(response.content[0].text)工具调用
对任何提供商使用工具:
const response = await bridge.chat({
model: 'gpt-4',
messages: [
{ role: 'user', content: '北京的天气怎么样?' }
],
tools: [{
type: 'function',
function: {
name: 'get_weather',
description: '获取某个位置的天气',
parameters: {
type: 'object',
properties: {
location: { type: 'string' }
},
required: ['location']
}
}
}]
})
// 检查工具调用
if (response.choices[0].message.toolCalls) {
console.log('工具调用:', response.choices[0].message.toolCalls)
}错误处理
始终处理错误:
import { LLMBridgeError } from '@amux.ai/llm-bridge'
try {
const response = await bridge.chat(request)
} catch (error) {
if (error instanceof LLMBridgeError) {
console.error(`${error.type}: ${error.message}`)
if (error.retryable) {
// 重试请求
}
}
}