Skip to content

发起 API 调用

功能概述

无量AI开放平台提供兼容 OpenAI 格式的 API 接口,您可以使用任何支持 OpenAI SDK 的编程语言和工具发起调用。本文档介绍如何使用 API Key 完成认证,并通过 Python、Node.js 和 cURL 发起 API 调用。

平台同时兼容 Anthropic SDK 格式,方便您从不同技术栈迁移接入。

前提条件

  • 已创建至少一个 API Key(且处于启用状态)
  • 账户余额充足
  • 已安装对应语言的开发环境

基础配置

接入信息

配置项
Base URLhttps://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 SDK

文本生成示例

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文本生成示例

流式输出示例

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="")

Python流式输出示例

使用 Node.js 调用

安装 OpenAI SDK

bash
npm install openai

安装Node.js SDK

文本生成示例

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()

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() {
  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()

Node.js流式输出示例

使用 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
  }'

cURL文本生成示例

响应格式

成功的响应以 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
  }
}

响应JSON结构

常用请求参数

以下是文本生成接口(/v1/chat/completions)的常用参数:

参数类型必填默认值说明
modelstring-要使用的模型代码,如 deepseek-v4-flash
messagesarray-消息列表,每条消息包含 role(system/user/assistant)和 content
temperaturenumber1控制输出随机性,范围 0~2。值越低输出越确定,值越高输出越多样
max_tokensinteger模型默认最大生成 Token 数
top_pnumber1核采样参数,与 temperature 配合使用
streambooleanfalse是否启用流式输出
stopstring/arraynull停止生成的标记序列
presence_penaltynumber0存在惩罚,范围 -2~2,正值增加谈论新话题的概率
frequency_penaltynumber0频率惩罚,范围 -2~2,正值降低重复内容的概率
ninteger1生成的候选回复数量

请求参数表

错误处理

常见错误码

HTTP 状态码错误类型说明解决方案
400InvalidRequestError请求参数格式错误或缺少必填参数检查请求体格式和参数值
401AuthenticationErrorAPI Key 无效、缺失或已过期检查 Authorization 请求头中的 Key
403PermissionDeniedErrorAPI Key 无权访问该接口或模型检查 Key 的能力权限和模型范围配置
429RateLimitError请求频率超出限制降低请求频率,检查 RPM/TPM 限制配置
500InternalServerError服务端内部错误稍后重试,如持续出现请联系客服

错误处理最佳实践

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}")

Python错误处理示例

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()

Node.js错误处理示例

速率限制

无量AI开放平台对 API 调用实施速率限制,以保障服务的稳定性和公平性:

  • RPM(Requests Per Minute):每分钟最大请求数
  • TPM(Tokens Per Minute):每分钟最大 Token 数

速率限制的层级关系:

  1. 系统级限制:平台对每个模型的全局速率限制
  2. 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 时)。

相关文档