更新时间:2026-07-08 gmt 08:00

http-j9九游会登录

介绍代理应用中 http 协议的实现要求,基于 http 搭建 rest api 接口以适配传统请求响应模式,同时部署 websocket 接口实现实时双向流式通信。

http(/invocations)和websocket(/ws)端点可部署在同一个容器中并使用8080端口,单个代理服务可同时兼容传统 api 交互与实时双向流式通信。

镜像要求

需满足以下容器化应用:

  • host:0.0.0.0
  • 端口:基于http代理通信的标准端口8080
  • 系统:arm64 容器

路径要求

  • /invocations - post

    主要的代理交互端点,提供json输入和json/sse输出。

    • 目的:接收来自用户或应用的请求,并通过代理业务逻辑进行处理。
    • 使用场景
      • 用户互动与对话
      • 与外部系统的api集成
      • 多请求的批量处理
      • 长期运行操作的实时流响应

    请求格式示例

    content-type: application/json
    {
      "prompt": "what color do you like?"
    }

    响应格式

    可以根据使用场景使用以下两种格式进行响应:

    • json 响应(非流式)

      目的:为请求提供完整的响应,适用于快速处理。

      使用场景

      • 简单的问答场景
      • 确定性计算
      • 快速数据查询
      • 状态确认

      json 响应格式示例

      content-type: application/json
      {
        "response": "i like red"
      }
    • sse响应(流式传输)

      服务器发送事件(sse)能够实时传递流式响应。

      目的:支持增量响应交付,实现长期运营和提升用户体验。

      使用场景

      • 实时对话体验
      • 渐进式内容生成
      • 具有中间结果的长期计算
      • 实时数据流与更新

      sse响应格式示例

      content-type: text/event-stream
      data: {"event": "response 1"}
      data: {"event": "response 2"}
      data: {"event": "response"}
  • /ws - websocket(可选)

    实现实时双向通信的主要websocket连接端点。

    目的:接受websocket升级请求,并维护流代理交互的持久连接。

    使用场景

    • 实时对话接口
    • 互动代理会话,提供即时反馈
    • 双向通信的流式数据处理

    连接建立

    websocket 连接以 http 升级请求开始:

    http升级请求示例

    get /ws http/1.1
    host: agent-endpoint
    connection: upgrade
    upgrade: websocket
    sec-websocket-version: 13
    sec-websocket-key: 8zjk2cv7l9ax3pr5sq7tw2ey1bn4md6hg8jk0fs9da2=
    x-hw-agentarts-session-id: session-uuid

    websocket升级响应示例

    http/1.1 101 switching protocols
    connection: upgrade
    upgrade: websocket
    sec-websocket-accept: 8zjk2cv7l9ax3pr5sq7tw2ey1bn4md6hg8jk0fs9da2=

    消息处理要求

    • 连接接受:调用 await websocket.accept() 建立连接。
    • 消息接收:支持基于应用需求的文本或二进制消息类型。
    • 消息处理:根据代理的业务逻辑处理接收到的消息。
    • 响应发送:发送适当的响应,使用 send_text() 或 send_bytes()。
    • 连接生命周期:管理连接的建立、维护和终止。

    消息格式

    • json格式(推荐)

      请求示例

      {
        "prompt": "what color do you like?"
      }

      响应示例

      {
        "response": "i like red"
      }
    • 纯文本格式

      使用场景

      • 多模态代理交互
      • 文件上传与下载
      • 压缩数据传输
      • 二进制协议数

    websocket协议过程

    • 连接建立
      • http 握手:客户端发送 websocket 升级请求
      • 升级响应:代理接受并返回101交换协议
      • websocket激活:双向通信开始
      • 会话绑定:将连接与会话标识符关联
    • 消息交换
      1. 连续循环:实现消息监听环路
      2. 消息处理:异步处理消息
      3. 响应生成:发送合适的回复
      4. 错误处理:管理异常和连接问题
  • /ping - get

    目的:验证代理是否已运行并准备好处理请求。

    使用场景:服务监控以检测和修复问题。

    响应格式

    返回状态代码,显示代理健康状况:

    • 类型:application/json
    • http 状态码
      1. agent 启动后,ping 接口不可用
        • 表现:端口无法连接,或者连接后无法返回应答。
        • 状态:initing
        • 含义:agent 正在启动,尚未准备好处理请求。
      2. agent 启动中,ping 接口已经可用,返回 initing 状态
        • http 返回状态码:200
        • 应答返回的状态:{"status": "initing"}
        • 含义:agent 正在初始化,暂时未完成,还没有就绪。
      3. agent 就绪,初始化完成,ping 返回 healthy 状态
        • http 返回状态码:200
        • 应答返回的状态:{"status": "healthy"}
        • 含义:agent 健康,当前没有异步后台任务。
        • 空闲超时:如果一个 agent 连续处于 healthy (idle) 状态超过空闲超时时间(例如 15 分钟),则应该发起删除 sandbox 的流程。
      4. agent 启动了后台异步任务,ping 返回 healthybusy 状态
        • http 返回状态码:200
        • 应答返回的状态:{"status": "healthybusy"}
        • 含义:agent 健康,有后台异步任务正在运行。这对于支持 agent 运行工作时间远超过空闲超时的长任务至关重要。
      5. agent 不健康
        • 表现:ping 接口无法连接,或者无应答,或者返回 http 200 之外的状态码。
        • 状态:不健康
        • 含义:agent 不健康,多次健康检查失败则会发起删除 sandbox 的流程。

      示例 ping 响应格式

      {
        "status": "healthy"
      }

相关文档

网站地图