点一下\\\"AI趋势分析\\\"出来全是废话:数据窄、提示空、输出松,三重叠加才是根因

点一下按钮,出来一坨不像话的结果

trae-novel 里的"AI趋势分析"功能,用户点击后直接吐出一大段文字。我扫了一眼,全是"该作品呈现一定趋势""建议关注市场变化"这种正确的废话。跟产品文档里写的"基于近 30 天数据判断上升/下降/平稳,给出可操作建议"完全两码事。

用户原话:"结果非常离谱,看起来更像随便填充并没有很好的分析。"

我一开始想当然地以为是提示词太弱,准备直接往 prompt 里塞几段"请深入分析"。结果打开后端代码一看,数据链路本身就有问题——喂给模型的数据根本没到 30 天,只有最近 7 天的抓取记录,而且里面还有重复条目。提示词里也没告诉模型该按什么维度判断。模型收到的是"一坨残缺数据 + 一句模糊指令",输出废话不是它的锅。

三重叠加:数据窄、提示空、输出松

定位到 bestseller 模块的趋势分析实现后,我把链路拆成三段看:

  • 数据窄:抓取脚本只拉了最近 7 天,且没做去重,同一本书会出现 2~3 条记录,口径也不统一(有的按"销量",有的按"浏览量")。
  • 提示空:prompt 里就一句"请分析该作品的趋势",没告诉模型看哪些字段、按什么阈值判断、输出什么格式。
  • 输出松:没有结构化约束,模型爱写多长写多长,爱用什么语气用什么语气。

三个问题叠在一起,模型只能"随便填充"。我最初的直觉是改提示词,但真正根因在数据层。

补丁匹配失败,被迫换精确行号

改后端时我先把新逻辑写成一个 patch 文件,用工具匹配原文替换。结果匹配失败——因为抓取数据多了一层去重逻辑,原文行号已经偏移了。

我放弃 patch 匹配,直接定位到 trend_analysis.py 第 142~187 行,用精确行号重写这段:

  1. 把数据窗口从 7 天扩到 30 天,先按 isbn + date 去重;
  2. 统一口径为"日均销量",去掉浏览量字段;
  3. prompt 里明确写入判断规则:7 天环比 > 20% 判上升,< -20% 判下降,其余判平稳;要求输出 JSON 而非自由文本。

前端也得跟:把"为什么这么判"亮出来

后端改完只解决了一半。前端原来只是把模型返回的文本原样渲染,用户看到一段话,不知道模型为什么这么判。

我让前端新增两块展示:

  • 判断依据:列出实际用到的 30 天日均销量数据、环比计算结果、触发的阈值。
  • 修正提示:如果数据不足 30 天(比如新书只上了 12 天),前端直接标黄提示"数据窗口不足,结论仅供参考"。

这样用户至少知道结论的置信度,而不是盲信一段黑盒文本。

补做数据核查,又挖出重复和口径问题

改完代码我顺手跑了一遍历史抓取数据,发现两个新坑:

  • 爬虫重试时没加幂等锁,同一天同一本书会被写 2~3 次;
  • 2024 年 11 月之前的数据用"周销量",之后切成了"日销量",直接混在一起算环比会把数字撑大 7 倍。

这两个问题不修,模型拿到的数据本身就有毒。我在 ETL 层加了 dedup(isbn, date, source) 和统一换算逻辑,把历史数据回填成日口径。

可以带走的三条经验

  1. 别一上来就改 prompt。模型输出烂,先检查喂进去的数据够不够、对不对。"数据窄 + 提示空 + 输出松"是 LLM 应用最常见的组合翻车原因,优先级永远是数据 > 提示 > 输出格式。
  2. patch 匹配失败别硬试,直接看行号改。代码库只要动过一次,行号偏移是常态,花十分钟定位比花半小时 debug 匹配逻辑快得多。
  3. 让前端把"判断依据"展示出来。哪怕只是一组数字加一句"阈值 20%",用户的信任感跟纯黑盒文本完全不在一个级别。

做自动化这几年,最耗时间的从来不是写代码,是摸清每个平台的脾气。

这篇里提到的坑,都是真金白银踩出来的。
这篇里的场景你踩过类似的吗?是卡在「需求说不清」还是「改完就崩」?
评论区说说,我按最多人卡的点接着写。

posted @ 2026-11-06 04:57  钱栈up  阅读(3)  评论(0)    收藏  举报