Skip to content

OpenAI API 文档

基础信息

  • 接口地址: https://www.dmxapi.cn
  • 认证方式: Bearer Token (API Key)

流式对话接口

请求参数

参数类型说明
modelstring模型名称(如gpt-4o-mini)
streamboolean是否开启流式输出
messagesarray对话消息列表

Python 请求示例

python
# 导入必要的库
import json      # 用于处理JSON数据的解析和编码
import requests  # 用于发送HTTP请求

# 配置API请求参数
url = "https://www.dmxapi.cn/v1/chat/completions"  # API接口地址
headers = {
    "Authorization": "Bearer sk-***************************",  # API密钥,传入您的api令牌
    "Content-Type": "application/json"  # 指定请求内容类型为JSON格式
}

# 构建请求负载数据
payload = {
    "model": "gpt-4o-mini",  # 指定使用的AI模型
    "stream": True,  # 开启流式输出,实时接收响应数据
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},  # 系统角色设定
        {"role": "user", "content": "周树人和鲁迅是兄弟吗?"},  # 用户提问内容
    ]
}

# 发送POST请求并启用流式响应处理
response = requests.post(url, headers=headers, json=payload, stream=True)
buffer = ""  # 初始化缓冲区,用于存储不完整的数据块

# 遍历响应流中的每个数据块
for chunk in response.iter_content(chunk_size=None):
    if chunk:  # 如果数据块不为空
        buffer += chunk.decode("utf-8")  # 将字节数据解码为UTF-8字符串并添加到缓冲区
        
        # 处理缓冲区中的完整行数据
        while "\n" in buffer:
            line, buffer = buffer.split("\n", 1)  # 按换行符分割,获取一行数据
            if not line.strip():  # 跳过空行
                continue
                
            # 检查是否为服务器发送事件(SSE)格式的数据行
            if line.startswith("data: "):
                data_line = line[6:].strip()  # 去除"data: "前缀,获取纯JSON数据
                
                if data_line == "[DONE]":  # 检查流式传输结束标记
                    break
                    
                try:
                    # 尝试解析JSON数据
                    data = json.loads(data_line)
                    
                    # 提取AI响应的文本内容
                    if "choices" in data and len(data["choices"]) > 0 and "delta" in data["choices"][0]:
                        content = data["choices"][0]["delta"].get("content", "")
                        if content:  # 只有当内容不为空时才打印输出
                            print(content, end="", flush=True)  # 实时打印内容,不换行,立即刷新输出
                            
                except json.JSONDecodeError:
                    # 处理JSON解析错误(通常是因为数据不完整)
                    buffer = line + "\n" + buffer  # 将当前行重新放回缓冲区等待更多数据
                    break  # 跳出while循环,继续接收下一个数据块

注意事项

请妥善保管您的API Key

一个 Key 用全球大模型