第一关:几百万条攻略为什么最后选了这只大肥鱼让 AI 自己写爬虫,四十个子代理一起跑下载完才是地狱最反直觉的发现:几千条和几十条一样快我把公司的 IP 爬封了血压时刻:新版本把我气笑了最后说点实话
先报个数:两天,一百亿 token。
上周领导给我派的活,是给游戏里那个攻略问答的 AI 攒一份知识库。我干了两天,把一个大模型蹬到冒烟,账单一拉,算上缓存命中的部分,整整一百亿 token。
一百亿是什么概念?我一开始也没数。同事说,这够他上班摸鱼的时候跟 AI 唠一辈子了。行吧,反正不是我的钱。
背景交代一下:我们公司在做 AI 相关的业务,游戏里要内置一个能答攻略的 AI。可攻略这东西太偏门,通用大模型一问就胡说八道,只能自己攒料。活拆成两块——去各大论坛扒高质量的攻略文本,再把里面的关键字段一条条抠出来填进表。
听起来像搬砖,干起来也确实是搬砖。区别是这把砖有一百亿 token 那么重。
先把这两天的账摆出来,数字比形容词好用:
最开始的活特别原始。我一个实习生,人肉去搜各大游戏论坛、攻略聚合站,把链接一条条抄进本地表格,后面再交给爬虫去抓。
抄到第三天就发现不对劲。这些站点一个比一个野:样式不同、结构不同,有的连入口都找不到;看着挺火的老游戏,一堆攻略站打开直接报错。国内外站分开标完,估了一下规模——几百万条。
几百万条,我一个人抄到明年也抄不完。好在不是一个人战斗,一堆实习生同事一起上,速度一下就起来了。领导也没催,说这是实验性的活。那我就放心大胆开干了。
链接凑齐了,下一个问题是:谁去爬。
按理说该写爬虫,可一套通用爬虫啃不动这么多长得不一样的站。让 AI 参与站点适配,是当时最现实的选择。
一开始试的是最便宜的方案,慢得我想砸键盘;换成快的那档,速度是有了,钱也跟着飞——坐我边上的同事,一天跑掉五百块。两边一合计,都不合适。
后来换成现在这只大肥鱼,账才勉强算得过来:缓存命中率高得离谱,最高到过 99.9%,成本直接压到原来十分之一以下;输出 200 token/s 往上,扛得住这个量级。
说白了,它最划算的地方是同一批网页可以反复读而不怎么花钱。这也成了后面所有方案的地基。
方法说出来有点绕:每个站点配一套爬虫,而这套爬虫让 AI 看着页面结构现场写出来,写完自己调、自己跑。
肯定有人要问:不是说通用爬虫搞不定吗?区别在「谁来适配」。站点之间结构天差地别,但同一个站里用同一套模板的文章,版式基本一致。让模型先把站点摸一遍,写一套专用爬虫,就能把这个站批量扒下来。当然,一个站里也可能藏着好几套模板,例外还得手补。
真正跑起来是这样的:开一堆对话框,用同一套提示词,各自盯不同的站点。一个对话框最多挂 8 个子代理,我最疯的时候同时开了四十多个。
机器是台 16 核的,CPU 占用干到 70%。瓶颈根本不在算力,在网络传输——这也算个反常识:AI 时代最拖后腿的,还是带宽。
网页扒下来之后,为了方便处理,全存成了 PDF。然后我打开第一批,人就麻了。
乱码的、重复的、版式畸形的、广告比正文还多的、正文直接是空的、页面看着好好的但文本层全是乱码……能想到的毛病,这批文件全给我演了一遍。
这里踩了个大坑,必须单独拎出来说:采集之前没想清楚「到底要哪些字段」,导致后面每篇攻略还得回原网页再取一遍。多花的 token 是小事,埋的坑是大事——几百万篇的重复访问,光联网过一遍,一万个文件就是二十块。规模一乘,我都不敢算。
还有个更隐蔽的问题:第一阶段网页信息是 AI 采的,准不准当时没人验。后面才发现,第一轮填下来的字段只有六成左右是对的。剩下的不是没采到,就是采错了。
正文提取同样要命。有些 PDF 的文本层是烂的,有些干脆把正文拍成图片塞进去,一个字都抽不出来。那就只能上 OCR。为了找一个能用的 OCR,我折腾了整整两天:
最后是跟同事聊天聊出来的:系统本身就带 OCR 接口。轻、快、能并发,不用装驱动、不用配模型权重,一小时三千份文件——对我们这种「只要认规规矩矩印刷体」的场景,够用了。
我当场在本机封了个小服务,前面挂个队列调度。然后又踩了个坑:服务写得不够结实,几十个对话框一起调,直接把整个工具拖卡死,原因到现在都没完全搞清。
信息都扒下来了,接下来要按字段整理,再一条条填进数据表。这活还是交给 AI。
我们做的几款游戏,攻略量差得离谱:多的十万条往上,少的才几十条。我就照着采集阶段的经验,试着把「几十条」和「几千条」分包丢给它,看效率差多少。
结果两个任务耗时居然很接近。原因挺吓人:给它几十条,它就一条一条读、一条一条吐;给它几千条,它一次读几十条、一次吐几十条。也就是说,它自己会「批量」,而且这个批量大小你根本控制不住。
你不能硬定批量,因为每条信息差别太大,硬切出来的质量参差不齐;你也不能让它自己分,它大概率按字数切,碰到长文件就保守地切成无数小批,效率低得离谱。
想过用规则匹配硬解。可 OCR 出来的正文本身就带错,规则一错配,后面整列字段跟着歪;容错分支越加越多,误匹配越收越乱。最后选的折中办法是:用很宽松的正则先粗筛一遍,把可能相关的段落圈出来,交给 AI 直接读、直接提,明令禁止它再用规则匹配,提完写回表。
代价是准确率。最后填满率大概 95%,填进去的那 95% 里还有错的。
纠错是最费钱的一段,也是最费人的一段。
想补全缺失的字段,就得把整个网页再读一遍;第二轮顺手把第一轮的错也捞出来改。但模型纠错很不稳:改对一段,往往又给你弄错另一段,来回拉锯。
能做的只有一件事——收窄每个对话框的任务范围,让上下文短一点、干净一点。这招确实有用,效率肉眼可见地往上走。
至于访问限制,大部分论坛都有,短时间请求一多就直接掐你。我们操作得小心翼翼,结果模型写的脚本压根不管这些。某一次,它以每秒 1300 次请求的频率往上怼,我们的 IP 当场被封。
那一刻我盯着屏幕,很想问问它:你知不知道自己在干什么。
写这篇的时候正好赶上它出了个新版本,网上吹得很凶。我用了一天,血压直接上头。
指令遵从度不行,能力不行,记性也不行。上一句刚定好的规则,下一句就忘;我明明写了「动手之前先问我」,它自顾自跑了十几分钟神秘代码,回来告诉我做完了,留下一地错。
更离谱的是它压根不知道自己在干什么。子代理不会用,让它并发,它先自己把活干得差不多,再让子代理跑个脚本收尾;自测能无限套娃,测一遍、预演一遍、想十几分钟、改脚本、再测一遍……;让它把文档写得像人话,一轮之后忘光,还顺带静默思考了几十分钟。
工具和文档乱放也是常态,它特别爱在垃圾桶文件夹里操作。我明令禁止,它先答应「好的,接下来我不会在垃圾桶里操作」,然后——继续在垃圾桶里操作。
这是群里朋友当时的评价,我截了图:
话说得有点重,但那次 IP 被封之后,我确实没什么可反驳的。
还有个信号挺有用,分享给同样在跟 AI 干活的人:如果你已经明确要求「动手前先问我」,而它发完交接文档还是直接开干,那这个对话框的指令遵从基本就废了,早点换一个,别硬耗。
折腾完这两天,最直观的感受不是「AI 好强」也不是「AI 不行」,而是我终于知道它在哪一步会掉链子。
它能干的活是真的快,快到你会怀疑自己这些年练的手速算什么;但它不会替你想清楚要干什么,也不会在它把 IP 爬封之后替你去解释。
顺便说一句,现在我闭着眼都能背出这批游戏里哪几个论坛爱报错、哪个站点半夜访问必挂。这些破知识,AI 一条都没帮我记住。
你有没有被 AI 那句「已经做完了」骗过?评论区说说,我看看谁踩的坑比我深。
热门跟贴