发起 API 调用
功能概述
无量AI开放平台提供兼容 OpenAI 格式的 API 接口,您可以使用任何支持 OpenAI SDK 的编程语言和工具发起调用。本文档介绍如何使用 API Key 完成认证,并通过 Python、Node.js 和 cURL 发起 API 调用。
平台同时兼容 Anthropic SDK 格式,方便您从不同技术栈迁移接入。
前提条件
- 已创建至少一个 API Key(且处于启用状态)
- 账户余额充足
- 已安装对应语言的开发环境
基础配置
接入信息
| 配置项 | 值 |
|---|---|
| Base URL | https://open.dieyuyun.com |
| 认证方式 | Bearer Token(在 Authorization 请求头中传递 API Key) |
| 数据格式 | JSON |
| 编码 | UTF-8 |
认证方式
所有 API 请求均需在 HTTP 请求头中携带 API Key 进行认证:
http
Authorization: Bearer sk-your-api-key-here如果认证信息缺失或无效,接口将返回 401 Unauthorized 错误。
操作步骤
使用 Python 调用
安装 OpenAI SDK
bash
pip install openai文本生成示例
python
from openai import OpenAI
# 初始化客户端,指向无量AI开放平台
client = OpenAI(
api_key="sk-your-api-key-here",
base_url="https://open.dieyuyun.com/v1"
)
# 发起文本生成请求
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "请介绍一下量子计算的基本原理。"}
],
temperature=0.7,
max_tokens=1000
)
# 输出响应内容
print(response.choices[0].message.content)
# 查看 Token 用量
print(f"输入 Token: {response.usage.prompt_tokens}")
print(f"输出 Token: {response.usage.completion_tokens}")
print(f"总 Token: {response.usage.total_tokens}")流式输出示例
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key-here",
base_url="https://open.dieyuyun.com/v1"
)
# 使用 stream=True 启用流式输出
stream = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "请写一首关于春天的诗。"}
],
stream=True
)
# 逐块读取流式响应
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")使用 Node.js 调用
安装 OpenAI SDK
bash
npm install openai文本生成示例
javascript
import OpenAI from 'openai'
// 初始化客户端,指向无量AI开放平台
const client = new OpenAI({
apiKey: 'sk-your-api-key-here',
baseURL: 'https://open.dieyuyun.com/v1',
})
async function main() {
// 发起文本生成请求
const response = await client.chat.completions.create({
model: 'deepseek-v4-flash',
messages: [
{ role: 'system', content: '你是一个有帮助的AI助手。' },
{ role: 'user', content: '请介绍一下量子计算的基本原理。' },
],
temperature: 0.7,
max_tokens: 1000,
})
// 输出响应内容
console.log(response.choices[0].message.content)
// 查看 Token 用量
console.log(`输入 Token: ${response.usage.prompt_tokens}`)
console.log(`输出 Token: ${response.usage.completion_tokens}`)
console.log(`总 Token: ${response.usage.total_tokens}`)
}
main()流式输出示例
javascript
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: 'sk-your-api-key-here',
baseURL: 'https://open.dieyuyun.com/v1',
})
async function main() {
const stream = await client.chat.completions.create({
model: 'deepseek-v4-flash',
messages: [{ role: 'user', content: '请写一首关于春天的诗。' }],
stream: true,
})
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '')
}
}
main()使用 cURL 调用
文本生成请求
bash
curl -X POST "https://open.dieyuyun.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-api-key-here" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "请介绍一下量子计算的基本原理。"}
],
"temperature": 0.7,
"max_tokens": 1000
}'响应格式
成功的响应以 JSON 格式返回,以下是文本生成接口的典型响应结构:
json
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "deepseek-v4-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "量子计算是一种利用量子力学原理进行计算的技术..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175
}
}常用请求参数
以下是文本生成接口(/v1/chat/completions)的常用参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | - | 要使用的模型代码,如 deepseek-v4-flash |
| messages | array | 是 | - | 消息列表,每条消息包含 role(system/user/assistant)和 content |
| temperature | number | 否 | 1 | 控制输出随机性,范围 0~2。值越低输出越确定,值越高输出越多样 |
| max_tokens | integer | 否 | 模型默认 | 最大生成 Token 数 |
| top_p | number | 否 | 1 | 核采样参数,与 temperature 配合使用 |
| stream | boolean | 否 | false | 是否启用流式输出 |
| stop | string/array | 否 | null | 停止生成的标记序列 |
| presence_penalty | number | 否 | 0 | 存在惩罚,范围 -2~2,正值增加谈论新话题的概率 |
| frequency_penalty | number | 否 | 0 | 频率惩罚,范围 -2~2,正值降低重复内容的概率 |
| n | integer | 否 | 1 | 生成的候选回复数量 |
错误处理
常见错误码
| HTTP 状态码 | 错误类型 | 说明 | 解决方案 |
|---|---|---|---|
| 400 | InvalidRequestError | 请求参数格式错误或缺少必填参数 | 检查请求体格式和参数值 |
| 401 | AuthenticationError | API Key 无效、缺失或已过期 | 检查 Authorization 请求头中的 Key |
| 403 | PermissionDeniedError | API Key 无权访问该接口或模型 | 检查 Key 的能力权限和模型范围配置 |
| 429 | RateLimitError | 请求频率超出限制 | 降低请求频率,检查 RPM/TPM 限制配置 |
| 500 | InternalServerError | 服务端内部错误 | 稍后重试,如持续出现请联系客服 |
错误处理最佳实践
Python 错误处理示例
python
from openai import OpenAI, APIError, AuthenticationError, RateLimitError
client = OpenAI(
api_key="sk-your-api-key-here",
base_url="https://open.dieyuyun.com/v1"
)
try:
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
except AuthenticationError:
print("认证失败:请检查 API Key 是否正确")
except RateLimitError:
print("请求频率超限:请稍后重试")
except APIError as e:
print(f"API 错误:{e.status_code} - {e.message}")Node.js 错误处理示例
javascript
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: 'sk-your-api-key-here',
baseURL: 'https://open.dieyuyun.com/v1',
})
async function main() {
try {
const response = await client.chat.completions.create({
model: 'deepseek-v4-flash',
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(response.choices[0].message.content)
} catch (error) {
if (error.status === 401) {
console.error('认证失败:请检查 API Key 是否正确')
} else if (error.status === 429) {
console.error('请求频率超限:请稍后重试')
} else {
console.error(`API 错误:${error.status} - ${error.message}`)
}
}
}
main()速率限制
无量AI开放平台对 API 调用实施速率限制,以保障服务的稳定性和公平性:
- RPM(Requests Per Minute):每分钟最大请求数
- TPM(Tokens Per Minute):每分钟最大 Token 数
速率限制的层级关系:
- 系统级限制:平台对每个模型的全局速率限制
- Key 级限制:您可以在 API Key 配置中设置更低的限制,但不能超过系统级限制
当请求超过速率限制时,API 将返回 429 Too Many Requests 错误。建议在代码中实现指数退避重试策略:
python
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
api_key="sk-your-api-key-here",
base_url="https://open.dieyuyun.com/v1"
)
max_retries = 3
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
break
except RateLimitError:
if attempt < max_retries - 1:
wait_time = 2 ** attempt # 指数退避:1s, 2s, 4s
print(f"速率受限,{wait_time}秒后重试...")
time.sleep(wait_time)
else:
print("重试次数已达上限")注意事项
- API Key 安全:切勿将 API Key 硬编码在客户端代码中,建议通过服务端代理转发 API 请求。
- Base URL 注意:使用 OpenAI SDK 时,需要将
base_url设置为https://open.dieyuyun.com/v1(注意末尾的/v1)。 - Token 计费:所有请求按实际消耗的 Token 数量计费,包括输入和输出 Token。请合理设置
max_tokens参数避免不必要的消耗。 - 流式输出:在生产环境中使用流式输出时,请确保正确处理 SSE(Server-Sent Events)协议的连接管理和错误恢复。
- 上下文长度:每次请求的输入 Token 数不能超过模型的上下文长度限制,超出部分将被截断。
- 幂等性:API 调用不是幂等的,相同的请求可能产生不同的结果(尤其在 temperature > 0 时)。
相关文档
- 管理 API Key - 创建和配置 API Key
- 模型列表与定价 - 浏览可用模型和定价信息
- 查看请求日志 - 分析 API 请求日志
- API 文档浏览 - 查看完整的 API 接口文档
- 使用 Playground 测试 - 交互式测试 API 接口