从其他网关迁移
修改 base_url、Key 和模型 ID,再验证一次真实调用。
先迁移一次请求:改 API 地址、Key 和模型 ID。下面示例面向兼容 OpenAI Chat Completions 的客户端,不会自动把其他请求协议转换成 Chat。
1. 准备终端
准备 Python 3.10+ 和 uv。将 Praxis 云 API Key 放入环境变量 PRAXIS_API_KEY,不要写入代码或日志。
test -n "$PRAXIS_API_KEY"期望:退出码为 0。退出码 1 表示变量未设置,先设置再继续。示例默认使用 https://api.deepraxis.ai。切换环境时,将 PRAXIS_API_BASE 设为相应 API 域名,不带末尾斜杠或 API 路径。
2. 修改三项配置
- 将
base_url改为https://api.deepraxis.ai/openai/v1。期望:地址只含一次/openai/v1,不是控制台网址,也不是完整的/chat/completions端点。 - 将客户端 Key 改为
PRAXIS_API_KEY。期望:不再向 Praxis 发送旧网关的 Key;另存原配置以便回滚。 - 本次冒烟验证将模型 ID 改为
deepseek-flash。期望:它出现在GET /openai/v1/models?api=chat。旧网关的供应商前缀或别名不一定在此有效。
按当前使用的 API 选择更详细的迁移指南:
| 当前 API 或网关 | 指南 |
|---|---|
| OpenAI Chat Completions 或 Responses | 从 OpenAI 迁移 |
| OpenRouter | 从 OpenRouter 迁移 |
| Anthropic Messages | 从 Anthropic 迁移 |
3. 验证新配置
保存为 gateway-migration.py,运行 uv run -q --no-project --with openai --with anthropic --with google-genai python gateway-migration.py。
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ['PRAXIS_API_KEY'],
base_url=os.environ.get('PRAXIS_API_BASE', 'https://api.deepraxis.ai') + '/openai/v1')
models = client.models.list(extra_query={'api': 'chat'})
print('catalog X-Request-Id:', models._request_id)
assert 'deepseek-flash' in [model.id for model in models]
response = client.chat.completions.create(model='deepseek-flash',
messages=[{'role': 'user', 'content': 'Reply with exactly: MIGRATION_OK'}],
reasoning_effort='none', max_tokens=256)
print('X-Request-Id:', response._request_id)
assert response.choices[0].finish_reason == 'stop'
assert response.choices[0].message.content.strip() == 'MIGRATION_OK'
assert response.usage is not None and response.usage.total_tokens > 0
print(response.choices[0].message.content)
print('usage:', response.usage.model_dump())期望:输出 MIGRATION_OK、大于 0 的 token 用量、目录请求 ID 与推理请求 ID,退出码 0。保留请求 ID 用于排障,不记录 Key。
4. 切流量前检查
用自己的提示词检查流式、工具、结构化输出和思考设置。冒烟通过不代表模型行为相同。按需重建文件或响应资源:旧网关的 ID 不随配置迁移。验证失败时,一起恢复原地址、Key 和模型配置。
实测 gpt-5.6-sol 调用 Responses 返回 model_protocol_not_offered(HTTP 404)。支持 Chat 不代表支持 Responses,应按 Responses 指南查询对应目录。模型断言失败表示所选 ID 未出现在该协议目录中,应先核对再切流量。