【大模型RAG生成式AI开发实战】《大模型RAG生成式AI开发实战》_111.[第11章 RAG性能优化] 性能监控:Prometheus和Grafana集成

你的RAG系统上线后还能“裸奔”多久?本文将手把手教你用Prometheus+Grafana给大模型应用装上“行车记录仪”,让每一次检索延迟、每一秒生成卡顿、每一轮用户投诉都无处遁形。读完这篇,你不仅能画出老板爱看的可视化大屏,更能建立从指标采集、告警治理到调优闭环的完整监控体系,真正让RAG从“能跑”进化到“敢上线”。
文字目录
- 指标体系构建:别只盯着CPU使用率
- 数据采集实战:Python Exporter不是写个print
- 可视化仪表盘:别让老板对着50个图表发呆
- 智能告警策略:从“狼来了”到“一呼即应”
- 链路追踪关联:慢,到底慢在哪?
- 调优闭环建设:让数据说话,别拍脑袋
嗨,大家好呀,我是你的老朋友精通代码大仙。接下来我们一起学习 《大模型RAG生成式AI开发实战》111.[第11章 RAG性能优化] 性能监控:Prometheus和Grafana集成。
都说“学编程就像打怪升级,总会遇到卡关的时候”,但在RAG这条路上,最让开发者崩溃的不是Boss太猛,而是你根本不知道Boss什么时候出的招——系统卡了?检索慢了?模型突然开始一本正经地胡说八道了?你对着终端两眼一抹黑,日志里除了一个干巴巴的“200 OK”啥也看不出来。新手最容易踩的坑,就是把“功能跑通”当成“项目完结”,上线后没有任何监控,出了问题全靠用户主动来骂。这种“裸奔式上线”,在Demo阶段还能蒙混过关,一旦接入了真实流量,分分钟教你做人。别慌,今天咱们就把Prometheus和Grafana这对“黄金搭档”焊死在RAG系统上,手把手教你搭一套真正管用的监控体系。
1. 指标体系构建:别只盯着CPU使用率
点题
监控的第一步,永远不是装软件,而是想清楚“我到底要看什么”。RAG系统是一个典型的多阶段流水线,从用户Query进来,到Embedding、向量检索、重排序、Prompt拼接,最后到LLM生成,每一个环节都可能成为瓶颈。如果你的指标体系只覆盖最底层的机器资源,那就像给病人量体温却不去拍X光——指标正常,不代表业务健康。
一套完整的RAG指标体系,至少要分层覆盖三个维度:基础设施层、检索引擎层、大模型生成层、业务应用层。每一层关注的重点完全不同,混在一起看只会让你头晕。
痛点分析
太多新手一上来就apt-get install prometheus,然后开心地Import一个Node Exporter的Dashboard,看着CPU曲线和内存占用,觉得自己“已经监控起来了”。结果呢?产品经理跑来问:“用户反馈有时候回复特别慢,你查一下?”你打开云厂商面板,CPU曲线平滑得像佛系青年的心电图,内存也才用了40%。你挠挠头:“机器好好的啊,是不是用户家里WiFi不好?”
这就是典型的“指标近视症”。你根本不知道,RAG的卡顿大概率发生在业务层,而不是机器层。
举个真实的“惨案”。小李的团队把RAG上线后,只监控了服务器CPU。某天流量涨了30%,CPU确实没飙高,但用户投诉暴增。一查才发现,为了提升效果,算法同学把向量检索的TopK从5改成了50,又把重排序模型换成了一个更大的。检索阶段的计算量直接翻了十倍,但由于是IO密集型,CPU没爆,可平均响应时间从800ms涨到了4秒。没有业务延迟指标,这个问题在线上潜伏了整整三天,全靠用户在群里骂街才被曝光。
还有一个常见误区:只看平均延迟。平均数这玩意儿最会骗人。十次请求里有九次200ms,有一次20秒,平均下来也就2秒,看起来“还能接受”。但那个20秒的请求,往往就是压垮用户体验的最后一根稻草。
解决方案与正确做法
咱们得给RAG量身定制一套“Golden Signals”。别贪多,先抓住最核心的几个:
检索引擎层,你要关心:
rag_retrieval_latency_seconds:端到端检索耗时,包括Embedding计算、向量搜索、重排序。rag_recall_score:TopK结果的相似度分数分布,用来衡量召回质量是否下滑。rag_cache_hit_rate:如果做了Query缓存或者向量缓存,这是第一优化防线。
大模型生成层,你要关心:
rag_llm_ttft_seconds:Time To First Token,首Token延迟。用户感知到的“模型开始动了”就是这个指标,比总延迟更影响体验。rag_llm_generation_tps:生成吞吐,Token/秒。这决定了长文本回答时用户是流畅阅读还是干瞪眼。rag_total_tokens:单次请求消耗的Input+Output Token数。这直接关系到成本和性能。
业务应用层,你要关心:
rag_requests_total:QPS,按状态码和异常类型拆分。rag_business_error_rate:比如检索结果为空的比例、LLM输出格式解析失败的比例。rag_human_feedback_score:如果有用户点赞/点踩,这简直是金矿,可以直接用来监控“幻觉”趋势。
在Prometheus里,延迟千万别用Gauge随手记一个值,必须用Histogram。Histogram才能让你事后算出P50、P95、P99,才能做有意义的SLA承诺。
from prometheus_client import Histogram
# 正确姿势:用Histogram,定义好bucket
rag_latency = Histogram(
"rag_total_latency_seconds",
"End-to-end RAG latency",
["stage"], # 用label区分阶段:retrieve/rerank/generate
buckets=[0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0]
)
小结
机器指标是你的“体检表”,业务指标才是你的“成绩单”。RAG监控的第一步,就是跳出CPU和内存的舒适区,直面检索延迟、生成吞吐和用户体验这些“硬骨头”。
2. 数据采集实战:Python Exporter不是写个print
点题
想好了指标,下一步就是把它从代码里“抠”出来,交给Prometheus。这听起来简单,不就是计数器加一、记个时间戳嘛?但如果你真这么想,那坑已经在前面挖好了,就等你跳。
RAG服务几乎都是Python写的,FastAPI、Flask、Gunicorn、Uvicorn齐上阵。Python的多进程模型和Prometheus的默认单进程假设,简直是天生的冤家。
痛点分析
新手最容易犯的错,就是把指标当成普通全局变量来用。
看看下面这个“灾难现场”:
# 错误示范:多进程灾难现场
request_count = 0
@app.post("/rag")
def handle_rag(query: str):
global request_count
request_count += 1
# ... RAG逻辑
return {"answer": result}
你在本地用uvicorn main:app单进程跑,每次请求数字都在涨,觉得很开心。一上线,用了gunicorn -w 4,四个Worker各记各的,Prometheus来扫/metrics,随机落到其中一个Worker,看到的数据永远只是总量的四分之一。更惨的是,如果你用Counter但没用多进程模式,数据还会互相覆盖,指标文件直接 corrupted。
还有一种骚操作:为了“图省事”,直接把指标打到日志里,打算用ELK或者干脆手动grep统计。兄弟,2026年了,别这么折磨自己。日志是给人看的,指标是给机器聚合的,两条赛道,别混着跑。
第三个坑是阻塞。有人在业务主线程里直接计算并返回metrics,结果指标一多,/metrics接口本身变成了性能瓶颈,Prometheus每15秒来刮一次,你的服务就卡一下。
解决方案与正确做法
在Python里,请老老实实使用prometheus_client,并且认真对待多进程模式。
正确的姿势分三步:
第一步,启动服务前设置环境变量,指定一个所有Worker都能读写的临时目录:
export PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus_multiproc
mkdir -p /tmp/prometheus_multiproc
rm -rf /tmp/prometheus_multiproc/*
第二步,初始化一个CollectorRegistry,并用MultiProcessCollector把它和多进程收集器绑定:
from prometheus_client import Counter, Histogram, CollectorRegistry, generate_latest
from prometheus_client.multiprocess import MultiProcessCollector
import os
# 必须在导入其他prometheus_client组件前设置好环境变量
os.environ.setdefault("PROMETHEUS_MULTIPROC_DIR", "/tmp/prometheus_multiproc")
registry = CollectorRegistry()
MultiProcessCollector(registry)
rag_requests = Counter(
"rag_requests_total",
"Total RAG requests",
["status", "model_version"],
registry=registry
)
rag_latency = Histogram(
"rag_total_latency_seconds",
"End-to-end latency",
["stage"],
buckets=[0.1, 0.5, 1.0, 2.0, 5.0, 10.0],
registry=registry
)
第三步,在FastAPI里挂一个非阻塞的/metrics路由:
from fastapi import FastAPI, Response
app = FastAPI()
@app.get("/metrics")
def metrics():
return Response(
content=generate_latest(registry),
media_type="text/plain; version=0.0.4; charset=utf-8"
)
@app.post("/rag")
def rag_endpoint(query: str):
with rag_latency.labels(stage="total").time():
# ... 你的RAG逻辑 ...
rag_requests.labels(status="success", model_version="v2").inc()
return {"answer": "..."}
为什么要用registry=registry?因为默认的全局REGISTRY在多进程模式下会收集垃圾数据。显式传入你绑定过MultiProcessCollector的registry,才能保证所有Worker的数据被正确聚合。
另外,如果你的RAG依赖Milvus、PgVector、Redis这类外部存储,别忘了给它们也做一层“代理埋点”。比如在调用collection.search()前后包一个计时器,把向量DB的延迟单独暴露成rag_vector_db_latency_seconds。否则出问题的时候,你根本分不清是代码逻辑慢,还是向量库在抽风。
小结
指标采集是地基,地基建歪了,上面的报表全是“幻觉”。记住三个关键词:Histogram、MultiProcessCollector、非阻塞Endpoint。
3. 可视化仪表盘:别让老板对着50个图表发呆
点题
数据进了Prometheus,如果没人能看懂,那就只是一堆占磁盘的时间序列。Grafana的价值,不是把数字“画”出来,而是把问题“讲”清楚。一个好的RAG监控Dashboard,应该像一份战地指挥图:一眼能看到哪里有炮火,一眼能看到哪里防线稳固。
痛点分析
新手搭Grafana,最常见的姿势是:打开官网,找到一个Node Exporter Full模板,一键Import,然后把标题改成“RAG监控”,完事。
结果呢?Dashboard上铺满了CPU、Load Average、Disk IO,花花绿绿几十张图。老板点开链接,鼠标滚了十下还没找到“咱们系统今天慢不慢”的答案。算法同学想看召回率趋势,发现根本没有这个面板。运维同学想看GPU显存,结果你部署在CPU机器上,满屏的N/A。
还有一种极端:为了显示“我很专业”,一个Dashboard塞了50多个Panel,Grafana页面加载要5秒,浏览器风扇狂转。监控本身变成了性能瓶颈,这上哪说理去?
更隐蔽的坑是“没有时间维度对比”。比如你把Token消耗画出来了,但只有当前值,没有同比昨天、上周的曲线。流量涨了,你根本不知道这是正常增长还是异常爬取。
解决方案与正确做法
Dashboard要分角色、分场景、分层次。我建议你至少拆成三个Dashboard,用Grafana的Folder管好权限和入口。
第一个:RAG业务概览(Business Overview)
这个Dashboard是给产品经理和老板看的,核心就四张图:
- 实时QPS和昨日同比曲线
- P99端到端延迟(红色粗线,超过阈值就变色)
- 错误率/失败请求数(包括检索为空、LLM超时、解析失败)
- Token消耗趋势和预估成本
配色要克制,红绿黄三色足够。老板不关心你Milvus有几个Segment,他只关心“用户用得爽不爽,钱烧得快不快”。
第二个:检索性能剖析(Retrieval Deep Dive)
这个是给算法和后台工程师“治病”用的:
- 检索阶段P50/P95/P99延迟(用Prometheus的Histogram分位值)
- TopK平均相似度分数和分布直方图
- 缓存命中率(Query Cache + Vector Cache)
- 向量DB连接池活跃连接数
这里可以上点“重武器”,比如用Heatmap展示延迟分布,一眼就能看出长尾请求集中在哪个区间。
第三个:生成性能与资源(Generation & Infra)
这个是给运维和模型工程师的:
- LLM首Token延迟(TTFT)
- 生成阶段Token吞吐(TPS)
- 请求队列长度(如果做了流控或批处理)
- 机器/GPU的基础资源(这一项终于有了它该在的位置——兜底)
变量与下钻
千万别写死Panel。用Grafana的Variables做好模板化:
$environment:prod / staging$model_version:gpt-4o / qwen / deepseek$index_name:用户文档库 / 知识图谱库
这样出了问题,你可以直接在Dashboard顶部切换环境,对比不同模型版本的表现,排查效率翻倍。
小结
好的Dashboard不是仓库清单,而是作战地图。记住一个原则:老板看的Dashboard,3秒之内要能看到今天有没有事;工程师看的Dashboard,3秒之内要能看到问题出在哪一层。
4. 智能告警策略:从“狼来了”到“一呼即应”
点题
告警是监控的灵魂。但如果灵魂整天尖叫,那就是噪音,会让人麻木,最终真正的大祸临头时,你已经懒得睁眼了。RAG系统的告警,必须兼顾“技术语义”和“业务语义”,阈值不能拍脑袋,规则不能一刀切。
痛点分析
有多少人是这样写告警的?打开Prometheus Alertmanager,复制一条CPU告警,把阈值从80改成70,把名字改成RAGLatencyHigh,PromQL写成avg(rag_total_latency_seconds) > 2,完事。
这下可热闹了。
平均延迟超过2秒就告警?那如果有一次后台批处理请求了100篇长文档,平均一下就把线拉爆了,其实普通用户请求都好好的。半夜三点,PagerDuty把你炸醒,你迷迷糊糊打开电脑,发现只是偶发波动,连查都不用查。
还有一种情况:只告警机器指标,不告警业务指标。向量库挂了,检索全部返回空,但HTTP状态码还是200(因为你代码里catch了异常,返回了一个“抱歉,我没找到相关信息”)。你的错误率监控基于HTTP 5xx,所以安安静静。用户在页面上看到的全是“我不知道”,而监控大屏一片祥和。这简直是“致命沉默”。
解决方案与正确做法
第一,抛弃平均值,拥抱分位值。
在Prometheus里,延迟类指标必须用Histogram的bucket,然后用histogram_quantile计算:
# 错误示范:平均值告警,波动大,误报高
avg(rag_total_latency_seconds) > 2
# 正确示范:P99告警,只抓真正影响用户的慢请求
histogram_quantile(0.99,
sum(rate(rag_total_latency_seconds_bucket[5m])) by (le)
) > 3
为什么要用rate(...[5m])?因为Counter只增不减,必须用rate算出每秒增量,否则数据只会一直涨。
第二,建立RAG专属的业务语义告警。
机器没挂,不代表业务没病。这几条规则建议你焊死在Alertmanager里:
rag_empty_retrieval_rate > 0.3 for 5m:连续5分钟,超过30%的请求检索结果为空。这可能是向量库连接异常、索引被误删、或者Embedding模型版本不匹配。rag_llm_error_rate > 0.05 for 2m:LLM端报错率飙升,可能是API Key失效、模型下线、或者Prompt触发安全拦截。rag_token_usage_spike:Token消耗在5分钟内环比增长200%。这可能是用户在做批量攻击,也可能是你的上下文拼接逻辑进入了死循环。rag_p99_ttft > 5s for 3m:首Token延迟飙高,用户已经觉得“卡死了”,但你的总延迟可能还没超阈值(因为生成内容很短)。
第三,告警分级和降噪。
不是所有告警都值得半夜打电话。建议两级:
- Warning:P99延迟超过基线1.5倍,或Token消耗异常。走企业微信/邮件/Slack,白天处理。
- Critical:P99延迟>5秒且持续5分钟,或错误率>5%,或检索大面积为空。走短信/电话,立即处理。
另外,加一条for: 5m的持续时间过滤,避免瞬时抖动触发告警。Prometheus不是地震仪,不需要对每一声咳嗽都反应。
第四,写好Runbook。
告警描述里别只写“RAG延迟高”。请写清楚:
- 这个告警代表什么?
- 第一步查哪个Dashboard?(附Grafana链接)
- 第二步看哪个日志?(附Loki/ES过滤语句)
- 常见的三种原因和对应操作。
你半夜被叫醒时,脑子是不转的,Runbook就是你的外置大脑。
小结
告警的终极目标不是“响”,而是让人知道“该干什么”。基于分位值、基于业务语义、带有Runbook的告警,才是RAG系统的“防火警报”,而不是“狼来了”的恶作剧。
5. 链路追踪关联:慢,到底慢在哪?
点题
Prometheus告诉你“有慢请求”,但它不告诉你“为什么慢”。5秒钟的总延迟,可能是Embedding花了4.8秒,也可能是LLM排队排了4.8秒。没有链路追踪,你就像在黑箱子里修发动机——全靠猜。
痛点分析
很多团队的RAG日志长这样:
[INFO] 2026-01-15 10:23:01 - Request started: query="如何退款"
[INFO] 2026-01-15 10:23:06 - Request completed, latency=5.2s
没了。就两行。
用户投诉“有时候很慢”,你发现平均延迟200ms,挺好啊。但一看P99,5秒!那这5秒到底卡在哪一步?是Milvus网络波动?是重排序模型加载慢?还是LLM那边在排队?你不知道,只能把团队所有人拉进会议室,各自猜测。
还有一种情况:你确实在代码里打了日志,每个阶段都记了时间。
[DEBUG] Embedding cost: 0.1s
[DEBUG] Retrieve cost: 0.3s
[DEBUG] Rerank cost: 0.2s
[DEBUG] Generate cost: 4.6s
但这些日志分散在N台机器的N个文件里,用户一次请求可能走了负载均衡的任意一台机器。你想把一次完整请求的所有阶段串起来,得拿着TraceID(如果有的话)去日志系统里grep。效率低不说,跨服务的调用链路(比如 Embedding Service 是独立部署的)根本串不起来。
解决方案与正确做法
引入分布式链路追踪,最主流的是OpenTelemetry。哪怕你不接入Jaeger或Tempo,至少在代码里手动实现一套“类Trace”的Span机制,也能让排查效率提升十倍。
把RAG链路拆成明确的Span:
parse_query:Query解析、意图识别、敏感词过滤embedding:调用Embedding模型或服务,把Query转成向量vector_search:向量库检索,记录top_k、index_name、filter条件rerank:重排序模型打分,记录输入文档数、输出文档数build_prompt:上下文拼接,记录最终Prompt的Token长度(这直接影响LLM延迟和成本)llm_first_token:从发送请求到收到第一个Token的时间(TTFT)llm_generation:流式生成剩余内容的时间post_process:结果解析、引用标注、格式化输出
每个Span都要带上关键标签(Tags/Labels):
user_tier:免费用户还是付费用户(优先级不同)model_version:用的哪个模型index_name:查的哪个知识库cache_hit:是否命中缓存
在Grafana里,如果你有Tempo或Loki,可以直接从Prometheus的指标跳转到对应的Trace和日志。在Prometheus端,你至少要把每个阶段的耗时单独暴露成Histogram:
# 各阶段独立埋点
embedding_latency = Histogram("rag_embedding_seconds", ...)
retrieval_latency = Histogram("rag_retrieval_seconds", ...)
rerank_latency = Histogram("rag_rerank_seconds", ...)
llm_ttft = Histogram("rag_llm_ttft_seconds", ...)
llm_generation = Histogram("rag_llm_generation_seconds", ...)
有了这些数据,当你发现总延迟高时,第一步看Grafana的“各阶段延迟占比”饼图或堆叠面积图,立刻就能定位“罪魁祸首”。
还有一个绝招:把TraceID注入到日志的每一条记录里。这样即使用户只反馈了一句“刚才很慢”,你拿着时间戳和UserID查出TraceID,就能在日志系统里一秒拉出完整上下文,不用在几十G日志里大海捞针。
小结
没有Trace的监控,就像没有X光片的体检。Prometheus告诉你“有病”,链路追踪告诉你“病在哪”。两者结合,才能真正做到药到病除。
6. 调优闭环建设:让数据说话,别拍脑袋
点题
监控不是目的,优化才是。很多团队把监控当成了“电子壁纸”——看着挺酷,但出了问题还是凭经验拍脑袋调参。真正的性能优化,必须是一个“数据驱动”的闭环:监控发现异常 -> 定位瓶颈 -> 提出假设 -> A/B测试 -> 验证效果 -> 持续监控。
痛点分析
看着Grafana上的曲线,你一拍大腿:“检索延迟太高了,肯定是向量库不够快,加内存!换SSD!”结果真金白银砸下去,延迟只降了5%。最后发现,根本原因是HNSW索引的ef参数太小,搜索时遍历不足,导致频繁回退到暴力搜索。你优化错了方向。
还有一种情况:你看到生成阶段慢,二话不说升级了更大的模型,从7B换成70B。结果TTFT确实快了(因为推理并行度高了),但GPU显存爆了,成本翻了三倍,而且你的业务场景其实输出都很短,瓶颈根本不在模型参数量,而在于Prompt里塞了太多无关的检索结果,导致Input Token过长。
最讽刺的是:你做了优化,但Dashboard上没有标记优化发生的时间点。一周后,延迟曲线下降了,但你忘了是不是因为自己优化的结果,还是因为那周流量本身就低。没有对照,就没有结论。
解决方案与正确做法
第一步,用监控数据严格定位瓶颈类别。
看到检索慢,先问自己三个问题:
- 是网络IO慢?(Milvus/ES客户端延迟高,但服务端延迟正常)
- 是计算慢?(CPU打满,HNSW图遍历耗时)
- 是数据量问题?(索引Segment过多,或TopK太大导致后续重排序慢)
看到生成慢,也问三个问题:
- 是TTFT高?(模型加载、排队、Prefill计算慢)
- 是生成TPS低?(解码阶段慢,可能批处理不够)
- 是Input太长?(检索回来的上下文太多,Prompt膨胀)
只有回答了这些问题,优化方案才不会跑偏。
第二步,Grafana Annotation是你的时间轴。
每次发版、改配置、切换模型、调整HNSW参数,都在Grafana上加一个Annotation。这玩意儿就是时间轴上的书签。你一眼就能看出“昨天下午3点改了ef参数,然后P99延迟从800ms掉到了400ms”。因果关系一目了然,不用翻聊天记录。
第三步,A/B测试看板。
RAG的优化往往涉及“效果与性能”的权衡。比如:
- HNSW
ef从64提到128,延迟涨20%,但召回率涨5%,值不值? - 重排序模型从轻量级换到重量级,精度提升,但成本翻倍,值不值?
- 上下文从Top10降到Top5,生成变快了,但回答质量会不会下降?
在Grafana里建一个“A/B测试”Dashboard,同时展示两组指标。你可以通过HTTP Header或请求参数把流量切到两组配置,然后在Prometheus里用Label区分(比如version="control"和version="experiment")。让数据告诉你答案,而不是让老板的主观感受告诉你答案。
第四步,引入Error Budget(错误预算)。
给RAG定一个SLO,比如“99%的请求总延迟<2秒”。Prometheus根据历史数据告诉你,这个月你的“错误预算”还剩多少。如果预算烧得太快,说明系统稳定性在恶化,必须停下来做深度优化,而不是继续堆新功能。
# 本月错误预算消耗(示意)
1 - (
sum(rate(rag_requests_total{latency_bucket_le="2.0"}[30d]))
/
sum(rate(rag_requests_total[30d]))
)
第五步,定期Review,形成团队肌肉记忆。
每周花15分钟,打开Grafana业务看板,过一遍:
- 这周P95有没有恶化趋势?
- 告警数量是增加还是减少?
- 用户反馈最多的三类问题,有没有在监控里找到对应信号?
这15分钟能帮你把“事后救火”变成“事前预警”。
小结
监控是眼睛,调优是脚步,闭环才是前进。别让Prometheus和Grafana成为摆设,让它们驱动你的每一次决策,RAG系统才能真正越跑越顺。
写在最后
咱们今天从RAG指标体系的分层设计,聊到Prometheus多进程采集的避坑指南;从Grafana Dashboard的分层叙事,聊到Alertmanager的智能告警降噪;从OpenTelemetry的链路追踪,聊到了监控驱动调优的完整闭环。这一路走过来,你会发现监控这件事,本质上不是技术堆砌,而是思维转变——从“我代码跑通了”变成“我敢不敢让它在凌晨三点独自面对真实流量”。
编程之路不易,RAG开发更是充满了“看起来正常,实则暗流涌动”的陷阱。但好消息是,只要你愿意花点时间把Prometheus和Grafana焊死在系统上,把每一个业务指标都当成一等公民对待,你就已经超越了绝大多数“裸奔上线”的开发者。保持好奇,持续迭代,你不仅能写出能跑的代码,更能搭出敢上战场、经得起推敲的工程体系。每一步成长都算数,咱们下回接着唠!
关注私信备注:“资料代找获取”,全网计算机学习资料代找:例如:
《课程:2026 年多模态大模型实战训练营》
《课程:AI 大模型工程师系统课程 (22 章完整版 持续更新)》
《课程:AI 大模型系统实战课第四期 (2026 年开课 持续更新)》
《课程:2026 年 AGI 大模型系统课 23 期》
《课程:2026 年 AGI 大模型系统课 21 期》
《课程:AI 大模型实战课 8 期 (2026 年 2 月最新完结版)》
《课程:AI 大模型系统实战课三期》
《课程:AI 大模型系统课程 (2026 年 2 月开课 持续更新)》
《课程:AI 大模型全阶课程 (2025 年 12 月开课 2026 年 6 月结课)》
《课程:AI 大模型工程师全阶课程 (2025 年 10 月开课 2026 年 4 月结课)》
《课程:2026 年最新大模型 Agent 开发系统课 (持续更新)》
《课程:LLM 多模态视觉大模型系统课》
《课程:大模型 AI 应用开发企业级项目实战课 (2026 年 1 月开课)》
《课程:大模型智能体线上速成班 V2.0》
《课程:Java+AI 大模型智能应用开发全阶课》
《课程:Python+AI 大模型实战视频教程》
《书籍:软件工程 3.0: 大模型驱动的研发新范式.pdf》
《课程:人工智能大模型系统课 (2026 年 1 月底完结版)》
《课程:AI 大模型零基础到商业实战全栈课第五期》
《课程:Vue3.5+Electron + 大模型跨平台 AI 桌面聊天应用实战 (2025)》
《课程:AI 大模型实战训练营 从入门到实战轻松上手》
《课程:2026 年 AI 大模型 RAG 与 Agent 智能体项目实战开发课》
《课程:大模型训练营配套补充资料》
更多推荐


所有评论(0)