news 2026/10/20 20:38:35

JMeter监听器与性能测试结果分析:从聚合报告到瓶颈定位的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JMeter监听器与性能测试结果分析:从聚合报告到瓶颈定位的完整指南

跑完压测,盯着屏幕上那个绿色小树,看到一堆数字密密麻麻列在那里,很多人第一反应就是截图发给群里问“这结果算好还是坏”——这个画面我见了太多次。说实话,JMeter监听器这个功能,绝大多数零基础同学根本没用明白,甚至很多人跑完测试,从头到尾只点开过“查看结果树”一个监听器,看到200就以为万事大吉。

这一章我专门把性能测试结果分析这件事掰开揉碎讲清楚。内容很实在:每一个监听器是什么、有什么用、用什么场景、怎么读它的输出,以及最重要的——跑完压测后,面对那一堆指标,你到底该按什么顺序做判断。本章不堆概念,不讲高大上的性能模型,就按我平时带人做压测时最常用的路子走。适合刚入门、能手动跑起一个JMeter脚本但不知道怎么评价结果的人,也适合写过几年用例但一直对“分析报告”半懂不懂的同学。

1. 从一次压测说起:监听器到底在“监听”什么

我第一次接触JMeter的时候,对“监听器”这个词也有过错误的理解,以为它是像抓包工具一样,实时去“监视”服务器状态。实际上在JMeter体系里,监听器的作用是处理采样器产生的数据。

一次完整的压测请求,链路是这样的:线程组中的每个线程,按脚本配置去执行某个Sampler(比如HTTP请求),请求发出去之后,响应返回,JMeter会把这一个请求的耗时、状态码、响应体大小等数据封装成一个“采样结果”。采样结果产生之后,监听器负责把这个结果收下来,用不同的方式展示、聚合或存储。简单说,Sampler负责干活,Listener负责记账和报数。

理解了这条链路,你就知道为什么“跑完压测看结果”这件事这么重要了——因为监听器不会告诉你服务器哪里有问题,它只负责把采样数据呈现出来,真正定位瓶颈、判断好坏的功夫,全在人的分析里。

1.1 监听器的“虚名”和“实职”

JMeter里监听器种类很多,我初步数了一下,默认安装自带二十多个。零基础最常见的误区是把它们当成“不同款式的仪表盘”来选,看到名字长得差不多就随便挂一个。其实从职责来看,监听器只分三类:

  • 展示类:把单个请求的结果列出来,方便调试和排查。代表:View Results Tree,也就是“查看结果树”;
  • 聚合类:把一批请求汇总成统计指标,方便整体判断。代表:Aggregate Report、Summary Report、Graph Results;
  • 输出类:把原始数据写到文件或者别的平台,供后续二次分析和监控告警使用。代表:Simple Data Writer、Backend Listener。

这三类不是竞争关系,而是配合关系。一个车间的老板不可能只看某一颗螺丝怎么拧,也不可能只看一张汇总表,他需要既有全流程的原始记录,也有最终产量统计。压测也是这样:调试阶段用展示类,压测收数据阶段用聚合类,长期监控或深度分析用输出类。

1.2 给零基础的第一个建议:先选“结果文档类”,不要死磕图形

很多新手被JMeter自带的图形界面吸引,喜欢挂一堆Graph Results、Spline Visualizer之类的图表监听器。我理解这个心态:性能测试这个行当,看起来“有图”才显得专业。但说实话,在真实压测项目里,图形监听器的价值非常有限。

原因有三点:第一,JMeter的图形监听器本质上是对聚合数据做实时绘图,压测线程数一多,绘图本身会消耗本机CPU和内存,导致压测客户端成为瓶颈,数据失真;第二,图形是瞬态的,压测一结束、页面一关,你很难再从里面提取精确数值去写报告;第三,项目团队最终要的往往是Excel或CSV数据,配合监控平台的曲线图,而不是JMeter自带的那张小折线图。

所以我的建议,也是我实际带人时反复强调的:正式压测前,优先配置CSV输出和后端监听器,把数据落到文件或外部平台,图形监听器只在调试时用。后文我会分别说明怎么做。

2. 常用监听器逐个拆解:你的工具箱里该有谁

监听器不需要全都掌握,但有几个是你跑压测时绕不过去的。我按使用频率从高到低,把最常用的几个拆开讲讲,避免你用错。

