跳转到主要内容

格式转换和智能转发

PipeLLM 网关的核心功能是协议转换智能转发。使用官方 SDK(Anthropic、OpenAI、Google 等),我们自动将请求转换为不同平台的协议,并将响应转换回您期望的格式。 最大优势:无需学习新 API!使用熟悉的 SDK,我们处理所有协议差异。

🔄 工作原理

您的代码(Anthropic SDK)

[PipeLLM 网关]
    ↓ (协议转换)
AWS Bedrock / Google Vertex / Azure
    ↓ (协议转换)
[PipeLLM 网关]

您的代码(仍然是 Anthropic 格式)
关键点
  • 使用原生 SDK(例如 Anthropic)
  • 发送标准协议请求
  • 我们将请求转换为目标平台格式
  • 目标平台处理请求
  • 我们将响应转换回您的 SDK 格式
  • 您的代码无需更改

📊 支持的协议转换

1. Anthropic SDK ↔ 平台

使用 Anthropic 官方 SDK,我们处理协议转换。 示例:Anthropic SDK → Bedrock
# 您的代码(标准 Anthropic SDK)
from anthropic import Anthropic

client = Anthropic(
    api_key="your-pipellm-key",
    base_url="https://api.pipellm.com/v1"  # 指向我们的网关
)

# 标准 Anthropic API 调用
response = client.messages.create(
    model="claude-3-sonnet",
    max_tokens=1000,
    messages=[{"role": "user", "content": "Hello"}]
)

print(response.content[0].text)  # 直接使用
实际转换
您的 SDK目标平台转换
Anthropic SDKAWS BedrockAnthropic → Bedrock 协议
Anthropic SDKGoogle VertexAnthropic → Vertex 协议
Anthropic SDKAzureAnthropic → Azure 协议
Anthropic SDKAnthropic 官方直接透传
您的响应
{
  "id": "msg-123",
  "content": [{"type": "text", "text": "Hello!"}],
  "model": "claude-3-sonnet",
  "role": "assistant",
  "usage": {"input_tokens": 15, "output_tokens": 25}
}

2. OpenAI SDK ↔ 平台

使用 OpenAI 官方 SDK。 示例:OpenAI SDK → Azure
# 您的代码(标准 OpenAI SDK)
import openai

client = openai.OpenAI(
    api_key="your-pipellm-key",
    base_url="https://api.pipellm.com/v1"  # 指向我们的网关
)

# 标准 OpenAI API 调用
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}],
    max_tokens=100
)

print(response.choices[0].message.content)  # 直接使用
实际转换
您的 SDK目标平台转换
OpenAI SDKAzure OpenAIOpenAI → Azure 协议
OpenAI SDKAWS BedrockOpenAI → Bedrock 协议
OpenAI SDKGoogle VertexOpenAI → Vertex 协议
OpenAI SDKOpenAI 官方直接透传

3. Google SDK ↔ 平台

使用 Google 的原生库或标准 Gemini API。 示例:Gemini API → Vertex AI
# 标准 Gemini API
import requests

headers = {
    "Authorization": f"Bearer your-pipellm-key",
    "Content-Type": "application/json"
}

data = {
    "model": "gemini-pro",
    "contents": [{"role": "user", "parts": [{"text": "Hello"}]}]
}

response = requests.post(
    "https://api.pipellm.com/v1/chat/completions",
    headers=headers,
    json=data
)

result = response.json()
print(result["choices"][0]["message"]["content"])
实际转换
您的 SDK目标平台转换
Gemini SDKGoogle VertexGemini → Vertex 协议
Gemini SDKAWS BedrockGemini → Bedrock 协议
Gemini SDK其他平台Gemini → 平台协议

🎯 智能转发策略

1. 自动负载均衡

基于以下因素选择最佳提供商:
  • 可用性:实时健康监控
  • 延迟:选择最快的响应
  • 成本:在保证质量的前提下选择最佳性价比
  • 配额:避免单个提供商过载

2. 故障转移

如果主提供商不可用:
用户请求

检查提供商 A 状态
    ↓ (如果 A 不可用)
自动切换到提供商 B

返回结果

3. 模型映射

我们维护详细的模型映射:
您请求的模型OpenAIAnthropicGeminiAWS Bedrock
gpt-4✅ GPT-4
gpt-3.5-turbo
claude-3-sonnet
gemini-pro
auto智能选择
智能选择逻辑
  • 如果请求特定模型,使用该模型
  • 如果 auto 或通用名称,基于当前状态选择最佳模型
  • 如果主提供商配额耗尽,自动切换到备用提供商

⚙️ 高级配置

1. 首选提供商

通过请求头指定首选提供商:
curl https://api.pipellm.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Preferred-Provider: anthropic" \
  -d '{"model": "auto", "messages": [...]}'
可用提供商
  • openai - OpenAI
  • anthropic - Anthropic Claude
  • google - Google Gemini
  • azure - Azure OpenAI
  • aws - AWS Bedrock

2. 强制指定提供商

绕过智能路由:
curl https://api.pipellm.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Force-Provider: openai" \
  -d '{"model": "auto", "messages": [...]}'

3. 禁用格式转换

直接使用原生格式:
curl https://api.pipellm.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Raw-Format: anthropic" \
  -d '{"model": "claude-3-sonnet", "messages": [...]}'

⚡ 性能优化

1. 零转换开销

格式转换开销最小:
  • 请求转换:< 1ms
  • 响应转换:< 1ms
  • 总延迟增加:< 2ms

2. 智能缓存

自动跨提供商缓存:
  • 与格式无关的跨提供商缓存
  • 智能缓存键生成
  • 自动缓存刷新

3. 连接复用

  • 长连接
  • 连接池管理
  • 并发请求优化

🛠️ 开发者工具

1. 调试模式

启用调试模式查看转换详情:
curl https://api.pipellm.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Debug: true" \
  -d '{"model": "auto", "messages": [...]}'
响应包含:
{
  "_debug": {
    "original_request": {...},
    "converted_request": {...},
    "provider": "openai",
    "conversion_time_ms": 1.2,
    "cache_hit": false
  },
  "choices": [...]
}

2. 性能监控

通过管理仪表板监控:
  • 提供商使用统计
  • 转换时间分析
  • 缓存命中率
  • 故障转移次数

📝 使用指南

1. 最佳实践

推荐
  • 使用标准 OpenAI 格式
  • 让网关自动选择提供商
  • 适当使用缓存
  • 实现重试逻辑
不推荐
  • 频繁切换提供商
  • 禁用智能路由(除非必要)
  • 忽略错误处理

2. 迁移指南

步骤 1:保持现有代码不变
# 原始代码
import openai
openai.api_key = "YOUR_OPENAI_KEY"
openai.api_base = "https://api.openai.com/v1/"

# 修改为
openai.api_base = "https://api.pipellm.com/v1/"
openai.api_key = "YOUR_GATEWAY_KEY"
步骤 2:测试基本功能
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "test"}]
)
print(response.choices[0].message.content)
步骤 3:逐步优化
  • 根据需要调整模型选择
  • 启用批量请求
  • 配置监控告警

🤝 支持

如果遇到格式转换问题:
  1. 启用调试模式获取详细信息
  2. 检查请求日志确认转换
  3. 联系支持提供调试信息

提示:大多数情况下,您无需关心格式转换细节。我们的网关会自动处理一切!