Claude 与 GPT 流式响应实战:用 59API 统一接入 SSE
为什么聊天应用应使用流式响应
流式响应会让模型在生成过程中持续返回文本,而不是等待整段答案完成后一次性返回。对于代码生成、客服助手和命令行工具,这能明显缩短用户感知等待时间。Claude 和 GPT 都使用 Server-Sent Events(SSE)传输分片数据,但事件结构并不完全相同。59API 提供统一、按量付费的模型中转服务,基础地址为 https://api.59api.com,可接入 Claude Opus、Sonnet、Haiku、Fable 及 GPT 模型,并保持官方模型质量,无需为多个供应商维护不同的账号与计费流程。
准备密钥与请求策略
先在服务端保存 59API 密钥,避免把密钥写入浏览器代码或提交到 Git。流式接口通常需要较长连接时间,因此网关和反向代理的读取超时应设置为至少 60 秒。前端页面只负责接收你自己的后端流;后端再调用模型接口,既能保护密钥,也方便记录用量、限制单个用户并处理重试。
无论选择 Claude 还是 GPT,关键参数都是 stream=true。还应明确限制 max_tokens,并在用户主动取消、浏览器断开或超过业务时限时关闭上游请求。不要把每个字符都立即写入数据库,建议按句子、固定字数或结束事件批量保存,减少写入压力。
用 OpenAI SDK 流式调用 GPT
59API 兼容 OpenAI SDK,因此现有 GPT 项目通常只需替换 base_url 和 API Key。下面的 Python 代码会逐段打印模型输出:
from openai import OpenAI
client = OpenAI(api_key="59API_KEY", base_url="https://api.59api.com/v1")
stream = client.chat.completions.create(model="gpt-4o-mini", messages=[{"role": "user", "content": "用三句话解释 SSE"}], stream=True)
for chunk in stream:
text = chunk.choices[0].delta.content
if text:
print(text, end="", flush=True)
每个 chunk 只包含新增内容,不能假设 delta.content 一定存在。例如工具调用、角色标记或结束分片可能没有文本,所以必须先判空。Web 服务中应把这些文本转换为自己的 SSE 格式,例如 data: {"text":"..."},并在结尾发送完成标记,方便前端停止加载状态。
用 Claude Messages API 接收事件
Claude 的原生接口使用 Messages API。通过 59API 时,保持 Anthropic SDK 的调用方式,并把 base_url 指向中转地址。事件流中真正的增量文本通常出现在 content_block_delta 事件内:
from anthropic import Anthropic
client = Anthropic(api_key="59API_KEY", base_url="https://api.59api.com")
with client.messages.stream(model="claude-3-5-sonnet-latest", max_tokens=800, messages=[{"role": "user", "content": "给我一个 Python 重试建议"}]) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
SDK 的 text_stream 已经筛掉非文本事件,适合大多数聊天场景。若你需要展示工具调用进度、统计 token 或保存完整事件,应遍历原始事件,并分别处理 message_start、content_block_delta、message_delta 与 message_stop。不要仅凭网络连接关闭判断成功完成,因为中断可能发生在任意分片之间。
生产环境的四个处理细节
- 缓冲输出:前端将短时间内收到的多个分片合并后再渲染,可降低 Markdown 渲染和 DOM 更新频率。
- 取消请求:浏览器使用 AbortController,后端收到取消信号后立即关闭到 59API 的上游连接,避免继续计费。
- 错误区分:429 适合退避重试,401 应提示检查密钥,连接中断则可保留已生成文本并让用户继续生成。
- 记录可观测数据:至少记录模型名、首字节时间、总耗时、结束原因和请求 ID,不记录用户敏感提示词全文。
对同时需要 Claude Code、Codex 或 OpenAI SDK 的团队,59API 的兼容接入能减少适配工作,并以较低的按量成本方便测试不同模型。注册后还可获得推荐返利;可以先用一个低风险的流式聊天接口验证延迟、输出质量和实际用量,再逐步迁移生产流量。
Pronto para começar?
Conecte Claude e GPT em minutos pelos menores preços, sem cortes. Cadastre-se e obtenha sua chave API.
Cadastro grátis