2.1 查看结果树:调试专用,绝不当压测证据

View Results Tree是新手最早接触的监听器,因为它最直观:点击任意一条请求,左边能看到Sampler结果、请求报文、响应数据,还能看到响应头和Cookies。平时做接口调试、排查脚本问题,这个监听器非常高效。

但请记住一个原则:正式压测时,不要开着它跑。尤其并发数一高,查看结果树要渲染每一个请求的完整内容,内存和CPU消耗极大。我做过一个极端案例:某个团队用500线程压测,误开着查看结果树跑场景,最后压测结果还没出来,JMeter先把本机CPU打满了,整个进程假死,白跑一趟。

正确打开方式是:调脚本时挂着查看结果树,确认断言、参数化、关联都没问题之后,把它禁用或移除,再开始正式压测。如果压测过程中需要观察实时状态,用聚合报告或Summary Report就够了。

2.2 聚合报告与汇总报告:最核心的两个“报表机”

聚合报告(Aggregate Report)通常是最受信任的一个监听器。它会把采样结果按照每个Label(一般对应一个Sampler名称)分组,统计出样本数、平均响应时间、中位数、90%/95%/99%响应时间、最小最大值、错误率、吞吐量,以及收发字节数。后面我会专门拆这些字段的含义。

汇总报告(Summary Report)和聚合报告长得很像,但它比分报告少了90%Line、95%Line、99%Line这几个百分位字段,只保留平均耗时、中位数、错误率和吞吐量。它还有一个特点:每隔一段时间会在JMeter的控制台日志里打印一行实时汇总,方便你边压测边观察整体走势。

实际项目里,我几乎只在分析“整体吞吐和平均值”时看一眼Summary Report,最终写报告的数据都从聚合报告或者CSV文件里出。原因也很简单:平均值容易被极端值拉偏,缺少百分位数据,你就无法判断“100个请求里有95个快不快”。聚合报告字段更全,出翔实报告的价值更高。

2.3 后端监听器:把数据送到专业监控平台的科学姿势

很多零基础同学不知道JMeter还有个Backend Listener。这个监听器的用途是:把采样数据以特定格式发到后端存储/展示平台。最常用的实现是InfluxDB Backend Listener,配合Grafana做实时报表,团队里所有人打开浏览器就能看到当前的TPS、响应时间、错误率趋势曲线。

这套方案的优势非常明显:数据不落地本地文件,可视化效果专业,压测过程中所有指标是秒级更新的,还能和历史报告做对比。一个人搭一次,全团队都能用。具体做法不复杂:先在服务器上装好InfluxDB和Grafana,再在JMeter里添加Backend Listener,选择org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsCollector,填上InfluxDB的地址、数据库名和保留策略即可。

不过这里我要提醒一句:不要一上来就追求上Grafana。在还没搞懂聚合报告每个字段含义之前,过早接触监控图表会导致一种“看得见曲线、看不懂结论”的状态。我的建议是先把聚合报告和CSV分析玩透,再引入后端监听器。

下面把几个常用监听器的适用场景整理成一张表,方便你以后选型:

监听器名称核心用途正式压测是否建议开启主要注意事项
查看结果树调试脚本细节、检查响应内容否高并发下极耗资源
聚合报告统计核心指标、出报告数据是注意勾选Save as CSV
汇总报告实时观察汇总、观察整体走势是控制台日志会刷屏,正常现象
图形结果直观观察响应时间变化不推荐绘图本身消耗资源,数据难追溯
简单数据写入器输出原始采样结果到文件是适合二次分析
后端监听器推送指标到InfluxDB等平台按需需要在监控端建库配表,有学习成本

3. 结果分析:从一堆数字中找到问题

监听器只是工具,真正有含金量的环节是对性能测试结果分析的理解,也就是面对聚合报告里那十几列数据,怎么判断系统到底能不能扛住预期压力。这一节是本章的硬核部分。

3.1 聚合报告里的14个字段,到底怎么读

