Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[M3 Bug] Token Plan + Cloudflare AI Gateway (BYOK) does not forward SSE — chunks are buffered and returned as a single payload

Abierto
#22 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
python, shell, typescript
Área
api, cloud, networking

Línea de trabajo

Comienza ejecutando las dos solicitudes curl del issue y compara la salida directa de MiniMax Token Plan con la ruta BYOK de Cloudflare AI Gateway. Verifica los encabezados de respuesta y si cada evento SSE llega de forma incremental; se considera terminado cuando el gateway reenvía fragmentos text/event-stream sin almacenar en búfer la respuesta completa.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Which inference path did you use?

MiniMax API (Token Plan, via Cloudflare AI Gateway / BYOK)

Inference parameters

  • model: MiniMax-M3
  • stream: true
  • max_tokens: default
  • temperature: default
  • request path: POST https://<gateway>.gateway.ai.cloudflare.com/v1/chat/completions (Cloudflare AI Gateway)
  • upstream: api.minimaxi.com (大陆版 Token Plan) — configured via BYOK (Bring Your Own Key)
  • client: raw curl -N (also reproduced from @langchain/openai TS / openai-python SDK)

Prompt / input

# A. Via Cloudflare AI Gateway (BYOK)  ← 问题路径
curl -N -X POST "https://<gateway>.gateway.ai.cloudflare.com/v1/chat/completions" \
  -H "Authorization: Bearer $CF_AIGW_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-M3",
    "stream": true,
    "messages": [{"role": "user", "content": "Count from 1 to 10 slowly"}]
  }'

# B. Direct to api.minimaxi.com (Token Plan)  ← 对照,正常
curl -N -X POST "https://api.minimaxi.com/v1/chat/completions" \
  -H "Authorization: Bearer $MINIMAX_TOKEN_PLAN_KEY" \
  -H "Content-Type: application/json" \
  -d '{ ... 同上 ... }'

Expected behavior

Cloudflare AI Gateway 在 BYOK + stream: true 时应该透明转发上游 SSE:

  • 响应 Content-Type: text/event-stream + Transfer-Encoding: chunked
  • 上游每个 data: {...}\n\n 增量到客户端
  • TTFB ≈ TTFT(几百 ms),不是"等生成完再一次性返回"

A / B 两条路径的流式体验应完全一致。

Actual behavior

SSE 没有被 CF 透传。观察:

  • B(直连 api.minimaxi.com):正常流式,chunks 一个个到,前端可以增量渲染 ✅
  • A(CF AI Gateway BYOK):chunks 全部存在且顺序正确,但挤在一起一次性返回 ⛔
    • 客户端在 curl / OpenAI SDK / @langchain/openai 上都看不到 chunk-by-chunk 到达
    • 整段 data: {...}\n\n 行连成一片在生成结束后才一次性 flush
    • 没有"逐字打出"的效果,TTFB 接近"整个 response 生成完成"的耗时
    • 任何依赖 incremental render 的客户端(OpenAI SDK stream iterator、LCEL streaming、assistant-ui、自定义 SSE consumer)都不可用

Additional context

  • 根因方向:CF AI Gateway edge 在 BYOK 模式下对上游 text/event-stream 响应做了 buffering(典型表现:buffer 到 size threshold 或 end-of-stream 才 flush),没有透传给下游。属于 CF 侧行为,但提在这里因为:
    1. 用 MiniMax Token Plan 作为 upstream 可稳定复现
    2. MiniMax 端加 X-Accel-Buffering: no 等 header 可能绕过
    3. 走 CF 转发 Token Plan 的其他用户也会撞到同样的问题
  • 与模型无关:MiniMax-M2.7 和 MiniMax-M3 在 Token Plan + CF BYOK 路径下表现一致
  • 还没测过 Anthropic-compatible 端点经 CF BYOK 是否同样问题
  • 直连 Token Plan 一切正常,问题专属于 CF AI Gateway BYOK 这一跳

Suggested mitigations

MiniMax(上游)侧可考虑:

  • streaming 响应加 X-Accel-Buffering: no header
  • 确保 Content-Type: text/event-stream 在第一个 byte 就 set,而不是 buffering 完成后才设
  • 文档里给出推荐的 CF AI Gateway / 反代层流式配置说明

Cloudflare(gateway)侧可考虑:

  • 上游是 text/event-stream 时跳过 response buffering
  • 允许把 BYOK upstream 标记为 "streaming-required",让 edge 不要 buffer
Lenguaje dominante
Sin datos de lenguaje
Estrellas
487
Forks
59
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MiniMax-AI/MiniMax-M3

Todos los issues de MiniMax-AI/MiniMax-M3

Issues similares

Más issues de Backend & API Design

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.