HTTP SSE 流式响应处理:调用腾讯 智能应用开发平台ADP智能体的 API

一、场景背景

腾讯 ADP(智能应用开发平台)提供的大模型问答接口基于 HTTP SSE(Server-Sent Events)协议返回流式数据,数据分批次推送且通过is_final字段标识最终完整结果。本文聚焦该场景,提供通用的 SSE 流式响应处理方案,精准提取接口返回的最终结果,保证 UTF-8 编码兼容性。

二、核心实现代码

python 复制代码
#coded by luke 20251216
import requests
import traceback

# 腾讯ADP大模型SSE接口配置
url = "https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse"
headers = {"Content-Type": "application/json"}
# 业务请求问题内容
question = '''
你的问题
'''

# 接口请求参数(脱敏后)
payload = {
    "session_id": "会话ID",
    "bot_app_key": "应用密钥",
    "visitor_biz_id": "访客ID",
    "content": question,
    "incremental": True,
    "streaming_throttle": 10,
    "visitor_labels": [],
    "custom_variables": {},
    "search_network": "disable",
    "stream": "enable",  # 开启流式返回
    "workflow_status": "disable",
    "tcadp_user_id": ""
}

# 存储最终结果
final_result = ""

try:
    # 发送流式POST请求
    response = requests.post(
        url,
        headers=headers,
        json=payload,
        stream=True,  # 启用流式响应处理
        timeout=60
    )
    print(f"请求状态码: {response.status_code}")
    response.encoding = 'utf-8'  # 强制UTF-8编码,避免乱码

    current_event = ""
    # 逐行解析SSE流式数据
    for line in response.iter_lines(chunk_size=1024, decode_unicode=True):
        if not line:
            continue
        line = line.strip()
        print(f"流式数据片段: {line}")  # 打印流式过程数据

        # 识别SSE事件类型(目标为reply事件)
        if line.startswith("event:"):
            current_event = line.split(":", 1)[1].strip()
        # 提取reply事件中标记为最终结果的内容
        elif line.startswith("data:") and current_event == "reply":
            data_part = line.split(":", 1)[1].strip()
            # 匹配is_final标识(兼容带/不带空格格式)
            if '"is_final":true' in data_part or '"is_final": true' in data_part:
                final_result = data_part
                break  # 找到最终结果后终止解析

    # 输出并保存最终结果
    print("\n" + "="*100)
    print("完整最终结果:")
    print("="*100)
    print(final_result)
    print("="*100)

    if final_result:
        with open("final_result.txt", "w", encoding="utf-8") as f:
            f.write(final_result)
        print(f"\n最终结果已保存到 final_result.txt,字符数: {len(final_result)}")
    else:
        print("\n未找到is_final=true的reply事件结果")

except Exception as e:
    print(f"\n请求异常: {e}")
    traceback.print_exc()

三、核心逻辑说明

  1. 请求配置 :针对腾讯 ADP 大模型 SSE 接口,配置流式请求参数(stream: enable),启用stream=True保证流式响应处理;
  2. SSE 解析 :逐行识别event:reply类型事件,过滤非目标事件数据;
  3. 最终结果筛选 :匹配is_final=true(兼容空格格式)字段,提取最终完整结果,找到后立即终止解析提升效率;
  4. 编码与异常处理:强制 UTF-8 编码避免乱码,完整捕获请求 / 解析异常并输出堆栈信息;
  5. 结果落地:控制台输出最终结果,并将结果持久化到文件。

四、关键适配点

  • 兼容腾讯 ADP 大模型 SSE 接口的reply事件格式;
  • 适配接口返回的is_final字段两种常见格式(带 / 不带空格);
  • 全程保证 UTF-8 编码,适配中文 / 特殊字符场景;
  • 聚焦核心的流式结果提取逻辑。
相关推荐
云水初16 分钟前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag
薛定猫AI22 分钟前
【技术干货】多AI团队大模型协作编排与编程项目评测架构解析
python·机器学习·ai·大模型·技术实战
外收内放23 分钟前
数据分析(图表信息详解)
python·学习·数据分析·matplotlib
1-1=01 小时前
Python3 开发环境
python
智购科技无人售货机工厂1 小时前
MQTT还是HTTP?无人售货机弱网通信协议选型与带宽优化实战~YH
网络·网络协议·http
miofly1 小时前
GitHub 今日推荐|MOSS-Image:靠坐标框精确控制文字排版的图像生成模型
python·开源·github
Tiandaren1 小时前
么是agent、为什么要做agent、怎么做agent、怎么工程化
人工智能·python·深度学习·大模型
张张123y2 小时前
后端第十一课:RAG 落地实战(从 0 到 1 接上私有知识库,并设计一个好用的 RAG)
开发语言·人工智能·python·机器学习·fastapi·rag
golang学习记2 小时前
Python vs Go:2026年到底该怎么选
java·vscode·python·golang·pycharm·goland
2401_872418782 小时前
计算机网络——应用层详解:DNS、电子邮件、FTP 与 HTTP 的原理及通信过程
网络协议·计算机网络·http