聚合报告的每一行对应一个Sampler。字段看着多,但归归类就很好记:样本与速率类、耗时类、比例类、流量类。

  • Label:采样器名称。多个HTTP请求会按名称分组,所以给Sampler起名一定要有业务含义,否则结果列表全是“HTTP Request”,分析时哭都来不及。
  • Samples:总请求数。这个数等于“并发线程数 × 循环次数”,如果启用了循环内部的随机延时或吞吐量整形定时器,实际数可能略有差异。先心里默算一下预期值,如果数值对不上,要先排查“是不是有人漏发或提前中断了”。
  • Average:平均响应时间。所有请求耗时的算术平均值。它的缺陷是容易被极端值拉高,所以必须结合中位数和百分位一起看。
  • Median:中位数。把耗时从小到大排序,最中间的那个数。如果说平均值是“被少数人拉高的工资”,那中位数更像是“大多数人的真实水平”。
  • 90% Line / 95% Line / 99% Line:分别表示90%、95%、99%的请求都在这个耗时以内。这三个数是判断长尾体验的关键,尤其99% Line对核心交易场景非常重要。
  • Min / Max:最小耗时和最大耗时。范围越大,说明请求耗时的抖动越严重,可能存在间歇性慢请求或者GC抖动。
  • Error %:错误率。断言失败、请求超时、连接异常都算错误。商用系统一般要求错误率趋近于0,具体阈值要看业务要求,后面详细说。
  • Throughput:吞吐量。单位是“请求/秒”(也可能是分钟),表示每秒钟完成多少个请求。这是你最需要盯的系统处理能力指标。
  • Received KB/sec / Sent KB/sec:每秒收发的字节量。这两个值可以帮你判断网络带宽是否成为瓶颈。

这14个字段,每列单独看意义有限,组合起来才说明问题。我平时习惯于按“样本量一致性 → 错误率 → 中位数和TP值 → 吞吐量 → 极值差异”的顺序扫一遍,具体步骤放到第4章讲。

3.2 三个“要命”指标:响应时间、吞吐量、错误率

对零基础来说,先抓住三个维度,其他指标都往这三个上靠。

第一个是响应时间。它反应的是“用户体验”。但光看平均值远远不够。举个例子,一组请求的平均耗时是800毫秒,中位数是320毫秒,99% Line是5秒。这说明大多数请求还是很快的,但每100个请求里就有1个卡了5秒。对用户量大的系统,这1%很可能就是抱怨的来源。所以分析响应时间,一定要看中位数和百分位,光说“平均800ms”完全不够,甚至可能掩盖问题。

第二个是吞吐量。它反应的是“系统产能”,单位是TPS或QPS,含义是每秒能处理多少请求。吞吐量并不仅仅取决于服务器能力,还受并发水平的影响。一般规律是:在并发较低时,吞吐量随并发增长而增长;但并发超过某个阈值后,吞吐量会进入平缓区甚至下降,这时往往意味着系统资源已经被打满,或者连接池、锁竞争开始拖后腿。通过观察吞吐量的拐点,能非常直观地找到压测中的最大处理能力。

第三个是错误率。它反应的是“稳定性”。很多人喜欢拿一个固定的3%或者5%当红线,我觉得不科学:接口类型不同、业务重要性不同,同样的错误率带来的影响完全不同。登录、支付、下单这类核心链路的错误率,我通常要求必须为0;查询类的接口,在极端峰值下短暂出现少量错误,可以通过超时控制和重试策略兜底。更关键的是,错误率高要分类型去查:是HTTP 500说明服务端内部异常,是SocketTimeout说明超时设置不够,是Connection refused说明连接池撑不住。

3.3 怎么判断压测结果达不达标

判断达标,先有标准。从来没有什么“性能天生就好”的系统,所有好与不好都是相对预期来的。所以开始压测前就必须确认三件事:

  • 预期并发数:系统的设计用户量是多少,峰值活跃用户可能产生多少并发请求;
  • 预期响应时间:核心接口的P95响应时间要求是多少,比如“95%的请求要在500毫秒内返回”;
  • 预期吞吐量:一个时间段内需要支撑多少总请求量,折算成每秒平均请求数。

这三条缺一条,压测结束后你都说不清楚结果算好还是坏。例如压测结果响应时间P95是900毫秒,如果你的预期是“P95 500ms内”,那就结论明确:不达标。如果预期是“业务高峰允许2秒内完成”,那这次的成绩反而超额完成。我看到太多零基础同学辛辛苦苦跑完一场压测,最后报告里只贴了一堆数字,完全没跟期望值挂钩,等于白干。

