HTTP相关问题(AI回答)
在HTTP通信中,客户端连续发送两次不同请求且服务端连续回复的场景
一、HTTP/1.x及更早版本的实现方式
-
顺序匹配机制
在同一TCP连接上,客户端按顺序发送请求,服务器按接收顺序依次返回响应67。客户端通过维护请求队列的顺序,确保响应与请求一一对应4。例如,若客户端发送Request A和Request B,服务端必须按顺序返回Response A和Response B。 -
短连接模式
若客户端为每个请求单独建立TCP连接(如HTTP/1.0默认行为),响应与请求通过独立的连接通道直接关联,无需额外匹配逻辑6。
二、HTTP/2及更高版本的优化机制
-
Stream Identifier标识
每个请求和响应通过唯一的Stream ID标识,允许乱序传输。客户端和服务端通过解析帧头(Frame Header)中的Stream ID匹配请求与响应,突破了顺序限制4。 -
多路复用技术
单个TCP连接可并行处理多个请求和响应,客户端通过Stream ID高效区分不同请求的返回结果4。
三、应用层自定义匹配方案
-
唯一请求标识符
客户端在请求头或Body中附加自定义唯一ID(如X-Request-ID),服务端在响应中原样返回该ID。客户端通过对比ID值实现精准匹配5。 -
异步回调机制
在长轮询或WebSocket等场景中,客户端为每个请求注册回调函数,服务端响应中携带对应请求的标识符(如事务ID),触发客户端特定的回调逻辑。
总结:HTTP协议版本和连接模式决定了底层匹配机制,而应用层可通过唯一标识符实现更灵活的请求-响应映射。在HTTP/2及以上版本中,Stream ID机制显著提升了匹配效率,避免了队头阻塞问题
现在浏览器播放视频为什么不用http协议,用其他协议比如Dash
现在浏览器播放视频(尤其是主流平台如 YouTube、Bilibili、Netflix、腾讯视频等)基本不再直接用单纯的 HTTP progressive download(渐进式下载),而是大量采用 HLS(HTTP Live Streaming)和 MPEG-DASH(Dynamic Adaptive Streaming over HTTP)这样的协议。核心原因其实只有几个关键点:
1. 自适应比特率(ABR) — 最核心的原因
- 普通 HTTP progressive download:视频只有一个码率(比如 1080p 固定 5Mbps)。
- 网络好 → 爽
- 网络波动/卡顿时 → 要么卡死、要么直接缓冲很久,甚至卡在低质量
- HLS / DASH:服务器提前准备多档码率(比如 360p 800kbps、720p 2Mbps、1080p 5Mbps、4K 15Mbps 等)。
- 播放器每隔几秒(通常 2–10 秒)检测网速 → 自动切换到最合适的码率。
- 结果:卡顿时自动降到 480p,网速恢复又升到 1080p/4K,几乎不卡顿,用户感知体验好很多。
这才是现代视频平台追求的“丝滑”体验的根本。2. 支持直播场景(Live Streaming)
- Progressive download 几乎无法做真正的直播(因为直播内容是“无限长”的,文件不存在结束)。
- HLS/DASH 把视频切成小段(通常 2–10 秒一段 ts/fMP4 文件),通过 .m3u8 或 .mpd 清单文件告诉播放器“接下来要下哪一段”。
- 直播时服务器不断生成新段 → 播放器不断拉新段。
- 点播(VOD)时也能用同样的机制,只是清单文件是完整的。
3. 完美兼容 CDN 和普通 HTTP 服务器
- HLS 和 DASH 本质上还是用 HTTP/HTTPS 协议传输的(所以叫 over HTTP)。
- 每个小段都是独立的 HTTP 请求 → CDN 能极高效缓存、分发。
- 不需要专用的流媒体服务器(如早年的 RTMP 服务器),成本低、扩展性强。
4. 浏览器原生支持 + 兼容性现代浏览器(Chrome、Safari、Edge、Firefox)对 HLS 和 DASH 的原生支持越来越好:
|
协议 |
Safari (iOS/macOS) |
Chrome/Edge (Android/Windows) |
Firefox |
备注 |
|---|---|---|---|---|
|
HLS |
原生支持(最好) |
原生支持(较新版本) |
通过 MSE + hls.js 库 |
Apple 主推 |
|
DASH |
通过 MSE + dash.js |
原生支持(较新版本) |
通过 MSE + dash.js |
国际开放标准 |
|
普通 HTTP progressive |
原生支持 |
原生支持 |
原生支持 |
但无 ABR |
5. 其他次要但重要的优势
- 更容易做加密(DRM)、字幕、多音轨、广告插入。
- 延迟控制更灵活(HLS 通常 5–30 秒延迟,DASH 可做到更低)。
- 节省流量(低网速用户不会一直下高清)。
什么时候还会用普通 HTTP progressive download?
- 非常短的视频(几秒到几十秒的 GIF/MP4 预览)。
- 内部系统、局域网视频。
- 不需要自适应、不在乎卡顿的极简场景。
总结一句话:浏览器现在不用“单纯 HTTP”播放长视频,是因为单纯 HTTP 没法实现自适应码率 + 直播 + 高效 CDN 分发,而 HLS 和 DASH 完美解决了这些问题,而且它们自己也是基于 HTTP 的,只不过更聪明。所以你看到的其实是“升级版的 HTTP”——不再是一次下载整个文件,而是智能分段 + 动态选择的 HTTP 流。
HLS播放视频,客户端服务端的交互逻辑,发什么HTTP包?
HLS(HTTP Live Streaming)播放视频的客户端和服务端交互完全基于标准 HTTP 请求(主要是 GET),没有特殊的协议或持久连接。整个过程是轮询 + 顺序拉取的模式,客户端(播放器)主动发起所有 HTTP 请求。下面按典型流程(从点播 VOD 到直播 Live)详细说明客户端会发哪些 HTTP 包,以及大致顺序和目的。现代浏览器/播放器(如 Safari 原生、hls.js、Video.js 等)行为基本一致。
1. 初始阶段(播放开始前/刚开始时)客户端通常从一个入口 URL 开始(比如你嵌入的 <video src="https://example.com/stream.m3u8">)。
|
顺序 |
客户端发出的 HTTP 请求 |
典型方法 |
目的 / 收到什么 |
常见 Headers / 备注 |
|---|---|---|---|---|
|
1 |
GET /master.m3u8 或 /index.m3u8 |
GET |
获取 Master Playlist(多码率列表) |
Accept: application/vnd.apple.mpegurl 等 |
|
2 |
服务端返回 200 OK + 内容类型 application/vnd.apple.mpegurl |
- |
包含多条 #EXT-X-STREAM-INF 标签,每条指向不同码率的 Media Playlist(如 360p.m3u8、720p.m3u8) |
- |
|
3 |
客户端根据带宽/设备选择一个码率 |
- |
- |
- |
|
4 |
GET /720p.m3u8(或 variant playlist) |
GET |
获取 Media Playlist(媒体播放列表) |
Range: bytes=0-(通常不带,完整获取) |
- Master Playlist 示例内容(简化):
#EXTM3U #EXT-X-VERSION:3 #EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720 720p.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360 360p.m3u8
2. 正常播放循环(最核心的部分)拿到 Media Playlist 后,进入无限循环,直到播放结束或用户停止。
|
顺序 |
客户端发出的 HTTP 请求 |
方法 |
目的 / 收到什么 |
频率 / 备注 |
|---|---|---|---|---|
|
5 |
GET /segment_001.ts 或 /chunk_0001.mp4 |
GET |
下载第一个媒体 Segment(通常 2–10 秒视频片段) |
收到 200 OK + video/MP2T 或 video/mp4 |
|
6 |
GET /segment_002.ts |
GET |
下载下一个 segment |
顺序拉取,边下边播 |
|
… |
… |
GET |
继续拉取后续 segment(003、004…) |
- |
|
N |
GET /720p.m3u8(再次请求同一 playlist) |
GET |
轮询更新 playlist(检查是否有新 segment,尤其直播) |
每 0.5 × TARGETDURATION ~ TARGETDURATION 秒一次(通常 3–6 秒一次) |
|
N+1 |
服务端返回更新后的 Media Playlist |
- |
包含更多新 segment(如 #EXTINF:6.0, segment_101.ts) |
如果是 VOD,playlist 基本不变;直播会不断追加 |
|
… |
继续 GET 新出现的 segment |
GET |
- |
自适应:如果网速变差,客户端可能跳去请求低码率 playlist(如从 720p 切到 360p) |
- 直播特有:Media Playlist 会不断更新(#EXT-X-MEDIA-SEQUENCE 递增),旧 segment 可能被移除(sliding window)。
- 点播(VOD):Playlist 基本固定,客户端拉完所有 segment 就结束。
3. 自适应码率切换(ABR)时额外请求当播放器检测到网速变化(带宽估计):
- 重新 GET Master Playlist(可选,有些播放器缓存)
- 切换到另一个码率的 Media Playlist(如从 720p.m3u8 → 360p.m3u8)
- 然后从新 playlist 里找接近当前播放点的 segment 开始拉取(可能跳跃式请求)
4. Low-Latency HLS(LL-HLS,低延迟模式)额外请求(现代优化)延迟降到 2–5 秒时,会出现这些 HTTP 包:
- _HLS_msn= 或 _HLS_part= 查询参数(Delivery Directives)
- GET /media.m3u8?_HLS_msn=150&_HLS_part=3
- 服务器可能 阻塞响应(hold the connection)直到新 part 可用(类似 server push)
- Partial segment 请求(小块,~200–1000ms)
- GET /segment_101.mp4?part=2(或通过 byte-range)
总结:最常见的 HTTP 包类型(按频率排序)
- *GET .m3u8(Master 或 Media Playlist)—— 控制信令,轮询更新
- **GET *.ts / .mp4 / .m4s(媒体 segment 或 partial segment)—— 实际视频数据
- 偶尔 GET Master Playlist(码率切换时)
- *带查询参数的 GET .m3u8(LL-HLS 低延迟模式)
所有请求都是普通的 HTTP GET(极少数情况下 POST 用于统计/DRM),响应基本是 200 OK(或 206 Partial Content 如果用 byte-range)。没有 WebSocket、没有长连接、没有专用流协议——纯 HTTP,CDN 友好,缓存友好。如果你想看更具体的抓包示例(比如用 Wireshark 或 Chrome DevTools 看到的真实请求头),可以自己用 hls.js 播放一个公开 HLS 流,然后在 Network 面板过滤 m3u8 和 ts 看序列。需要我推荐测试流地址吗?
hls.js改变点击标签的默认行为?
是的,hls.js 会“改变”或覆盖 <video> 标签对 .m3u8 src 的默认原生行为,但这不是完全禁用原生播放,而是有条件地接管,目的是实现跨浏览器一致性 + 更多控制。hls.js 的核心工作方式(不直接改标签默认行为,而是“绕过”它)当你用 hls.js 时,典型代码是这样的:html
<video id="video" controls></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
const video = document.getElementById('video');
const hlsUrl = 'https://example.com/stream.m3u8';
if (Hls.isSupported()) { // 检查浏览器是否支持 MSE(Media Source Extensions,大部分非-Safari浏览器)
const hls = new Hls(); // 创建 hls.js 实例
hls.loadSource(hlsUrl); // 加载 .m3u8
hls.attachMedia(video); // 关键:把 hls.js 绑定到 <video> 元素
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = hlsUrl; // Safari 等原生支持的,直接用原生
}
</script>
- attachMedia(video) 这一步做了什么?
- hls.js 会清空或忽略你原本设置在 <video src="...m3u8"> 上的 src(如果有的话)。
- 它使用 Media Source Extensions (MSE) API 创建一个虚拟的媒体源(blob: URL),然后把解析后的视频/音频片段(从 .ts 或 fMP4)喂给浏览器。
- <video> 标签的 src 实际上变成类似 blob:https://... 的东西,而不是你的 .m3u8 URL。
- 这就绕过了浏览器对 .m3u8 的原生解析逻辑(如果浏览器本来支持原生 HLS,如 Safari)。
结果:
- 在 Safari / iOS(原生 HLS 支持最好):hls.js 通常不会被使用(因为 Hls.isSupported() 可能为 true,但很多人会优先检查 canPlayType 走原生路径)。如果强制用 hls.js,它会接管,导致性能稍差(因为多了一层 JS 处理)。
- 在 Chrome / Firefox / Edge(原生 HLS 支持有限或无):hls.js 完全接管,浏览器根本不会尝试原生解析 .m3u8,而是靠 MSE + hls.js 的 transmuxing(把 TS 转成 MP4 片段)来播放。
hls.js “改变”了哪些默认行为?
- 原生行为(Safari 等):浏览器直接解析 .m3u8 → 自动轮询更新 → 拉 segment → 自适应切换 → 播放。
- hls.js 接管后:
- 所有 playlist 解析、ABR(自适应)、segment 下载、错误恢复、缓冲管理都由 JS 代码 控制。
- 你可以监听事件(如 Hls.Events.MANIFEST_PARSED、Hls.Events.LEVEL_SWITCHED)来自定义 UI(显示当前码率、加质量选择器)。
- 支持更多配置(如 low-latency 模式、自定义 loader、带宽估算算法调整)。
- 在不支持原生的浏览器中,<video src="...m3u8"> 本来就黑屏或报错;hls.js 让它能播。
为什么大多数网站还是用 hls.js,即使 Safari 原生支持?
- 统一体验:Safari 原生 HLS 和 Chrome 的 MSE+hls.js 行为有细微差异(缓冲策略、延迟、错误处理)。
- 额外功能:质量切换按钮、统计、自定义错误提示、低延迟优化(LL-HLS)、DRM 支持等,原生 <video> 标签做不到或很难做。
- 跨浏览器一致:写一套代码到处跑,不用担心 Safari 特殊处理。
总结对比
|
场景 |
<video src="...m3u8"> 默认行为 |
用 hls.js 后(attachMedia) |
是否“改变”默认 |
|---|---|---|---|
|
Safari (原生最好) |
直接原生播放 |
如果强制用:接管,用 MSE 播放(稍差) |
是(可选绕过) |
|
Chrome/Firefox/Edge |
不支持或部分支持(黑屏/报错) |
完全接管,用 MSE + JS 播放 |
是(启用播放) |
|
跨平台一致性 |
差 |
好(统一 JS 逻辑) |
是 |
一句话:hls.js 不直接修改 <video> 标签的“默认点击行为”,但一旦 attachMedia,它就完全接管了 .m3u8 的播放流程,绕过/覆盖了浏览器的原生 HLS 处理,让不支持的浏览器能播,支持的也能用更可控的方式播。
一般视频和直播网站用什么协议,浏览器支持吗
一般主流视频网站(如 YouTube、Netflix、Disney+、Bilibili、腾讯视频等)和直播平台(如 Twitch、Douyin/抖音、快手、YouTube Live、Twitch、Bilibili 直播等)在 2025–2026 年主要使用的协议如下,按使用场景和普及度排序:
1. 点播视频(VOD,非实时,如电影、短视频回放)
- 主流协议:HLS(HTTP Live Streaming,苹果主导)和 MPEG-DASH(Dynamic Adaptive Streaming over HTTP,开放标准)
- 为什么?支持自适应码率(ABR,根据网速自动切 360p/720p/1080p/4K),CDN 友好,兼容性强。
- YouTube / Netflix / Bilibili 等几乎全部用 HLS + DASH(或 CMAF 统一格式)。
- 浏览器支持:Safari 原生最好,Chrome/Edge/Firefox 等现代浏览器通过 hls.js / dash.js / Shaka Player 等 JS 库完美支持(无需插件)。
- 其他:极少数短视频用普通 HTTP progressive download(直接 .mp4),但长视频基本不用。
2. 直播(Live Streaming)
- 主流协议组合:
- 推流(主播 → 服务器):RTMP(最常见,OBS / 手机推流默认用 RTMP)或 SRT(低延迟、安全,越来越流行)。
- 拉流(服务器 → 观众):HLS(延迟 5–30 秒,最兼容)和 LL-HLS(Low-Latency HLS,延迟降到 2–5 秒,Apple 2020+ 推动)。
- DASH(类似 HLS,常用于 Android/非 Apple 设备)。
- WebRTC(超低延迟 200–800ms,用于互动直播、游戏、视频会议,如 Twitch 部分场景、Douyin 互动功能、Zoom/腾讯会议)。
- 平台具体示例(2025–2026 数据):
- YouTube Live:推 RTMP,拉 HLS + DASH。
- Twitch:推 RTMP,拉 HLS(部分低延迟 WebRTC 测试)。
- Douyin / 快手:推 RTMP / SRT,拉 HLS + LL-HLS + WebRTC(互动场景)。
- Bilibili 直播:推 RTMP,拉 HLS + DASH。
- Netflix / Disney+ 直播(少见,如体育赛事):HLS / LL-HLS。
- 浏览器支持:
- HLS:Safari 原生顶级支持,Chrome/Edge 较新版原生 + JS 库全覆盖,Firefox 靠 hls.js。
- DASH:Chrome/Edge 原生好,Safari 靠 dash.js。
- WebRTC:Chrome、Firefox、Edge、Safari 全原生支持(无需插件),手机浏览器也很好。
- RTMP:浏览器不原生支持(Flash 已死),只能用 JS 库如 flv.js 或服务器转 HLS。
快速对比表(2026 年主流情况)
|
场景 |
主流协议(拉流) |
延迟范围 |
浏览器原生支持度 |
典型平台示例 |
|---|---|---|---|---|
|
点播视频 |
HLS / DASH |
几秒–几十秒 |
高(Safari 原生,Chrome 等靠 JS) |
Netflix, YouTube, Bilibili |
|
普通直播 |
HLS / LL-HLS |
3–30 秒 |
高(同上) |
YouTube Live, Twitch, Douyin |
|
超低延迟互动 |
WebRTC |
0.2–1 秒 |
极高(全浏览器原生) |
游戏直播、拍卖、视频连麦 |
|
推流(主播端) |
RTMP / SRT / WebRTC |
- |
OBS / 手机 App 支持 |
几乎所有平台 |
一句话总结:
2025–2026 年,浏览器端播放几乎统一用 HLS + DASH(兼容性 + 自适应最好),WebRTC 用于需要毫秒级互动的场景。RTMP 只剩推流用,拉流已基本淘汰。所有主流浏览器都支持这些(Safari 最原生,Chrome 等靠成熟 JS 库兜底),基本不用担心“浏览器不支持”。 如果你是开发或选型:优先 HLS/LL-HLS + WebRTC fallback,就能覆盖 99% 用户。
http2需要SSL,被nginx反向代理的内网服务器一般只能http1.1?
是的,你的理解完全正确。
1. HTTP/2 必须依赖 SSL/TLS(HTTPS)
- HTTP/2 规范要求必须在 TLS 上运行(ALPN 协商 h2)。
- 明文 HTTP/2(h2c)虽然存在,但浏览器不支持,实际生产中几乎没人用。
- 所以客户端访问 Nginx 时,必须走 HTTPS + HTTP/2(listen 443 ssl http2;)。
2. Nginx 反向代理到内网服务器时,后端一般只能是 HTTP/1.1这是 Nginx 当前(2026 年)的标准行为:
- Nginx 官方不支持 把 HTTP/2 协议转发给 upstream(后端)。
- proxy_http_version 指令最高只能设置为 1.1(文档中明确不支持 2)。
- 即使后端服务本身支持 HTTP/2,Nginx 也不会用 HTTP/2 跟它通信,而是自动降级为 HTTP/1.1。
典型配置(大厂和绝大多数生产环境都是这样):nginx
upstream backend {
server 127.0.0.1:8080; # 内网服务,通常监听 HTTP
keepalive 32; # 强烈推荐开启连接复用
}
server {
listen 443 ssl http2; # 客户端走 HTTP/2 over TLS
server_name example.com;
ssl_certificate ...;
ssl_certificate_key ...;
location / {
proxy_pass http://backend;
# 必须这样写,才能让 keepalive 生效
proxy_http_version 1.1;
proxy_set_header Connection "";
# 常用透传头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- 前端(浏览器 → Nginx):HTTP/2(多路复用、头部压缩等好处全都有)。
- 后端(Nginx → 内网服务器):HTTP/1.1(通过 keepalive 连接池实现类似复用效果)。
为什么 Nginx 不支持 HTTP/2 到后端?
- Nginx 官方认为:在低延迟、内网环境中,HTTP/1.1 + keepalive 的性能已经足够好,引入 HTTP/2 到 upstream 需要对 upstream 模块做重大改造,收益不大。
- 目前(包括 2026 年)Nginx 官方仍然没有实现完整的 HTTP/2 upstream 支持(只有极少数实验性或 gRPC 场景例外)。
- 如果你强行想端到端 HTTP/2,目前常用替代方案:
- 用 Envoy / Traefik / HAProxy(这些支持 HTTP/2 upstream)。
- 用服务网格(如 Istio)走 mTLS + HTTP/2。
- 后端直接暴露 HTTPS + HTTP/2,让 Nginx 走 proxy_pass https://...(但会增加一层加解密开销,不推荐)。
总结建议(内网服务器场景)
- 最常见、最推荐:外网 HTTP/2(带 SSL) + 内网统一 HTTP/1.1 + keepalive。这是大厂(阿里、腾讯、字节等)Nginx 反向代理的标配做法。
- 内网服务器不需要支持 HTTP/2,也不需要配证书,保持简单高效即可。
- 唯一需要注意:后端代码要正确读取 X-Forwarded-Proto: https,避免生成 HTTP 链接。
如果你想端到端都用 HTTP/2(比如 gRPC 重度场景),或者后端已经是 HTTP/2 服务,可以告诉我具体后端技术栈,我再给你其他方案(Envoy 替换或双层代理等)。
Nginx 同时收到1个客户端2个http/2的包,但它转服务器是2条连接?
是的,你的理解很准确。当 Nginx 同时收到同一个客户端通过 HTTP/2 发送的 2 个请求(在同一个前端 TCP 连接上,通过多路复用到达)时:
- 前端(客户端 → Nginx):只使用 1 条 TCP 连接,两个请求以不同 Stream 的形式并发到达。
- 后端(Nginx → 内网服务器):通常会使用 2 条(或多条)独立的 TCP 连接 来转发这两个请求。
为什么后端是多条连接?因为 Nginx 当前(包括 2026 年)仍然不支持 HTTP/2 多路复用 到 upstream(后端):
- 它会把 HTTP/2 请求 降级为 HTTP/1.1 转发(proxy_http_version 1.1;)。
- 在 HTTP/1.1 下,每个 upstream 连接一次只能处理一个请求(没有帧级多路复用)。
- 当两个请求几乎同时到达时,Nginx 会从 keepalive 连接池 中取出 两条不同的连接(如果池子里有空闲连接),或者新建两条连接,并发发送给后端。
所以后端服务器会看到 两个独立的 HTTP/1.1 请求,分别来自 Nginx 的两条 TCP 连接。推荐配置与实际行为nginx
upstream backend {
server 127.0.0.1:8080;
keepalive 64; # 每个 worker 进程最多保留 64 条空闲连接
}
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection ""; # 关键!必须清空,否则 keepalive 不生效
...
}
- keepalive 64 越大,后端连接池就越大,Nginx 就越容易复用现有连接。
- 并发请求多时:如果连接池够用,两个请求可能复用已有的连接;如果池子空了,就会新建连接。
- 极端并发:可能同时打开几十条到后端的连接(取决于 keepalive 参数和请求速率)。
总结对比
|
方向 |
连接数量 |
协议 |
是否多路复用 |
备注 |
|---|---|---|---|---|
|
客户端 → Nginx |
1 条 TCP |
HTTP/2 |
是(多 Stream) |
前端优势全保留 |
|
Nginx → 内网服务器 |
通常 2 条(或多条) |
HTTP/1.1 |
否(一连接一请求) |
通过 keepalive 连接池缓解 |
这也是目前 Nginx 作为 HTTP/2 边缘代理的典型做法:前端享受 HTTP/2 的多路复用,后端靠 keepalive 连接池 来实现较高的并发能力。
如果你后端服务器负载很高,或者希望尽量减少到后端的 TCP 连接数,可以把 keepalive 值调大一些(比如 128~256,根据后端承受能力)。
如果想真正实现端到端 HTTP/2 多路复用,目前需要换成 Envoy 等支持的网关。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)