大模型SSE流式輸出技術

文章目錄

    • 背景:為什么需要流式輸出
    • SSE 流式輸出
      • 很多廠商還是小 chunk

背景:為什么需要流式輸出

大模型的響應通常很長,比如幾百甚至幾千個 token,如果等模型一次性生成完才返回:

  • 延遲高:用戶要等很久才能看到第一句話。
  • 體驗差:尤其是在聊天、代碼生成等場景,用戶期望“邊想邊說”。
  • 內存壓力大:服務器要先緩沖全部結果再返回。

因此很多廠商(OpenAI、DeepSeek、百度、阿里等)會用 流式輸出:

  • 模型邊生成邊發送給客戶端。
  • 用戶前端邊接收邊渲染。

SSE 流式輸出

SSE (Server-Sent Events) 是 HTTP 長連接 + 文本事件流 協議,由服務器持續推送數據給客戶端,瀏覽器原生支持。

  • 數據格式:data: 開頭,\n\n 結束
    SSE的核心就是在原本TCP的字節流基礎上,通過定義特殊的分隔格式(比如每條事件以空行\n\n結束),來劃分消息邊界,方便瀏覽器端按事件逐條處理。
  • 單向:服務器 → 客戶端
  • 基于 HTTP/1.1:不需要 WebSocket,也不需要額外握手
  • 自動重連:瀏覽器的 EventSource 會自動重連

報文示例:

HTTP/1.1 200 OK
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alivedata: {"choices":[{"delta":{"content":"你"}}]}data: {"choices":[{"delta":{"content":"好"}}]}data: [DONE]

這里 data: 后面就是 JSON,每次推送一小段(chunk),最后 “[DONE]” 表示結束。

如果 chunk 粒度過小,確實會浪費資源,主要浪費在 網絡 IO 開銷 上。

很多廠商還是小 chunk

  • 體驗優先:AI 聊天給人的“即時感”很重要,寧可多 IO 也要首字快。
  • 心理暗示:用戶看到文字逐漸出現,會覺得模型在思考(即使真實情況是批量生成的)。
  • 大部分場景數據量小:和視頻、文件傳輸比,這種文字流的帶寬占用很低,浪費的部分能接受。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94973.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94973.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94973.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Flutter] v3.24 AAPT:錯誤:未找到資源 android:attr/lStar。

推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰 前提 將 Flutter 升級到 3.24.4 后,構建在我的本地電腦上通過,但Github actions 構建時失敗。 Flutt…

go語言標準庫學習, fmt標準輸出,Time 時間,Flag,Log日志,Strconv