下面给一张示例表,告诉你怎么把“期望值”和“实测值”摆在一起对比:

对比项期望值实测值结论说明
并发线程数100100压测条件与预期一致
平均响应时间≤ 1000 ms680 ms达标
90%响应时间≤ 1500 ms1120 ms达标
99%响应时间≤ 3000 ms4230 ms长尾超标,需要深查
吞吐量≥ 80 TPS114 TPS达标,仍有盈余
错误率0%0.03%接近零,但需关注原因

这张表里最有价值的其实是那一行“99%响应时间”,它暴露了一个平均值掩盖不了的问题:虽然多数请求在1秒内返回,但总有一小撮请求拖到了4秒以上。这种长尾如果出现在真实业务里,往往牵扯到特定数据状态、缓存失效或GC,必须查清楚。

4. 完整跑一次:单接口压测与结果分析全流程

理论说再多,不如走一遍。这一节我拿一个模拟项目为例,完整演示从场景设计、执行压测到输出结论的流程。假设现在要对一个名为“某登录接口Demo”的登录接口做压力测试,预期场景是:100个并发用户,平均响应时间不超过1000毫秒,P95不超过1500毫秒,错误率为0。

4.1 场景设计:线程组参数怎么定

新建线程组时,很多人只填“线程数”和“循环次数”,忽略了两个隐藏参数:“Ramp-Up Period”和“调度器”。它们的作用是模拟用户的真实到达方式。

线程数设为100,Ramp-Up Period可以设为20秒。意思是说,JMeter不是一次性把100个请求同时打出去,而是在20秒内逐步把100个线程都启动起来。这样做更贴近真实情况。如果你一上来就是100线程瞬间齐射,结果可能只是测出了服务器“冷启动”能力,而不是稳定承载能力。

循环次数这里我用5次,即每个线程发5个请求,总样本数就是500。如果勾选了“永远”,压测就会一直跑,直到你手动停止,这种写法适合做长时间稳定性测试,不适合短期摸底。首轮摸底压测,循环次数有限制反而更可控。

线程组下还需要添加HTTP请求默认值或HTTP Cookie管理器,这些配置可以让请求更接近真实用户。在这个模拟场景里,我给登录接口加了一个JSON断言,验证响应里是否包含"token"字段,这样就能自动判断业务层有没有失败,而不仅仅是HTTP状态码为200。

4.2 跑完看什么:数据采样与导出

执行之前,我在聚合报告上勾选了“Save Table Data”或者配置了Simple Data Writer,把采样结果写入CSV文件。这里有个我踩过的坑:聚合报告界面上的“Write results to file / Read from file”选项,有的人只勾了文件名却忘了选“CSV格式”,结果导出了一个XML文件,分析起来痛苦很多。

压测跑完之后,第一步先核对总样本数。预期500个请求,实测如果是498个,那有2个请求在中途异常中断了。接下来看错误率:如果错误率不是0,先打开CSV文件筛选StatusCode列,找到出错的那几条,看看是超时、连接被拒还是断言失败。

然后在聚合报告里看关键数值。这个模拟案例的实测结果是:平均响应时间720毫秒,中位数350毫秒,P95是980毫秒,P99是2600毫秒,吞吐量110 TPS,错误率0。对照前面的期望值,平均和P95都达标,但P99明显偏高,虽然不等于失败,但这个长尾数据必须查。

很多人到这里就开始写报告“系统性能达标”,这是不够的。P99偏高说明每隔100个请求就有1个请求遭遇明显排队。我可以再下探一步:把CSV数据按时间排序,看这2600毫秒的请求是均匀散布在各阶段,还是集中在某一段。如果集中在压测中后段,很可能跟线程池满、GC停顿或资源竞争加剧有关。

4.3 结合服务器监控定位瓶颈

只有JMeter侧的数据远远不够。压测期间我还会同时开一个服务器监控,看CPU、内存、磁盘IO、网络带宽和GC日志。虚拟化环境里也可以直接看宿主机报表。

在这个案例中,压力机侧报告的P99偏高,而服务器监控显示CPU使用率在压测后段稳定在92%左右,GC日志里出现了比较频繁的Young GC。那么这个长尾就很可能是服务端CPU资源紧张加上GC停顿造成的。如果没有监控数据,你可能会怀疑代码问题,或者调低压测参数,白走弯路。

