验证你的集成
上线前验证 AnyInt 集成:模型发现、鉴权、首次请求、流式输出、异步任务、回调和错误处理。
上线前请使用本指南验证 AnyInt 集成。这不是支付类 API 的沙盒或测试卡指南。AnyInt 是 AI API 平台,因此验证重点是确认你的 API 密钥、模型 ID、请求格式、流式链路、任务轮询、回调处理和重试逻辑能在你的环境中正常工作。
验证清单
| 检查项 | 为什么重要 |
|---|---|
| 将 API 密钥存入环境变量 | 避免凭证进入源码、日志或截图 |
| 先调用 Models API | 确认当前账号实际可用的模型 ID |
| 发起一个最小文本请求 | 验证 base URL、鉴权、JSON 结构和模型访问权限 |
| 如果 UI 使用流式输出,验证 streaming | 确认 HTTP 客户端能处理 SSE 分块和最终结束事件 |
| 分别验证提供方原生 API | Anthropic 和 Gemini 的请求体不同于 OpenAI chat |
| 用可观察锚点验证媒体输入 | 格式正确的 JSON 不代表模型真的处理了文件 |
| 验证异步媒体或音乐任务 | 初始任务创建响应不是最终生成资产 |
| 如果使用回调,验证回调接收 | 你的端点必须可公网访问、快速返回并支持幂等 |
处理 401、403、429 和临时上游错误 | 生产集成需要明确的重试和用户提示策略 |
1. 安全配置密钥
使用环境变量,不要硬编码密钥。
export ANYINT_API_KEY="your-anyint-api-key"除非你的产品有明确的服务端代理或短期令牌设计,否则不要把 API 密钥发送到浏览器。大多数生产应用应从后端服务调用 AnyInt。
2. 发现模型 ID
在硬编码模型名称之前,先调用 Models API。
curl https://api.anyint.ai/openai/v1/models \
-H "Authorization: Bearer $ANYINT_API_KEY"确认响应中包含你计划使用的模型:
{
"data": [
{
"id": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6"
}
]
}后续请求请使用 data[].id。不要直接使用营销名称,也不要把其他账号中复制来的模型 ID 当作当前账号一定可用。
3. 发起最小请求
除非你需要提供方原生请求结构,否则先从 OpenAI 兼容 Chat Completions API 开始。
curl https://api.anyint.ai/openai/v1/chat/completions \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{"role": "user", "content": "Reply with exactly: AnyInt OK"}
]
}'如果这个请求失败,请先检查模型 ID、API 密钥、端点家族和鉴权请求头,再扩大请求体。
4. 验证流式输出
如果产品会向用户流式展示回答,请验证 HTTP 客户端能读取 server-sent events。
curl https://api.anyint.ai/openai/v1/chat/completions \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"stream": true,
"messages": [
{"role": "user", "content": "Stream three short bullet points about API gateways."}
]
}'OpenAI 兼容流式响应会返回增量分块,并以最终结束事件收尾。不要把第一个分块当作完整答案。
5. 验证提供方原生请求结构
当你的应用已经使用某个提供方的原生格式时,提供方兼容 API 很有用。
Anthropic 兼容示例:
curl https://api.anyint.ai/anthropic/v1/messages \
-H "x-api-key: $ANYINT_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 128,
"messages": [
{"role": "user", "content": "用一句话解释 token 计数。"}
]
}'Gemini 兼容流式示例:
curl "https://api.anyint.ai/gemini/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse" \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "流式输出一个关于模型路由的简短回答。"}]
}
]
}'不要混用不同 API 家族的请求体。OpenAI 使用 messages,Anthropic 使用 Claude 风格 messages 和内容块,Gemini 使用 contents[].parts[]。
6. 验证媒体文件输入
如果请求包含图片、视频、音频或其他文件引用,请先确认提供方能访问文件,再要求完整分析。
使用能直接返回字节的公网 HTTPS URL,不要使用 HTML 分享页。避免需要登录、Cookie、私有网络访问或不透明跳转的 URL。
Gemini 原生视频或文件理解请在 Gemini 兼容 API 路由中使用 contents[].parts[].fileData.fileUri。对于大视频或长分析,优先使用 streamGenerateContent?alt=sse。
一个实用的首次 prompt 是让模型描述你能独立核对的时间点画面或物体。不要把格式正确的 JSON、高置信度回答或看起来合理的摘要当作媒体已被处理的证据。
7. 验证异步媒体或音乐任务
对于基于任务的 API,请保存返回的任务 ID,并轮询文档中对应的查询路由,直到任务成功或失败。
curl https://api.anyint.ai/dashscope/v1/services/aigc/video-generation/video-synthesis \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.0-t2v",
"input": {
"prompt": "A cinematic product reveal with soft camera movement.",
"img_url": "https://your-domain.com/source-image.png"
},
"parameters": {
"resolution": "720P",
"duration": 5,
"audio": false
}
}'用返回的任务 ID 轮询:
curl "https://api.anyint.ai/dashscope/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $ANYINT_API_KEY"只有当结果中包含成功状态和输出 URL 后,才应将资产标记为可用。
8. 验证回调处理
如果某个 API 接受回调 URL,请让回调处理器具备幂等性。
| 要求 | 建议 |
|---|---|
| 可访问性 | 使用 AnyInt 可访问的公网 HTTPS URL |
| 幂等性 | 保存回调 ID 或任务 ID,并安全忽略重复回调 |
| 速度 | 快速返回,把重处理逻辑放入队列 |
| 校验 | 确认任务 ID 属于你的应用创建的任务 |
| 兜底 | 如果回调延迟,仍保留轮询逻辑 |
9. 处理预期错误
| HTTP 状态 | 常见含义 | 集成行为 |
|---|---|---|
400 | 请求体无效或缺少必填字段 | 修正请求后再重试 |
401 | API 密钥缺失或无效 | 提示操作人员检查密钥和鉴权请求头 |
403 | 模型、能力或策略不可用 | 检查账号权限、模型可用性或方案限制 |
429 | 速率或配额达到限制 | 退避、稍后重试或降低并发 |
5xx | 临时上游或网关故障 | 使用指数退避重试,并向用户展示临时失败 |
更多细节请阅读 错误与限制。
生产就绪检查
上线前确认:
- 你的服务在源码之外保存
ANYINT_API_KEY。 - 应用会发现或定期刷新可用模型 ID。
- 首选模型和回退模型都已为当前账号启用。
- 流式客户端能处理部分分块、最终分块和中断流。
- 媒体文件输入使用直接 URL,并通过可观察锚点验证。
- 异步任务代码会保存任务 ID,并具备可重试的轮询逻辑。
- 回调处理器具备幂等性,并有轮询兜底。
- 面向用户的错误能区分请求无效、鉴权问题、配额限制和临时故障。
- 日志不会包含 API 密钥、私密提示词或私密生成内容,除非用户明确同意。