Skip to content

Openai Response 接口格式调用

o3-pro 必须用 Response 接口格式调用

Response API 是Openai 新一代API接口规范。 o3-pro 模型必须使用特定格式进行调用。

基础概念

流式输出(Streaming Output)是一种实时内容呈现方式,其核心特征是将信息以逐字或逐段的形式动态展示。这种输出模式主要应用于以下典型场景: 即时通讯对话界面、数字人直播互动、实时信息推送系统。

技术特点:实现低延迟的内容传输、增强用户交互体验、模拟自然语言交流节奏。

注:与传统的整段输出相比,流式输出更符合人类对话的自然节奏,能有效提升交互场景的用户体验。

参数说明

参数名类型必填说明
api_keystringDMXAPI认证密钥
base_urlstringAPI服务地址
modelstring指定模型
inputstring输入的文本内容

request 调用示例

python
import requests
import json

# DMXAPI 的 URL 地址
url = "https://www.dmxapi.cn/v1/responses"
# API密钥 - 用于身份验证和访问控制
api_key = "sk-*********************************"  # 替换为你的API密钥

# 构建请求头 - 设置内容类型和授权信息
headers = {
    "Content-Type": "application/json",  # 指定请求体为JSON格式
    "Authorization": f"Bearer {api_key}",  # Bearer token认证方式
}

# 构建请求数据,添加stream参数 - 配置AI模型和输入内容
data = {
    "model": "gpt-5-mini",  # 指定使用的AI模型版本
    "input": "你好",  # 发送给AI的问题或指令
    "stream": True  # 启用流式输出 - 实时接收响应而不是等待完整回复
}

# 发送 POST 请求,设置stream=True - 向API发送请求并启用流式响应
response = requests.post(url, headers=headers, json=data, stream=True)

# 处理流式响应 - 实时处理服务器返回的数据流
try:
    # 初始化变量用于跟踪当前事件和数据
    current_event = None  # 当前SSE事件类型
    current_data = None   # 当前SSE事件数据
    
    # 逐行读取响应流 - 处理服务器发送的每一行数据
    for line in response.iter_lines():
        if line:  # 如果行不为空
            # 解码字节数据为UTF-8字符串并去除首尾空白
            line_text = line.decode('utf-8').strip()
            
            # 处理SSE格式的事件流 - Server-Sent Events协议解析
            if line_text.startswith('event: '):
                # 解析事件类型 - 提取事件名称
                current_event = line_text[7:]  
            elif line_text.startswith('data: '):
                # 解析事件数据 - 提取数据内容
                current_data = line_text[6:]  
                
                # 只处理包含文本内容的事件 - 过滤出我们需要的文本增量事件
                if current_event == 'response.output_text.delta' and current_data:
                    try:
                        # 解析JSON数据 - 将字符串转换为Python字典
                        json_data = json.loads(current_data)
                        # 提取文本内容 - 根据实际数据结构,文本在delta字段中
                        if 'delta' in json_data:
                            content = json_data['delta']  # 获取增量文本内容
                            if content:
                                # 实时打印文本内容 - 不换行,立即刷新输出缓冲区
                                print(content, end='', flush=True)
                    except json.JSONDecodeError:
                        # 静默处理JSON解析错误,不打印错误信息 - 避免干扰正常输出
                        pass
            elif line_text == '':
                # 空行表示一个事件结束 - 重置事件状态
                current_event = None
                current_data = None
except KeyboardInterrupt:
    # 处理用户中断 - 当用户按Ctrl+C时优雅退出
    print("\n用户中断了请求")
except Exception as e:
    # 处理其他异常 - 捕获并显示任何意外错误
    print(f"发生错误: {e}")

# 最后换行 - 确保输出格式整洁
print()

注意保护好自己的API密钥,不要泄露给他人。

一个 Key 用全球大模型