文档首页/ AI开发平台ModelArts/ 推理部署/ 推理部署/ 访问在线服务支持的传输协议/ 使用Server-Sent Events协议的方式访问在线服务
更新时间:2026-02-06 GMT+08:00
分享

使用Server-Sent Events协议的方式访问在线服务

背景说明

Server-Sent Events(SSE)是一种服务器向客户端推送数据的技术,它是一种基于HTTP的推送技术,服务器可以向客户端推送事件。这种技术通常用于实现服务器向客户端单向推送实时数据,例如实时新闻更新、股票价格等。

SSE主要解决了客户端与服务器之间的单向实时通信需求(例如ChatGPT回答的流式输出),相较于WebSocket(双向实时),它更加轻量级且易于实现。

使用SSE协议访问在线服务有以下特点:

  • 简单易用:SSE协议基于HTTP协议,实现简单,客户端无需复杂的配置或额外的库支持,可以通过普通的HTTP连接实现数据的实时推送。
  • 自动重连:SSE支持自动重连机制,当连接中断时,客户端会自动尝试重新连接,确保数据推送的连续性
  • 单向通信:SSE是单向的,服务器可以向客户端发送事件,但客户端不能通过同一个连接向服务器发送数据。
  • 资源占用低:SSE使用HTTP连接,相对于WebSocket等其他实时通信协议,资源占用较低,适合轻量级的实时数据推送场景。

前提条件

  • 部署模型为在线服务的模型导入选择的镜像需支持SSE协议。
  • 在线服务部署时在调用配置中服务协议需选择“HTTP”“HTTPS”

约束与限制

  • SSE协议只支持部署在线服务。
  • 只支持自定义镜像导入模型部署的在线服务。
  • 调用API访问在线服务时,对预测请求体大小和预测时间有限制:
    • 请求体的大小不超过服务运行配置中的请求大小限制,超过后请求会被拦截。
    • 平台每次请求预测的时间不超过服务运行配置中的请求超时时间。

获取认证信息、预测文件的本地路径、在线服务的调用地址

  • 认证信息

    SSE协议本身不提供额外的认证方式,和HTTP请求方式一致。

    根据服务部署时选择的认证方式获取认证信息。无认证方式无需获取认证信息。

    本章节以Token认证为例,用户Token的获取请参见获取Token认证。获取Token认证时,由于ModelArts生成的在线服务API不支持domain范围的token,因此需获取使用范围为project的Token信息,即scope参数的取值为project。

  • 在线服务的调用地址

    在线服务的调用地址和输入参数信息,可以在控制台的“模型推理 > 在线推理”,单击指定在线服务,在“服务”页签的“调用信息”获取。

    “调用URL”即在线服务的调用地址。当模型配置文件中apis定义了路径,调用地址后需拼接自定义路径。如:“{在线服务的调用地址}/v1/chat/completions”。

SSE调用在线服务

  1. 下载Postman软件并安装,您也可以直接在Chrome浏览器添加Postman扩展程序(也可使用其他支持发送post请求的软件)。Postman推荐使用8.11.1版本。
  2. 打开Postman,如图3所示。
    图1 Postman界面

  3. 在Postman界面填写参数。
    • 选择POST任务,将已获取的在线服务调用地址复制到POST后面的方框。地址后添加 /v1/sse 即可使用SSE进行访问。在header中添加认证信息,不同认证方式有不同header,跟https的推理服务相同。以Token认证为例:Headers页签的Key值填写为“X-Auth-Token”,Value值为用户Token。

      正常情况下,可以观察到响应头Content-Type为text/event-stream;charset=UTF-8。

      图2 参数填写

      图3 响应头Content-Type
    • 选择“raw”,选择JSON(application/json)类型,在下方文本框中填写请求体,请求体格式与内容与用户部署模型相关,平台不做任何处理。
      图4 在线服务iam认证,文本请求示意图

      请求体样例如下:

      {
          "model": "test",
          "messages": [
              {
                  "role": "user",
                  "content": "你是谁?"
              }
          ],
          "max_tokens": 100,
          "top_k": -1,
          "top_p": 1,
          "temperature": 0,
          "ignore_eos": false,
          "stream": false
      }

  4. 参数填写完成,单击“send”发送请求,结果会在“Response”下的对话框里显示。

    预测结果样例如图8所示,具体返回内容与格式与用户部署模型相关。

    图5 文本输入预测结果

相关文档