向外輸出 fmt包實現了類似C語言printf和scanf的格式化I/O。主要分為向外輸出內容和獲取輸入內容兩大部分。 內置輸出 不需要引入標準庫,方便 package mainfunc main() {print("我是控制臺打印,我不換行 可以自己控制換行 \n我是另一行")prin…

ElementUI之表格

文章目錄使用ElementUI使用在線引入的方式表格1. 帶狀態表格row-class-name"Function({row, rowIndex})/String"2. 固定表頭(height"string/number"屬性)2.1 屬性的取值2.2 動態響應式高度使用演示2.3 ??自定義滾動條樣式??2.4 表頭高度定制獲取一行信…

K8S 的 Master組件

K8S 的 Master 組件有哪些?每個組件的作用? K8s 大腦的 4 大核心模塊,掌控全局! Kubernetes 集群的 Master(主節點) 就像一座 指揮中心,負責整個集群的調度、管理和控制。它由 4 大核心組件組成…

如何 讓ubuntu 在root 下安裝的docker 在 普通用戶下也能用

在 Ubuntu 系統中,如果 Docker 是以 root 用戶安裝的,普通用戶默認無法直接使用 Docker 命令(會報權限錯誤)。要讓普通用戶也能使用 Docker,可以按照以下步驟操作:方法 1:將用戶加入 docker 用戶…

模板方法模式:優雅封裝算法骨架

目錄 一、模板方法模式 1、結構 2、特性 3、優缺點 3.1、優點 3.2、缺點 4、使用場景 5、實現示例 5.1、抽象類 5.2、實現類 5.3、測試類 一、模板方法模式 模板方法模式(Template Method Pattern)是一種行為設計模式,它在一個方…

韋東山STM32_HAl庫入門教程(SPI)學習筆記[09]內容

(1)SPI程序層次一、核心邏輯:“SPI Flash 操作” 是怎么跑起來的?要讀寫 SPI Flash,需同時理解 硬件連接(怎么接線) 和 軟件分層(誰負責發指令、誰負責控制邏輯)&#xf…

線上Linux服務器的優化設置、系統安全與網絡安全策略

一、Linux服務器的優化設置 線上Linux的優化配置序號基礎優化配置內容說明1最小化安裝系統【僅安裝需要的,按需安裝、不用不裝】,必須安裝的有基本開發環境、基本網絡包、基本應用包。2ssh登錄策略優化 Linux服務器上的ssh服務端配置文件是【/et…

基于人眼視覺特性的相關圖像增強基礎知識介紹

目錄 1. 傳統的灰度級動態范圍優化配置方法 2.基于視覺特性的灰度級動態范圍調整優化 1. 傳統的灰度級動態范圍優化配置方法 傳統的灰度級動態范圍調整方法主要包括線性動態范圍調整及非線性動態 范圍調整。線性動態范圍調整是最簡單的灰度級動態范圍調整方法,觀察…

Selenium使用超全指南

🍅 點擊文末小卡片 ,免費獲取軟件測試全套資料,資料在手,漲薪更快概述selenium是網頁應用中最流行的自動化測試工具,可以用來做自動化測試或者瀏覽器爬蟲等。官網地址為:相對于另外一款web自動化測試工具QT…

Go通道操作全解析:從基礎到高并發模式

一、channel類型 Go 語言中的通道(channel)是一種特殊的類型。它類似于傳送帶或隊列,遵循先進先出(FIFO)原則,確保數據收發順序的一致性。每個通道都是特定類型的導管,因此在聲明時必須指定其元素類型。 channel是一種類型, 一種引用類型。 聲明通道類型的格式如下:…

Linux網絡--1、網絡基礎

目錄 一、網絡發展 二、理解分層 2.1OSI七層模型 2.2TCP/IP分層模型 2.3分層的好處 三、認識協議 3.1初步認識 3.2了解指定組織 3.3具體協議理解 3.3.1是什么 3.3.2為什么 3.3.3與OS的關系 3.4總結 四、網絡傳輸流程 4.1局域網網絡傳輸 4.1.1通信過程 4.1.2概念解析 4.2跨網…

前端視角下關于 WebSocket 的簡單理解

參考 RFC 6455: The WebSocket Protocol WebSocket 協議基礎 協議本質:在單個 TCP 連接上提供全雙工通信通道的協議核心優勢: 雙向實時通信(服務器主動推送)低延遲(相比 HTTP 輪詢)高效數據傳輸&#xff0…

自動化一鍵部署 LNMP 環境

第一步:準備環境 & 準備腳本文件1. 你在 CentOS 7 的服務器/虛擬機里打開終端,確認你有 root 權限或者能用 sudo。輸入下面命令確認你的系統版本:cat /etc/centos-release你應該看到類似:CentOS Linux release 7.9.2009 (Core…

react之React.cloneElement()

react提供的這個方法克隆組件的方法,可能我們在平常的開發中用的很少,主要可能是我們并不知道或者并不了解這個方法。因為我在之前react的children文章中用到過,所以我就進行了一系列的測試,發現真的非常的好用。我們同樣使用一些…

學習Java的Day27

今天學習的主要內容是在IntelliJ IDEA開發環境中,通過部署Tomcat服務器并連接MySQL數據庫,實現了一個完整的留言板系統。這個項目涵蓋了前后端開發的全流程,具體包括以下關鍵環節:開發環境搭建使用IntelliJ IDEA Ultimate版&#…

【計算機網絡 | 第3篇】物理媒介

文章目錄物理媒介介紹與物理媒體的分類🥝成本考量引導型傳輸媒體🍋引導型傳輸媒體:雙絞線🍋?🟩雙絞線類別雙絞線的發展歷程雙絞線的物理限制引導型傳輸媒體:同軸電纜🍋?🟩結構組成…

golang的切片

切片 為什么需要切片 用于元素的個數不確定,所以無法通過數組的形式來進行統計。此時就需要切片 切片,也因此可以粗略地理解為動態數組數組的長度不能用變量來確定,這時候切片slice也就派上用場了 切片地基本介紹 切片的英文是slice切片是數組…

在labview中實現視頻播放

這里分享一個迅雷的視頻播放控件APlayer,非常的好用。具體操作步驟如下: 1.下載控件: 首先下載http://aplayer.open.xunlei.com/codecs.zip,將codecs文件解壓后打開,按快捷鍵contrlA,隨后contrlc復制里面所有的文件;…

ubuntu 22.04 使用yaml文件 修改靜態ip

前提: 啟動服務 sudo systemctl start systemd-networkd 設置開機自啟 sudo systemctl enable systemd-networkd 檢查狀態(確保顯示 active (running)) sudo systemctl status systemd-networkd 若想停止: 停止當前運行的服務 sud…