定位思路很简单,用排除法。第一步,看压力机自身CPU和内存,如果压测客户端自己都跑满了,数据不准,先加大压测机资源或降低线程数。第二步,看服务端CPU、内存、磁盘、网络,哪个资源先打满,瓶颈大概率在那里。第三步,看中间件指标,比如连接池占用、线程数、队列长度,判断是资源不够还是配置限制。第四步,如果都正常,再考虑跟代码相关的逻辑锁和慢SQL。

这套流程听着简单,但每一步都需要经验积累。初学者最容易犯的错是跳步骤:一看响应时间高就直接说“系统性能差”,结果被人一追问“你确定是服务端的问题不是压测机的问题?”,答不上来。在性能测试这个行当,结论必须有数据链路支撑,而不是凭感觉拍板。

5. 常见坑与排查:为什么你测得的数据总感觉不对劲

我相信很多零基础同学都有过类似经历:照着教程把脚本配好了,压测也跑完了,结果怎么看怎么觉得数据怪,但又说不出哪里怪。我把平时带人时见过的高频问题整理成一个速查表,你可以对照着排查。

5.1 典型误区的对照速查表

表现可能原因正确处理方式
聚合报告样本数少于预期线程启动没完成、遇到异常中断先看日志和错误流,再确认线程组配置
响应时间整体偏高但吞吐很低压力机自身CPU或内存打满加压力机资源,或降低线程数重测
错误率极高但压测机上没明显瓶颈断言太严格或响应数据没取到先看查看结果树的响应体,再调整断言
平均响应时间很低、P99却爆炸高存在长尾:GC停顿、缓存失效、连接池排队结合监控定位长尾集中在哪个阶段
多次压测结果差异巨大未做数据清理、环境被其他任务占用固定测试数据、确保环境干净、多轮取稳定值
控制台日志疯狂输出大量响应内容开启了调试类监听器或日志级别过细关闭查看结果树,合理设置日志等级
后端监听器连接报错InfluxDB地址、库名或保留策略配置不对用客户端工具先验证API连通性

5.2 排除法:先断客户端,再断断言,再断参数化

数据异常了,首先要搞清楚锅在谁身上。我习惯从三层去排查:客户端、测试脚本、被测系统。

第一步看客户端。压测机本身CPU是否飙高、内存是否吃紧、网络是否打满。JMeter是Java写的,如果没调过堆内存,默认参数在500并发以上非常容易触发Full GC,这时候采集到的数据就变成“JMeter自己的GC堆诊断报告”,完全不可信。给JMeter分配堆内存的方式很简单,修改jmeter脚本里的HEAP参数,比如-Xms2g -Xmx4g,但具体值要根据你压测机内存大小来定。

第二步看测试脚本。优先检查断言。我遇到过一个非常典型的案例:某接口成功时会返回"code":200,失败时返回"code":500,但HTTP状态码始终是200。如果只做HTTP层面的断言,错误率永远是0,所有数据都会偏乐观。所以业务断言必须跟上,尤其是登录、下单、支付这类有明确成功标志的接口。

第三步看参数化。压测过程中所有线程如果都发同一个手机号、同一个订单号,很容易触发服务端幂等逻辑或数据库唯一约束,导致后期大量失败。尤其是登录类接口,很多系统会做会话踢重:同一个用户被不断踢下线,前端表现为间歇性失败。参数化策略要提前设计好,测试数据要用真实业务特征的数据,不要用造出来的万能账号。

5.3 什么时候必须重启测试,而不是凑合看数据

经验不足的同学最容易在数据明显失真时还硬着头皮出结论。我列几种必须停掉压测重新来的场景:

  • 压测进行到一半,压测机自身CPU长时间超过90%,说明客户端已经不是“干净的施压源”了;
  • 测试数据准备错了(比如参数全部重复、依赖数据被清空),中途修复后再接着跑,前后数据根本不可比;
  • 服务端在压测过程中被别的任务抢占资源,比如定时任务突然启动、大批量报表导出,导致结果混入了严重的“杂质”;
  • 线程组配置临时改了(比如改了一个定时器),旧脚本的文件还在跑,你误以为测的是新配置。

