LLM 性能出众,难免让人想拿它处理所有场景。
千万别这么做。大语言模型(LLM)能力很强,但并非所有工作都适合用它。 明明一段普通代码就能搞定的事,你却调用大模型,好比专门雇一名翻译去看懂路边的停车标识。 虽说能达到目的,但速度慢、成本高,完全多此一举。
想要开发优质 AI 应用、乃至成熟的 AI 智能体,核心诀窍就是分清:什么时候调用大模型,什么时候直接写原生代码。
你遇到的所有任务,都可以归为两大类:
1. 确定性任务
相同输入永远产出相同结果,有唯一标准答案,你能编写精准规则实现逻辑。 比如计算小费、列表排序、转换日期格式、校验邮箱是否包含 @符号。 寥寥几行代码就能完美处理:瞬时响应、零成本、次次结果准确。
2. 非确定性任务
没有唯一标准答案,结果取决于主观判断、上下文语境、语义解读。 比如总结法律文书、判断客户邮件的情绪是愤怒还是困惑、撰写专业投诉回复。 这类工作需要读懂细微语气、深层语义,恰恰是大语言模型的强项。
核心准则
同一输入固定输出 → 直接写代码; 需要语义理解、主观判断 → 使用 LLM。
我们对照几组真实业务场景举例:
- 根据重量计算运费 → 代码(固定计算公式)
- 总结商品评价 → LLM(需要阅读理解文本)
- 校验密码长度是否达标 → 代码(判断长度≥8 即可)
- 判断一条评价是好评还是差评 → LLM(需要主观情绪判断)
- 摄氏度转华氏度 → 代码(固定换算公式)
- 从邮件里提取人名、职位 → LLM(人名格式无统一规律)
滥用 LLM 的真实代价
- 速度极慢:API 接口调用耗时数百毫秒;一行 Python 代码仅微秒级,性能差上千倍;
- 产生费用:每次调用消耗 Token,Token 并非免费资源;
- 容易出错:让 LLM 计算 1247 × 83 都有可能算错,它只是预测文字,不会真正运算;
- 结果不可控:即便温度参数设为 0,输出内容仍可能出现浮动。
举个实际开发案例:收据生成器
- 小计、税费、总价这类数学计算:用普通代码,属于确定性逻辑;
- 底部的致谢文案(每次换不同风格的感谢语):交给 LLM 生成。
LLM 与原生代码分工核心思路整理(精简 + 拓展落地版)
一、核心二分法逻辑
1. 确定性任务 → 原生代码优先
特征:输入固定、输出唯一、存在标准化规则 / 公式 / 正则 / 算法,无模糊语义。 优势:微秒级响应、零调用成本、结果 100% 稳定、无幻觉风险。 典型场景: 数值运算、单位换算、格式校验(手机号 / 邮箱 / 密码长度)、排序、日期格式化、正则提取固定格式文本、运费 / 税费计算公式、数组切片过滤。
2. 非确定性任务 → LLM 专属场景
特征:无统一标准、依赖语义理解、情绪判断、开放式创作、不规则信息抽取、模糊文本归纳。 优势:天然理解自然语言、擅长模糊文本处理、灵活生成多样化文本。 典型场景: 文本摘要、情感分类、开放式文案生成、非结构化文本实体抽取、语义改写、多轮对话理解、复杂文书解读、意图识别。
二、滥用 LLM 四大硬成本(开发避坑重点)
- 性能鸿沟代码运算微秒级;LLM API 数百 ms 起步,高并发场景会严重拖慢接口 QPS,用户感知卡顿。
- 持续资金损耗每次请求消耗输入 + 输出 Token,批量高频确定性任务会产生大量不必要账单。
- 幻觉与计算错误LLM 本质是文字概率预测,不具备算数、严谨逻辑推理能力,复杂四则、统计极易算错。
- 输出不稳定即便 temperature=0,长文本、复杂抽取仍存在输出波动,不利于自动化流程校验。
三、落地分层设计方案(AI 应用 / 智能体标准架构)
分层原则:先代码过滤,后 LLM 处理
- 前置规则层(纯代码)所有可标准化逻辑全部拦截处理:参数校验、数值计算、格式清洗、固定字段提取、简单分支判断。
- LLM 推理层仅把经过代码预处理后的模糊、语义类任务丢给大模型,大幅减少 Token 消耗与耗时。
- 后置校验层(纯代码)LLM 输出结果再用代码做格式校验、数值复核、长度限制,兜底修正模型幻觉错误。
案例:收据系统分层实现
- 代码层:商品金额求和、税费计算、总价换算、日期格式化、订单号校验;
- LLM 层:个性化感谢文案、订单评价总结、客户专属温馨提示;
- 代码后置校验:截断超长文案、校验金额数字是否和计算结果匹配。
四、快速判断口诀(开发时直接套用)
输入不变结果不变,公式规则能写完,坚决不用大模型; 要读语境辨情绪,文本杂乱无定式,交给 LLM 更省心。
五、延伸拓展:容易混淆的边界场景
- 固定格式文本提取(如
姓名:张三):正则代码搞定,不用 LLM; - 无固定格式自由文本抽人名(聊天、随笔、邮件):必须 LLM 语义识别;
- 简单分类(文本是否包含关键词):代码匹配;
- 复杂语义分类(是否带有投诉、讽刺、隐性不满):LLM;
- 固定模板填充:代码字符串拼接;
- 自定义风格自由文案生成:LLM。
六、滥用反面例子
需求:判断用户输入是否包含邮箱 错误做法:调用 LLM 让模型识别邮箱; 正确做法:一行正则表达式匹配@+ 域名规则,零延迟零成本。
需求:两数相乘 错误做法:发给 LLM 计算; 正确做法:代码直接运算,无出错风险。