一、核心技术原理剖析
在为大型语言模型(LLM)应用构建实时前后端通信系统时,选择正确的底层技术至关重要。本章节将深入剖析三种主流技术的核心原理:
- Server-Sent Events (SSE),它作为服务器主导的单向数据流的黄金标准;
- WebSocket,作为通用的全双工通信解决方案;
- WebRTC,专注于媒体流和点对点数据交换。
理解它们的设计哲学和技术细节,是做出明智技术选型的基础。
Server-Sent Events
Server-Sent Events (SSE) 是一种基于标准 HTTP 协议的技术,专为服务器向客户端推送单向事件流而设计 [43]。其工作流程始于客户端创建一个EventSource对象,该对象会自动发起一个持久的 HTTP GET 请求 [91]。服务器接收到请求后,不立即关闭连接,而是保持响应打开,并以特定格式发送数据 [92]。这个格式要求服务器设置Content-Type头部为text/event-stream[5, 93]。每个事件由一系列字段组成,包括必需的data:字段用于承载消息内容,可选的event:字段用于定义事件类型,id:字段用于标识事件以便在连接中断后恢复,以及retry:字段用于指定重新连接前的等待时间 [4, 75]。消息之间必须以两个换行符\n\n分隔 [43]。这种机制使得服务器能够在一个长连接上持续不断地推送增量数据,非常适合 LLM 流式传输等场景 [56]。SSE 的一大优势在于其天然地融入了现有的 HTTP 生态,能够无缝通过反向代理、负载均衡器和防火墙,无需特殊配置 [92]。
WebSocket
WebSocket 则提供了一种更为强大和灵活的全双工通信协议。它通过一次性的 HTTP 握手来“升级”一个标准的 TCP 连接 [81]。握手过程涉及客户端发送一个包含Upgrade: websocket和Connection: Upgrade等特定头部的 HTTP 请求 [65]。如果服务器支持 WebSocket,它会返回一个状态码为 101 (Switching Protocols) 的响应,从而完成协议切换 [81]。一旦连接建立,客户端和服务器就可以随时独立地向对方发送消息,而无需像 HTTP 那样每次都发起新的请求 [83]。WebSocket 消息被封装在轻量级的帧中进行传输,支持文本和二进制数据,极大地降低了网络开销 [81, 88]。这种持久且双向的特性使其成为聊天应用、在线游戏和实时协作工具的理想选择 [83, 102]。然而,其复杂性也远超 SSE,因为它是一个独立的协议栈,需要专门的服务器库和客户端处理逻辑 [69]。
WebRTC
WebRTC (Web Real-Time Communication) 是一个更为复杂的生态系统,旨在实现浏览器间的直接音视频通话和任意数据交换 [46]。它的核心思想是尽可能地建立点对点(Peer-to-Peer, P2P)连接,从而绕过中间服务器传输大量媒体数据,以达到最低的延迟 [84]。WebRTC 的整个通信过程分为三个阶段:首先是通过信令服务器交换初始信息,其次是通过 ICE (Interactive Connectivity Establishment) 框架进行 NAT 和防火墙穿越,最后才是建立 P2P 数据通道 [6]。ICE 框架依赖于 STUN (Session Traversal Utilities for NAT) 服务器来帮助设备发现自己的公网 IP 地址,如果直接连接失败,则会降级到 TURN (Traversal Using Relays around NAT) 服务器进行中继 [7]。TURN 服务器虽然能保证连接成功,但会消耗大量带宽,因为所有流量都需要经过它转发 [108]。WebRTC 的另一个关键组件是 RTCDataChannel API,它允许在两个浏览器之间建立一个类似 WebSocket 的 P2P 数据通道,用于传输非媒体数据 [108]。由于其架构的复杂性,WebRTC 通常需要一个额外的信令层(常由 WebSocket 或 SSE 实现)来协调连接的建立 [122]。
| 技术 | 核心原理 | 通信模式 | 协议基础 | 关键特性 |
|---|---|---|---|---|
| Server-Sent Events (SSE) | 基于 HTTP 的长轮询,服务器维持一个开放的响应流以推送事件 [43]。 | 单向 (Server -> Client) [33] | HTTP/1.1 or HTTP/2 [92] | 自动重连、事件 ID 恢复、原生浏览器 API (EventSource) [43] |
| WebSocket | 通过 HTTP 握手升级,建立一个持久的全双工 TCP 连接 [65]。 | 双向 (Full Duplex) [82] | TCP-based Protocol (over ws://) [81] | 持久连接、低延迟、双向消息传递、支持文本和二进制数据 [88] |
| WebRTC | 通过信令交换 SDP 和 ICE 候选者,尝试建立点对点连接以传输媒体和数据 [6]。 | 双向 (Full Duplex) [122] | UDP/TCP, DTLS/SRTP [7] | P2P 架构、NAT/Firewall 穿越 (STUN/TURN)、内置加密、DataChannel API [108] |
二、关键维度对比分析:兼容性、性能与开发复杂度
在为 LLM 应用选择实时通信技术时,必须在兼容性、性能和开发复杂度这三个关键维度上进行权衡。本章节将对 Server-Sent Events (SSE)、WebSocket 和 WebRTC 进行全面的横向对比,以揭示它们在不同方面的优劣,从而为技术选型提供数据驱动的依据。
兼容性与平台支持
首先,在兼容性与平台支持方面,SSE 和 WebSocket 拥有非常广泛的浏览器支持,几乎覆盖了所有现代浏览器,包括 Chrome、Firefox、Safari 和 Edge [27, 42]。Opera Mini 是少数不支持 WebSocket 和 SSE 的例外 [27, 42]。IE 浏览器则完全不支持这两种技术 [42, 120]。相比之下,WebRTC 的支持范围稍窄一些,IE 不支持,旧版的 Edge 也不支持,但同样广泛应用于其他现代浏览器及其移动端版本 [120]。对于 LLM 应用而言,这意味着 SSE 和 WebSocket 能够触及更广泛的用户群体。然而,值得注意的是,随着 HTTPS 成为网页标配,HTTP/2 得到了普及,这彻底解决了过去 SSE 在 HTTP/1.1 下因浏览器并发连接数限制(通常是6个)而导致的性能瓶颈,使得 SSE 在现代 Web 架构中表现得更加稳健和高效 [4, 92]。
延迟性能
其次,延迟性能是衡量实时通信技术优劣的核心指标。理论上,WebSocket 具有最低的延迟,因为它在握手完成后就建立了一个纯粹的、无头开销的数据通道 [82]。WebRTC 在 P2P 模式下可以实现极低的延迟,因为它避免了服务器中转 [46]。然而,WebRTC 的延迟受到 NAT/防火墙穿越过程的影响,可能需要 fallback 到较慢的 TURN 中继服务器 [7]。SSE 的延迟取决于底层的 HTTP 版本。在 HTTP/1.1 下,由于队头阻塞(Head-of-Line Blocking),多个 SSE 连接可能会相互阻塞 [92]。但在 HTTP/2 下,得益于其强大的多路复用能力,SSE 的性能得到了极大提升,可以与常规 HTTP 请求并行,延迟接近 WebSocket [72, 92]。一项针对真实世界数据流的测试表明,SSE 和 WebSocket 在 EPS(每秒事件数)方面表现出相当的性能,WebSocket 在高并发下略占优势,但差异在实践中往往可以忽略不计 [39]。因此,对于大多数 LLM 文本流式传输场景,SSE 在 HTTP/2 下已经提供了足够低的延迟。
开发复杂度
最后,开发复杂度是决定项目成本和上线速度的关键因素。在这三者中,SSE 的开发复杂度最低。它基于标准的 HTTP,开发者可以利用现有的 Web 服务器和工具链,客户端代码也极为简洁,只需几行 JavaScript 即可启动EventSource并监听事件 [38, 79]。WebSocket 的复杂度显著更高。除了协议本身,开发者还需要处理连接管理、状态同步、手动实现心跳包和自动重连逻辑、应对粘性会话(Sticky Sessions)带来的负载均衡挑战,以及在分布式系统中使用 Redis Pub/Sub 等消息队列来广播消息 [67, 69]。WebRTC 的开发复杂度最高,它不仅包含了上述 WebSocket 的所有挑战,还引入了信令、ICE 候选者收集、STUN/TURN 服务器的配置和维护等一系列全新的难题 [84, 122]。此外,WebRTC 的安全模型也更为复杂,需要同时保护信令通道和媒体通道 [106]。
| 特性 | Server-Sent Events (SSE) | WebSocket | WebRTC |
|---|---|---|---|
| 浏览器兼容性 | 广泛 (IE除外) [42] | 广泛 (Opera Mini 除外) [27] | 广泛 (IE/Edge 旧版除外) [120] |
| 延迟性能 | 较低 (尤其在 HTTP/2 下) [92] | 非常低 [80] | 极低 (P2P) [46] |
| 开发复杂度 | 低[38] | 中等至高 [69] | 非常高 [84] |
| 网络穿透性 | 良好 (基于标准 HTTP) [92] | 良好 (使用标准端口) [50] | 差 (需 N+1 服务器 + NAT traversal) [7] |
| 状态管理 | 无状态 (HTTP-based) [1] | 有状态 (长连接) [67] | 有状态 (连接状态机) [118] |
| 数据类型 | UTF-8 Text only [88] | Text & Binary [88] | Binary Data [7] |
综上所述,SSE 在兼容性、性能和开发复杂度之间取得了最佳平衡,尤其是在 HTTP/2 得到普及的今天。WebSocket 提供了更高的灵活性和更低的理论延迟,但代价是巨大的开发和运维复杂性。WebRTC 则因其固有的复杂性,仅适用于特定的 P2P 和媒体流场景。
三、安全性考量与风险缓解策略
在 LLM 应用中采用实时通信技术时,安全性是不可忽视的核心要素。本章节将深入探讨 Server-Sent Events (SSE)、WebSocket 和 WebRTC 在安全性方面的关键考量、潜在风险及相应的缓解策略。
Server-Sent Events
对于 Server-Sent Events (SSE),其安全性很大程度上继承自标准的 HTTP 安全模型。首要的安全措施是强制使用 HTTPS,因为 SSE 的长期连接窗口使其更容易受到中间人攻击(Man-in-the-Middle),窃听或篡改流中的数据 [76, 77]。身份验证是另一个关键环节。由于EventSourceAPI 不支持自定义 HTTP 头部,传统的 JWT 令牌传递变得困难 [5]。常见的解决方案是通过 URL 查询参数传递短时效的访问令牌,但这存在安全隐患,因为令牌可能被记录在服务器日志或浏览器历史中 [77]。另一种更安全的方式是利用带有SameSite=Strict属性的 Cookie 来进行认证,这种方式能自动随请求发送,但需要注意 CSRF(跨站请求伪造)攻击的风险,可以通过检查Origin头部来缓解 [77]。此外,SSE 端点容易受到 DoS(拒绝服务)攻击,攻击者可以通过建立大量连接耗尽服务器资源。对此,应实施严格的速率限制,限制来自同一 IP 或用户的并发连接数 [76, 79]。
WebSocket
WebSocket 的安全性挑战更为复杂。虽然 WSS (WebSocket Secure) 使用 TLS 加密来保护数据传输,但其状态化的性质带来了新的攻击面 [82]。首先,WebSocket 缺乏标准化的身份验证机制,开发者必须自行实现,例如在握手阶段通过 Cookie 或查询参数传递凭证 [69]。如果未正确验证Origin头部,应用将面临 Cross-Site WebSocket Hijacking (CSWSH) 攻击,恶意网站可以在未经授权的情况下建立 WebSocket 连接并访问敏感数据 [89, 90]。其次,WebSocket 容易受到 DoS 攻击,特别是通过 Flood 攻击(发送大量小消息或建立海量连接)来耗尽服务器 CPU 或内存 [90]。有效的防御措施包括要求连接前进行认证、限制消息大小和频率、以及实施精细的速率控制 [89]。输入数据也可能导致注入攻击,如 SQL 注入或 XSS,因此所有传入的消息都必须经过严格的验证和清理 [90]。最后,由于 WebSocket 连接是持久的,如果令牌在连接期间过期,可能会导致会话劫持,因此需要实现 token 刷新机制 [76]。
WebRTC
WebRTC 的安全性设计更为严格,其核心理念是端到端加密。所有媒体流都默认使用 SRTP (Secure Real-time Transport Protocol) 加密,而数据通道则使用 DTLS (Datagram Transport Layer Security) 加密,确保只有通信双方可以解密数据 [106, 111]。然而,WebRTC 的安全性并非万无一失,其脆弱性主要集中在基础设施层面。最著名的安全问题是 IP 地址泄露。由于 ICE 协商需要交换候选者的 IP 地址,即使用户使用了 VPN,其真实的本地和公网 IP 仍可能暴露给通信的另一方,这严重损害了隐私 [109, 115]。缓解此问题的方法是在网络拓扑中强制使用 TURN 服务器中继,从而隐藏客户端的真实 IP [110]。信令通道的安全性至关重要,如果信令服务器未使用 WSS (WebSocket Secure) 或 HTTPS,攻击者可以拦截信令消息,从而发起会话劫持或拒绝服务攻击 [106, 108]。此外,TURN 服务器若配置不当,可能被滥用进行 DDoS 攻击或数据窃取 [106]。最后,尽管 WebRTC 协议本身很安全,但其浏览器实现可能存在漏洞,需要及时更新浏览器以修补已知的安全问题 [108]。
| 安全风险 | Server-Sent Events (SSE) | WebSocket | WebRTC |
|---|---|---|---|
| 数据窃听 | 可能 (需强制 HTTPS) [76] | 可能 (需强制 WSS) [82] | 不可能(默认 E2EE) [106] |
| CSRF/XSS | 存在 (通过 EventSource) [77] | 存在 (通过 WebSocket API) [89] | 存在 (通过 JS APIs) [107] |
| DoS 攻击 | 高风险 (连接洪水) [76] | 高风险 (连接/消息洪水) [90] | 中等风险 (TURN 服务器滥用) [106] |
| 会话劫持 | 可能 (Token 泄露) [76] | 可能 (CSWSH) [90] | 可能 (信令劫持) [106] |
| IP 地址泄露 | 否 | 否 | 是(ICE 协商) [109] |
| 主要缓解措施 | HTTPS, 速率限制, CSRF Token | WSS、源站验证、速率限制、输入净化 | 信令通道使用 HTTPS/WSS、强制 TURN 中继、定期更新 |
四、架构设计与可扩展性挑战
为 LLM 应用选择实时通信技术不仅关乎功能实现,更深刻地影响着系统的整体架构设计和未来的可扩展性。本章节将深入探讨使用 Server-Sent Events (SSE)、WebSocket 和 WebRTC 时面临的架构挑战,特别是在大规模生产环境下的可扩展性问题。
Server-Sent Events
使用 Server-Sent Events (SSE) 的架构相对简单且更具弹性。由于 SSE 基于标准的 HTTP,它可以轻松地与现有的无状态微服务架构集成 [56]。服务器可以水平扩展,因为每个 SSE 连接都是独立的,负载均衡器可以将新连接分发到任何可用的服务器实例 [5]。然而,当需要向所有订阅用户广播消息时,简单的无状态架构会遇到挑战。解决这个问题的常见模式是引入一个中央消息代理,如 Redis Pub/Sub 或 Kafka [12, 84]。所有服务器实例都订阅同一个 Redis 频道,当有新消息需要广播时,只需将消息发布到该频道,Redis 会将其高效地分发给所有相关的 SSE 客户端 [5]。这种发布/订阅(Pub/Sub)模式极大地简化了广播逻辑,并提高了系统的可扩展性。此外,SSE 的 stateless nature 使其非常适合在云原生环境中运行,例如 Kubernetes 或 serverless 平台,因为它不需要在节点间共享会话状态 [61]。
WebSocket
相比之下,WebSocket 的架构设计则充满了挑战,其根本原因在于连接的有状态性。每个 WebSocket 连接都会占用服务器的一个文件描述符,并持续消耗内存和 CPU 资源 [67]。当用户数量从数百增加到数万甚至数百万时,这种状态化特性会迅速成为瓶颈。传统的负载均衡策略(如轮询或最少连接)无法有效分配 WebSocket 连接,因为客户端断线重连后很可能需要回到最初的服务器实例以保持会话状态 [67]。为了解决这个问题,通常需要采用“粘性会话”(Sticky Sessions)或“会话亲缘性”(Session Affinity)的负载均衡策略,但这会导致负载分布不均,并形成单点故障 [35, 86]。更高级的解决方案是构建一个全局状态管理系统,例如将所有连接状态存储在 Redis 等外部数据库中。当服务器 A 接收到需要路由到服务器 B 上某个用户的 WebSocket 消息时,它可以从 Redis 获取目标用户的连接信息并进行转发。这种方法虽然可行,但极大地增加了系统的复杂性和延迟。因此,许多团队最终会选择使用专门的实时通信平台(如 Ably 或 Pusher)来托管这部分基础设施,从而将焦点重新放回业务逻辑上 [62, 67]。
WebRTC
WebRTC 的可扩展性问题则源于其点对点(P2P)的本质。纯 P2P 架构在小规模群组(例如,最多 4-5 人)内工作良好,因为每个参与者只需要与其他成员建立连接即可 [9]。然而,当参与者数量增加时,连接数量会呈二次方增长(N² problem),导致每个客户端的带宽和 CPU 负载急剧上升,很快就会超出个人设备的处理能力 [67]。为了实现 WebRTC 的规模化,必须引入中心化的媒体服务器。目前主要有两种架构:MCU(Multipoint Control Unit,多点控制单元)和 SFU(Selective Forwarding Unit,选择性转发单元)。MCU 会接收所有参与者的媒体流,进行解码、混音/拼接,然后重新编码成一个新的流再分发给所有人,这样客户端只需接收一个流,但 MCU 承担了巨大的计算压力 [9]。SFU 则是一种更高效的架构,它只负责将每个参与者发送的媒体流转发给其他所有人,而不进行任何处理,从而将计算负担分散到各个客户端 [9]。SFU 是现代大规模 WebRTC 应用(如 Zoom、Google Meet)的首选架构。然而,无论是 MCUs 还是 SFUs,都需要大量的服务器资源和复杂的网络基础设施来支持,这对于许多团队来说是一笔巨大的投资 [84]。
| 架构挑战 | Server-Sent Events (SSE) | WebSocket | WebRTC |
|---|---|---|---|
| 连接状态 | 无状态 (HTTP-based) [1] | 有状态 (持久连接) [67] | 有状态 (连接状态机) [118] |
| 水平扩展 | 易于扩展 (stateless proxy-friendly) [56] | 困难 (需要粘性会话/状态同步) [67] | 困难 (需要媒体服务器) [9] |
| 广播机制 | 发布/订阅 (e.g., Redis Pub/Sub) [5] | 服务器轮询 (server-side broadcast logic) [85] | MCU / SFU Media Servers [9] |
| 基础设施成本 | 相对较低 | 较高 (服务器资源消耗) | 非常高 (TURN servers, media servers) [108] |
| 推荐部署方式 | 云原生, Serverless, Kubernetes [61] | 自建基础设施或托管服务 [80] | 托管平台 or 自定义 SFU/MCU 基础设施 [9] |
总而言之,SSE 在可扩展性方面提供了最大的灵活性和成本效益。WebSocket 的扩展性挑战巨大,通常需要借助第三方服务或投入大量内部工程资源。WebRTC 的扩展性则最为昂贵和复杂,是专门为媒体流设计的,不适合用于普通的文本数据通信。
五、技术选型决策框架与综合建议
在对 Server-Sent Events (SSE)、WebSocket 和 WebRTC 进行了全面的原理、性能、安全性和可扩展性分析之后,本章节将整合所有信息,为 LLM 应用的前后端实时通信提供一个清晰的决策框架,并给出具体的选型建议。
选择何种技术,最终取决于您的 LLM 应用的具体需求、团队的技术栈和预算。我们可以将 LLM 应用的实时通信场景划分为几个典型的层级,每个层级对应不同的技术最优解。
第一层级:流式文本展示 (Streaming Text Presentation)
这是最常见的 LLM 应用场景,用户输入一个问题,然后看到答案逐字或逐词地动态呈现出来。这种模式的核心特征是服务器主导的单向数据流。在这个场景下,Server-Sent Events (SSE) 是无可争议的最佳选择。其理由非常充分:首先,SSE 的设计初衷就是为此类单向推送而优化的,它比 WebSocket 更加轻量和简单 [38, 56]。其次,得益于现代浏览器对EventSourceAPI 的原生支持,客户端实现极其简单,且内置了可靠的自动重连机制,极大地提升了用户体验和应用的健壮性 [43]。再者,SSE 基于标准 HTTP,在部署和运维上非常友好,可以无缝融入现有的 web 服务生态,无需为实时通信单独搭建一套复杂的基础设施 [92]。Shopify 在其 2022 年黑色星期五活动中的 BFCM Live Map 成功案例,就是一个有力的证明,他们通过 SSE 将毫秒级的数据更新推送给数十万用户,展现了其在生产环境下的强大能力和可扩展性 [96]。
第二层级:双向实时互动 (Bidirectional Real-Time Interaction)
当应用的需求超越了单向展示,进入真正的“对话”或“协作”阶段时,就需要选择能够支持客户端和服务器双向通信的技术。在这种情况下,WebSocket 是唯一的选择。典型的用例包括:
- 语音 I/O:OpenAI 的 Realtime API 就是一个绝佳的例子,它利用 WebSocket 实现了低延迟的语音对话,允许用户在 AI 说话时打断,并即时获得反馈 [63]。这种场景需要双向的音频流和命令流,是 WebSocket 的典型应用。
- 多智能体系统:当多个 AI Agent 需要在后台协同工作,并需要向前端实时同步各自的思考过程、工具调用结果或状态变化时,WebSocket 提供了必要的双向通道 [40]。
- 实时协作编辑:当 LLM 作为协作者与用户共同编写代码、文档或进行头脑风暴时,WebSocket 可以确保用户的每一次修改都能被实时同步给 LLM,反之亦然 [36]。
选择 WebSocket 的代价是显著增加的开发和运维复杂度。您需要投入资源来构建和维护一个能够处理成千上万个并发长连接的系统,并解决由此带来的一系列可扩展性问题 [67]。
第三层级:点对点媒体流与数据交换 (P2P Media Streaming & Data Exchange)
这是 WebRTC 的专属领域。虽然 WebRTC 也能传输数据,但它的核心价值在于绕过服务器直接传输高质量的音视频流。在 LLM 应用中,WebRTC 的应用场景非常具体且有限:
- 高级语音交互:当需要处理原始的、高保真的音频流,而不是经过编码的文本或语音片段时,WebRTC 可能是必要的底层传输协议 [63]。
- P2P 文件共享:如果 LLM 应用涉及到用户之间直接通过浏览器共享由 LLM 生成的大文件,WebRTC 的 DataChannel 可以提供一条绕过服务器的高速通道 [108]。
除非您的应用明确属于上述范畴,否则不应轻易选择 WebRTC。它的高昂复杂性和成本使其成为一个非常规的选择。
综合决策框架
| 应用需求 | 核心通信模式 | 推荐技术 | 理由 | 备注 |
|---|---|---|---|---|
| 流式文本/摘要 | 服务器 -> 客户端 (单向) | Server-Sent Events (SSE) | 开发简单、可靠性高、成本效益好、生态成熟 [38, 56] | 优先考虑方案 |
| 实时聊天/问答 | 客户端 <-> 服务器 (双向) | WebSocket | 提供全双工通信,满足即时双向交互需求 [36] | 需评估可扩展性成本 |
| 语音 I/O | 客户端 <-> 服务器 (双向) | WebSocket | OpenAI Realtime API 的事实标准,适合低延迟语音流 [63] | 需评估可扩展性成本 |
| 多智能体协同 | 多方实时通信 | WebSocket | 提供可靠的双向信道以同步各 Agent 的状态和动作 [40] | 需评估可扩展性成本 |
| 浏览器间 P2P 文件共享 | 客户端 <-> 客户端 (P2P) | WebRTC | 利用 DataChannel 实现绕过服务器的高速数据传输 [108] | 专用场景,非常规选择 |
最终结论与建议
对于绝大多数 LLM 应用的前后端通信需求,我们强烈建议从Server-Sent Events (SSE)开始。它足够强大,足以满足当前主流的流式文本展示需求,同时又足够简单,能让团队快速迭代产品。不要为了所谓的“先进性”或过度设计而一开始就选择更复杂的 WebSocket。只有当业务发展到确实需要双向、低延迟的实时互动时,才应该评估并投入资源迁移到 WebSocket。记住,没有一种技术是完美的,最好的技术是那个能够以最低的成本和复杂度解决你当前问题的技术。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。