OpenAI API 文档
基础信息
- 接口地址:
https://www.dmxapi.cn - 认证方式: Bearer Token (API Key)
流式对话接口
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| model | string | 模型名称(如gpt-4o-mini) |
| stream | boolean | 是否开启流式输出 |
| messages | array | 对话消息列表 |
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