遇到这些情况,别心疼已经跑完的那部分数据。性能测试最怕“只见树木,不见森林”,为了一组完整记录硬着头皮把错误过程跑完,产出的是既有偏差又没有说服力的报告。我自己的经验是:宁可重新压两次,也别在一份坏数据上做分析,因为分析的方向一旦被带偏,后续排查代码、调优中间件全都会往错误的地方使劲。

还有一个小建议:每次压测前,把CSV输出文件名改成带时间戳的名字,比如result_20250120_1430.csv,避免多个轮次的数据覆盖在一起。后面回看历史报告的时候,这个习惯能帮你省下大量对账时间。

写在最后

做性能测试这几年,我见过太多人卡在“能跑脚本、不会看结果”的坎上。其实想想也正常,JMeter的脚本录制、参数配置都有明确的界面和教程,但“分析”这件事没有按钮,只能靠方法加经验。说实话,刚开始接触性能测试结果分析的时候,我也看什么都像瓶颈,后来养成了“先看错误率、再看中位数和P值、最后配合监控定位”的固定套路之后,分析速度才真正提上来。

本章用到的所有字段解释、表格模板、排查方法,都是我自己日常压测时真正常用的那套东西。零基础的同学看完这一章,不用急着去追求那些花哨的插件和平台,先在本地把聚合报告玩明白,把CSV导出来用Excel或命令行工具做一次完整分析,每一步都搞清楚“这个数字说明什么”,再往后搭监控平台、做全链路压测,自然会顺畅很多。下一章我打算聊聊压测中经常被忽略的指标关联分析,包括怎么把JMeter指标跟数据库慢查询、GC日志、中间件队列串成一条完整的证据链。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 20:38:27

局域网IP冲突专项测试:原理拆解与五步定位法

前两天处理了一个办公网络的“灵异”故障:整个办公室的电脑时断时续,有人能上网有人不能上网,打印机偶尔抽风,视频会议卡成幻灯片。路由器日志里密密麻麻的“ip conflict”告警,让我瞬间锁定了重点——局域网IP冲突。正…

作者头像 李华
网站建设 2026/10/20 20:38:11

OpenClaw从入门到贡献:生态地图与完整实践路径指南

做技术社区这几年,我收到过的最尴尬问题不是“OpenClaw怎么用”,而是“OpenClaw这么多模块,我到底该先从哪个下手”。很多人下载了仓库、看了一遍 README,然后就没有然后了。OpenClaw 发展到现在,早就不只是某个单一功…

作者头像 李华
网站建设 2026/10/20 20:34:30

液冷比风冷贵?2兆瓦数据中心投资成本拆解:10kW打平,40kW省14%

简介:这份PDF白皮书聚焦大型数据中心制冷方案的投资成本对比,面向数据中心设计者、运维人员及基础设施规划者,帮助其在风冷与浸没式液冷之间做出有数据支撑的选型决策。资源为1个PDF文件,压缩包约1.67MB,内容源自施耐德…

作者头像 李华
网站建设 2026/10/20 20:31:43

Android内存泄漏排查利器:LeakCanary原理与实战

简介:LeakCanary 是 Android 内存泄漏检测的常用工具,这份资源面向需要做性能优化与内存排查的 Android 开发者,提供一套可直接运行的 LeakCanary 使用示例 Demo。资源以 Android 工程形式组织,共 54 个文件,压缩包约 …

作者头像 李华
网站建设 2026/10/20 20:30:56

基于CNN的肺炎诊断系统:深度学习医学影像项目实战解析

今天来聊聊深度学习方向,尤其AI医疗这个细分领域的毕设选题。如果你正打算找一个“看起来有专业度、做起来工作量可控、复用价值高、答辩时还能讲出亮点”的项目,那么基于卷积神经网络(CNN)的肺炎诊断系统,是我在带过多…

作者头像 李华
网站建设 2026/10/20 20:30:51

用Coze工作流2分钟定制儿童英语AI绘本:全流程搭建指南

孩子刚接触英语那会儿,我到处找合适的启蒙材料。买回来的绘本要么难度不合适,单词对不上孩子的认知水平,要么故事不够吸引人,翻两页就丢到一边。后来我开始用Coze智能体工作流自己做英语绘本,从确定故事主题到生成图文…

作者头像 李华