作者把固定规则、输入数据和结构化输出拆分为文件,通过 LLM CLI 批量标注 500 条评论,避免长对话造成规则漂移。文中还覆盖合同检查、论文检测和视频转笔记等任务,周成本不足 0.5 美元。
我曾尝试让 AI 给 500 条 Etsy 评论打标签:把评论粘贴到聊天窗口里,每次处理 20 条。才进行到第三批,模型就悄悄创造了一个标签体系里根本不存在的新类别。这不是模型的问题,而是容器的问题。长对话会发生漂移;批量任务需要的是始终不变的规则。
于是,我把整个任务搬到了终端里。这篇文章会完整介绍整个过程:为 500 条评论标注情感、生成合同风险检查清单、检查论文章节是否带有 AI 写作痕迹,以及把一段 2 小时的课程视频整理成 Obsidian 笔记。整周的总成本不到 0.50 美元。
bl 是阿里云 Model Studio 的 CLI。使用 Node.js 安装:
npm install -g bailian-cli
从 Model Studio 控制台获取一个免费的 API key(新账户包含免费额度),然后执行:
bl auth login
整个方法可以用一句话概括:把标签规则放进文件,从文件中读取输入,再把结构化输出写入文件。每次调用收到的规则都完全相同——从设计上杜绝漂移。
You are a review analyzer. For the input review output JSON: {"sentiment": "positive/negative/neutral", "aspect": [matching items from "quality","shipping","packaging","price","service"], "intent": "praise/complaint/suggestion/question", "summary": "under 10 words"}. Output JSON only.
for f in reviews/*.txt; do bl text chat --model qwen-turbo --system "$(cat rule.txt)" --message "$(cat "$f")" --output json > "out/$(basename "$f" .txt).json"; done
这里有三个经过刻意考虑的选择:
--model qwen-turbo:打标签属于流水线工作,而不是推理工作。在对 50 个样本进行并排对比后,低成本档位的结果与默认旗舰模型相当,成本却低了一个数量级。处理这批 500 条评论只花了几美分。
--output json:结果可以直接送入电子表格或脚本。(通过管道传递时,输出无论如何默认就是 JSON。)
每条评论单独一个文件:其中 3 条因为特殊字符而执行失败;重试时,只需重新运行这 3 个文件,而不必重跑整个批次。
顺序执行耗时约 40 分钟。使用 --concurrent 4 后,耗时约 11 分钟。

汇总结果显示:62% 的负面情绪指向“物流”,还有 17 条产品建议藏在五星好评里。我的朋友花了三个晚上粗略浏览这些评论,最后只得到了一些模糊感受;而这个循环给出了具体数字。
还是同一条命令,只是换了一份 contract(这里确实是双关)。关键在于添加否定约束:
bl text chat --system "You are a contract reviewer. List ONLY clauses that are unfavorable or unusual for the contractor. For each: quote the exact wording, explain the risk, suggest a redline. Skip boilerplate." --message "$(cat agreement.txt)"
如果不写 skip boilerplate,模型就会尽职尽责地审查每一条标准条款,真正重要的信息反而会被淹没。加上这句之后,我那份 9 页的自由职业合同最终只标出了四个问题,其中包括一条在尾款支付前就已生效的知识产权转让条款。每项问题都附有准确的原文引用,我可以直接粘贴到回复中。
边界也要说清楚:这只是初步筛查。涉及真金白银时,这份检查清单应该拿去交给律师。
现在,大学会对提交的论文进行 AI 内容检测,我的表妹需要先自行检查一次。首先得坦诚说明:没有任何工具能够保证通过所有检测器,而且用 AI 检测 AI 确实会产生误判。更实际的做法要谦逊一些——找出机器味最重的段落,再获得具体到句子的改写建议:
bl text chat --system "Analyze the input for AI-generation markers: mechanical parallel structures, stock transitions, vague claims with no concrete detail. Rate each paragraph High/Medium/Low and give specific humanization suggestions, down to the sentence." --message "$(cat chapter3.txt)"
结果有两个段落被标为 High——两段都是她几乎没怎么修改过的 AI 输出。她按照建议,亲自重写了这两段。
换一条命令,背后的思路仍然相同。bl vision describe 可以直接接收本地视频文件:
bl vision describe --video ./lecture.mp4 --prompt "This is a course lecture. Output Markdown study notes: chapters in teaching order, each with core arguments, key examples, and any formulas or code. End with a takeaway list. Use Obsidian-compatible syntax."
几分钟后,按章节整理的笔记就生成了。我只看了 25 分钟的视频,而不是完整的 120 分钟。专用的摘要工具更加精致,通常提供时间戳、浏览器扩展等功能,但它们采用订阅制;如果每个月只处理两段视频,按调用次数付费更划算,而且笔记格式完全由我的 prompt 决定。
周末执行 bl usage stats --days 7:上面所有任务加起来不到 0.50 美元,而且大部分都在免费额度内。运行大型批处理任务之前,可以用 bl usage free 查看剩余的免费额度——值得先看一眼。

如果任务量大、重复性高,而且需要结构化输出,就适合使用这种方法,例如评论、工单、调查问卷、合同初筛和积压的课程视频。如果你每个月只分析一篇文本,聊天窗口已经够用;如果任务要求零错误,也不要使用这种方式——AI 是初筛层,而不是最终签字人。
如果你手头也积压了一大堆没读完的文本,免费额度足以运行本文中的所有任务:注册账户之后,从“尚未阅读”到“已经读完,并附有检查清单”,中间只差一个 for 循环。
你一直拖着没做的最大规模批量文本任务是什么?欢迎在评论区告诉我。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。