2012年前后我第一次认真看Transformer论文的时候,真没想过有一天靠写提示词也能成为一门正经手艺。这几年大模型从论文变成API、变成开源权重、变成企业项目里真实跑着的客服机器人、文档助手、知识库问答,整个开发范式被掀了个底朝天。这两年我在企业里带队做AI应用落地,最深的感受是:现在缺的不是模型,而是能把模型稳稳当当接进业务流程的人。
这篇东西是对一套企业级大模型AI应用开发实战项目的复盘,重点讲三件事:提示词工程怎么在真实系统里落地,NLP能力怎么和大模型配合干活,以及AI对话产品从demo变成生产系统要趟过哪些坑。内容偏向工程实践,适合已经在写代码、想转型AI应用开发的工程师,或者公司里正在推进AI项目落地的技术负责人。你会看到真实的方案选型、Prompt设计思路、链路架构和一堆只有上线后才知道的教训。
1. 项目整体设计与开发路线拆解
1.1 这个项目要解决什么问题
先说说我们当时接到的需求。业务方想要一个能处理员工日常咨询的智能助手,表面上是“做个聊天机器人”,但实际上包含三个棘手的子问题:
第一个是意图识别和实体抽取。员工提问经常是口语化的,比如“我这个月年假还剩几天,想请两天假,流程怎么走?”,里面既有查询意图、又有请假意图,涉及“年假余额”和“请假流程”两个领域。传统NLP方案要训意图分类和序列标注两个模型,还得分词、标词性、做依存句法分析,工程量大,且对着没标注数据的中文口语效果说崩就崩。
第二个是知识库问答。制度文档上百篇,总共几百万字,员工问“出差住宿标准是多少”这种事实性问题,需要系统能在海量文档里准确找到答案。
第三个是复杂指令理解。领导们经常会问出“帮我统计各部门上季度招聘完成率,汇总成表格发我”这种需要拆解任务、编排步骤、调用多个后端系统接口的问题。
传统做法是把这三个问题分开做三个项目,每个项目都需要独立训练数据、算法工程师和发版节奏。但大模型的出现改变了解题思路:这三个问题都可以用统一的“模型+上下文+工具调用”框架来解,模型负责语义理解和推理,上下文提供知识和约束,工具负责执行具体动作。
1.2 为什么选择“大模型优先+传统NLP兜底”的混合架构
定了方向之后,团队内部有一轮大的方案讨论。核心分歧在于:全部交给大模型处理,还是大模型+传统NLP混合处理?
争论的焦点在成本和不确定性上。大模型的优点是语义理解强、不需要大量标注数据、能处理开放域问题;缺点是单次调用有成本、有延迟、存在幻觉,而且在企业内网部署场景下,GPU资源永远是稀缺的。传统NLP的优点是确定性强、可解释、运行成本低;缺点是泛化能力弱,维护实体词典和规则的成本很高。
我的判断是:能不到模型层解决的问题就不用模型。文本分类、实体识别这种任务,用FastText、BERT之类的小模型就能干得很好,每千次调用成本几乎为零。大模型用在真正需要推理和生成的地方,比如多轮对话管理、复杂问题拆解、生成式回答,这是它的主场。
所以最终架构是叠加的:
- 第一层是做路由分类的轻量模型,用BERT微调或规则匹配,先判断问题类型,比如考勤类、报销类、制度咨询类,准确率可以做到95%以上;
- 第二层针对分类出的通路做针对性处理。制度咨询类进知识库问答链路,用向量检索召回片段再交给大模型组织答案;数据查询类进NL2SQL链路;操作类问题进工具调用链路;
- 第三层大模型在最后做answer generation,把所有检索结果、结构化数据、工具返回结果合并成自然语言回答。
这条链路的好处是把最贵的智能用到最需要的地方。实际上线后观察,70%的简单问题,比如“食堂几点开门”,根本没走到大模型那层,直接由规则命中小模型搞定。整体调用成本比纯大模型方案低了60%以上,响应时间也从3秒压到了600毫秒以内。
1.3 企业级应用和“玩模型”的区别在哪
很多同学跑通了一个模型demo就觉得大模型应用开发不过如此,但企业级项目和平时的个人项目差距非常大。个人项目只需要跑通一条主线,企业项目要求你得在不确定性里保证确定性。
第一是数据合规和权限隔离。员工问“今年Q3销售部的HRBP是谁”,系统不能因为检索到敏感组织信息就直接回答,得做权限校验,没权限的提问要先拦截。这一点在纯调API的demo里是根本不会考虑的。
第二是效果可评测。个人项目里回答好一次就成了,生产系统需要持续的效果评估体系,每个Prompt改动、每次模型版本升级都要有可量化的回归指标。
第三是成本可控。个人项目跑通一次花几块钱无所谓,生产环境高峰期每秒几十个请求,每次检索+生成的成本会被放大几千倍,必须设计缓存层和分级路由。
第四是安全和审计。AI系统要能回答“上一个问题用户问了什么、模型怎么生成的”的完整链路追踪问题,这要求系统架构从一开始就设计日志、trace、灰度发布机制。
没有这些东西,模型能力再强也上不了生产。这段是回头看最重要的一课。
2. 提示词工程在真实系统里的落地实战
2.1 从“写提示词”到“设计提示词系统”
网上讲提示词工程的内容很多,但大部分停留在“你会不会写一个技巧性很强的Prompt”层面。企业项目里真正难的不是单条提示词写得好不好,而是要把提示词当成系统工程来设计,让它能稳定应对海量、多样、持续变化的真实用户输入。
我们的做法是把提示词分成了四个层级:
第一层是系统级指令,固定不变,描述AI的角色、能力边界、语言风格、处理原则。比如客服助手的系统指令里明确写了“你是公司内部的智能助理,只回答与公司制度、流程、系统使用相关的问题,其他话题请礼貌拒绝并引导用户咨询相关部门”。这层指令直接决定模型的性格和安全边界,要反复打磨,一旦上线不要频繁变动。
第二层是场景级指令,针对不同任务类型配置不同Prompt模板。问制度是一套,查数据是一套,发起流程又是一套。每套模板里规定了推理步骤、回答格式、必须验证的字段,甚至语气词都有严格规范。
第三层是动态注入的知识和上下文,包括从知识库检索到的相关片段、用户的历史对话摘要、当前时间、用户所属部门等实时信息。这层是每次请求都会变化的,也是决定回答质量的关键。
第四层是少样本示例,在需要严格输出格式时给出2到3个“问题-回答”示例,把格式要求说清楚。比如统计数据类问题,给一个“问题-查询SQL-JSON结果-自然语言回答”的完整例子,模型照着输出的格式基本不会跑偏。
2.2 提示词工程里关键的三个原理
写提示词这件事看起来是玄学,但背后确实有规律。在反复调优了大量的Prompt之后,我总结出影响最终效果的关键原理有三个。
第一个是角色设定和价值对齐。模型没有价值观,它的行为是由系统提示词里的人设和边界设定约束的。你把它设成“精通公司制度的人事专家”,它回答人事问题时会明显更严谨;你把它设成“友好耐心的同事”,它面对尖锐提问时的回复会更委婉。这类设定本质上是在调模型说话的温度和角度。
第二个是思维链和推理过程可见。遇到复杂推理问题,比如“我出差三天,其中两天是周末,应该补休几天”,直接让模型给出答案容易出错。正确的做法是在Prompt里要求模型先列出思考步骤,比如出差性质、是否包含法定节假日、公司调休规则,再逐条推理得出结论。我还习惯让模型在关键推理节点输出中间结果,这不仅仅是提示词技巧,更是定位模型出错环节的工具。
第三个是输出约束和减少不确定性。系统指令里明确回答格式、最大长度、语气范围,甚至规定假若不确认答案该怎么说。不要以为这是小题大做,线上用户问“下午两点开会到几点”和“请问下午两点的会议预计持续多长时间?我需要和时间冲突的另一个会议协调时间”是同一个意思,但表达长度和复杂度差别很大。没有严格的输出约束,模型给用户的回答格式会非常不稳定。
2.3 Prompt模板工程化和版本管理
一旦提示词进入了生产系统,散落在代码里的硬编码字符串就是灾难。Prompt经过几十轮迭代后,到底哪个版本效果最好?哪个版本是为了修哪个线上问题改的?答案会变得不可追踪。
我们的做法是把所有Prompt模板收口到独立的配置文件或模板管理服务里,每条模板带版本号、生效状态和变更记录。Prompt和代码一起进Git,发布走灰度流程。这样做的直接好处是效果出了问题可以快速回滚到上一版,而不是手忙脚乱地翻Git记录去改代码里嵌着的字符串。
Prompt模板的另一个工程化要点是变量注入校验。动态注入的上下文、历史对话如果包含特殊字符或超长文本,会直接破坏模板格式。我遇到过用户问题里有个双大括号,导致整段模板渲染崩溃。后来所有Prompt模板的渲染层都加了转义和长度截断逻辑,超过上下文窗口的部分按策略截断或摘要压缩。
2.4 提示词效果评测:不要靠感觉,要靠指标
提示词工程最大的坑是“感觉变好了其实变差了”。模型生成有随机性,同一句话改了几个字,这个案例回答对了、下个案例可能就错了。如果只靠人工看十几个case来评估改动效果,一定会被带偏。
我们项目里建了一套持续的回归测试集,目前积累了800多条典型的“问题-预期行为”用例,分为正常提问、带干扰信息的提问、超出边界的问题、诱导性提问四大类。任何Prompt变更、模型版本变更、知识库更新,都要先跑一遍回归集。每条用例有自动化的断言逻辑,比如预期回答里必须包含某个关键词、不能包含某个敏感词、不能拒绝回答正常问题。
除了自动断言,还会随机抽20%的case做人工评估,从相关性、完整性、语气合理性三个维度打分。相关性和完整性是客观相关,语气合理性则更偏体验。这个过程坚持每周跑一轮,积累了完整的基线数据,才知道每次改动到底是提升了还是回退了。
3. 大模型NLP应用:检索增强、意图识别与知识处理
3.1 RAG链路设计:让模型拿证据说话
客服场景里最经典的落地是RAG,拿知识库文档的片段做证据,让大模型基于证据回答。这个链路看似简单,纸上画个“文档切块→向量化→检索→送给LLM”的流程图谁都会,但真实落地的时候,难点全在细节里。
文档解析是第一个被低估的难点。企业制度文档大多是PDF、Word、PPT,里面有大量表格、页眉页脚、多级列表。我们的文档里光一个差旅制度的表格就有十几种字段组合,直接切块喂给模型,模型会对着一张拆碎的表格胡说八道。
后期我们开发了一套专门的结构化解析管线:先用OCR加版面分析把物理文档转成结构化块,区分标题、正文、表格、页眉页脚;表格按行列结构保留原始信息,而不是拍平成纯文本;然后根据标题层级和段落语义做合并,产出有逻辑边界的chunk。每条chunk记录来源文档、页码、标题路径,这样生成答案的时候可以引用证据出处。
Chunk长度选择也是一个反复验证的过程。切小了对细节的召回更准确,但模型看不到完整的上下文,容易理解偏差;切大了上下文语义完整,但向量检索的噪声会变大、成本也更高。我们最终测试下来,中文场景下200到400字的块长度相对平衡,同时用带重叠的方式切块,上下文不中断。但不同类型文档的最佳块长度可能需要单独调,没有一站式的万金油参数。
检索环节踩过最大的坑是纯向量检索的语义盲区。比如用户问“员工离职前需要归还哪些物品”,文档里写的是“办理离职交接时须退还工牌、电脑、门禁卡”,语义上“归还”和“退还”很接近,但如果不做关键词和语义的双路召回,这个case很容易检索不到。我们的方案是ES的BM25关键词检索和向量召回并行,各自返回topN结果,再用RRF融合排序,召回率提升了大概15个百分点。
3.2 传统NLP和大模型怎么分工协作
很多做NLP的老兵对大模型有抗拒心理,觉得会被取代;很多做算法的新人又觉得传统NLP已经没用了。实际上在真实系统里,两者是互补关系。
传统NLP在大模型之外的主力职责是“确定性拦截”。敏感词过滤、垃圾信息识别、权限外话题引导,这些用规则和分类模型做,零成本、零幻觉风险,而且必须得是即时拦截,不能等大模型生成完你再审。我在链路里加了一个前置安全模块,内置了两层过滤:基于词库的第一层负责物理拦截,基于规则的分类器做二次判定,比如用户试图通过谐音、拆字、同音异形来绕过词库的时候拦下来,宁可多拦截也不放风险内容通过。
传统NLP还有一个用途是服务大模型。大模型有上下文长度限制,长对话不能全量喂进去。我们做了一级摘要模块,用NER抽取出对话里的关键实体,比如日期、数字、姓名、部门、事件词,再合成一段紧凑的结构化对话记录。这个阶段用BERT类小模型跑,速度很快,抽出来的结构化信息既可以用作检索条件,也可以作为Prompt的上下文补充,有效缓解了长对话的信息丢失问题。
3.3 数据标注、语料构建和模型选择
模型不是直接从网上下个权重就能用。企业场景里必须要有自己的标注数据。我们花了相当多的时间构建一套标准的数据集,包含2万条意图标注语料和5000条实体标注语料,全部由业务专家人工标注、质检员抽检后入库。
构建高质量语料库这件事的流程是:先确定标注规范和Schema,定义意图分类体系、实体类型体系、边界歧义处理原则;再分批次让标注人员标注,每人每天限定标注量保证质量;每隔一段时间用标注一致性做质检,我控制在90%以上;等语料库稳定后用于路由分类小模型的训练。
大模型选型上,我们测试过开源模型和商用API两套方案。商用API效果上限高、部署零成本,但数据要出域,很多企业数据合规这关就过不了。开源模型可以本地部署,数据不出内部网络,合规上省心很多。最后的取舍是分场景部署:核心业务场景用API效果更好的模型,因为准确率和体验优先,成本敏感且有合规要求的场景用本地部署的开源模型。
3.4 意图识别落地:从“分类”走向“理解+决策”
开头说了,意图识别是这类系统的基础能力。传统做法是训练一个多分类模型,比如把用户问题分为考勤、报销、招聘等20个类别。这个方案能做,但实际使用中用户提问太灵活,“我想请个假怎么弄”和“调休申请入口在哪”都指向请假流程,但字面差异巨大。必须靠BERT类模型加足够的训练样本才能稳定覆盖。
用上大模型之后,我们把“意图识别”升级成了“意图理解+决策”,不再只输出一个标签类别,而是输出一个结构化的JSON,包含意图、关键参数、需要的后续动作。比如用户问“下周一到周三请假”,系统解析出:意图是leave_apply,参数里有开始日期、结束日期、请假类型待确认,然后回复里自动反问“请问是年假还是事假?”。
在具体实现上,这个解析环节也从前置的规则模型升级成了基于大模型的结构化抽取。系统把所有候选意图和参数类型放在Prompt模板里,使用few-shot范式要求模型严格输出JSON。输出格式校验失败时再做一次重试,通过这种“解析+回退”的机制显著提升了整个会话流程的完成率。
4. AI对话产品的企业级细节:记忆、评估和部署
4.1 多轮对话的记忆管理是怎么设计的
AI对话产品最核心的难点是记忆管理,这是demo基本不碰、生产系统却极其头疼的问题。模型本身不维护任何跨轮记忆,每次对话都是无状态的,你得自己设计记忆存储方案。
如果我们简单地把整个历史消息都塞给模型,对话超过20轮时Prompt会爆炸。解决方法要分几层展开:
短期记忆保留最近两到三轮的完整原文,用于理解当前的指代关系,比如“那这个呢”里的“这个”就得靠最近几轮来消解。这几轮原样进入Prompt,不做删减。
长期记忆做增量摘要。每经过一定轮数后在后台调用一次摘要模型,把更早的对话压缩成结构化摘要,包括用户身份、已解决的问题、待办事项和偏好数据信息。这个摘要递归更新,作为下一轮对话的长期背景注入。为了控制成本,摘要只做一次增量更新,不整段重算。
业务记忆进数据库存永久记录。用户在对话里透露的关键信息,比如“我是销售部的小王”“我的工号是9527”,会通过信息抽取模块写入用户画像表。新会话开始的时候,先把画像数据拉出来作为背景信息,让模型“记得”老用户。
记忆管理做到位之后,体验提升非常明显。用户不用每次重新自我介绍,系统也避免了一遍遍重复确认用户部门的尴尬情况。
4.2 企业级AI对话产品的成功率评估体系
对话产品上线后最容易被老板问的问题是“这玩意儿到底好不好使?”如果你回答“还行吧”那这项目的技术话语权基本就没了。必须用指标说话。
我把整个对话会话拆成四个评估层级:
会话成功率:一个会话自然结束,用户的问题得到解决且没有转人工,定为成功。这个指标有一个半衰期的判断窗口,用户最后一条消息后超过一定时间没有新消息且不是以投诉或不满结尾,基本可以判定为已解决。
轮次效率:一个问题平均要通过多少轮对话解决。这个指标如果偏高,说明系统在反复澄清,大模型理解能力或者上下文管理有问题。跟人工客服平均轮数做差值分析,可以判断模型带给用户的额外成本到底有多少。
召回满意度:在对话结束后的抽样问卷中加上“问题是否得到解决”的二分评分,跟会话成功率的自动判断互为参考。
异常率:包括答非所问率、强行编造率、超时率、敏感答覆率。每个异常都要有单独的监控看板,异常率上升时系统自动告警。
上线第一个月我们看到的失败case里,有30%是知识库根本找不到答案导致系统说了“抱歉”,实际原因是知识库更新有滞后。后来做了知识库全量更新同步提示,答案质量监控也加入了知识覆盖率指标,哪类问题最容易兜不住就优先补齐知识库,闭环转起来了。
4.3 模型API接入和工程化架构
对话系统的工程架构看起来简单,实际上是一个多模块协作的复杂系统。外面接一个网关做限流、鉴权和灰度,接下来是会话管理模块、路由分发层、知识检索层、工具调用层、生成模块和审计模块。
工程上几个关键点要注意:
网关限流一定要做。大模型API的并发限制比传统API要敏感得多。上线初期人手不够,没做限流导致某个时段的高并发把模型服务打爆,整了个大事故。后来在每个前端请求入口做了基于令牌桶的动态限流。
超时和重试不能乱来。大模型接口的返回时长波动很大,正常情况下800毫秒到2秒,高峰期可能拖到4到5秒。前端设置的超时时间是6秒,但重试一定要设置“只重试一类错误,服务端限流类错误根据Retry-After头等待后再试,业务类错误直接失败不重试”的规则。否则一旦模型服务雪崩,重试流量会把后端打到瘫痪。
缓存策略是降本的关键。用户经常问同样的问题,比如“年假怎么算”“公积金比例是多少”,完全可以走结果缓存。我们用语义向量先算一遍相似度,高相似度的直接命中缓存答案。这个策略大概消化了30%的重复问题,高峰期成本大幅降低。
4.4 工具调用和Agent能力的边界
对话产品做到后面,客户的期望会从“回答问题”升级为“帮我办事”。这时就要引入工具调用,让模型能去调后端系统API,对生成的动作指令做工具编排。
在设计上,我们并没有直接输出“执行某个操作”的自由度,这是很危险的。系统做了三层钳制:
一是工具的权限划分。查询类工具放开给模型自由调用,写入类工具必须在规则里白名单校验并经过用户二次确认后才开放给模型。比如请假流程可以发起草单,但不能直接提交到审批流里,得由用户在小程序里点确认。
二是参数校验前置。模型生成的动作指令必须通过参数校验,日期格式、手机号格式、必填项完整性都要做正则级别的前置校验。校验不过就要求模型重新生成,而不是传给后端在业务系统里报错。
三是人工兜底。高安全等级的操作比如发工资条、删除员工信息、修改考勤记录,从根本上就不给模型暴露这样的工具。这跟“人的权力要关进笼子里”一个道理,系统权限面设计决定了大模型能干多少坏事。
Agent能力在这几年很火,但在企业日常场景里自动决策的边界要收得很窄。过度开放Agent的自由度,很容易变成“聪明但危险”的实习生,干成了九件事、捅了一个大篓子,成本抵不上收益。
5. 大模型部署与推理优化实战
5.1 模型成本到底怎么算
老板问的最多的问题是“上大模型到底要花多少钱”,这也是AI应用开发里最难回答的问题之一。企业的成本计算不是“一次调用多少钱”这么简单。
一次性成本包括GPU服务器采购或租用、模型license费用、数据工程的标注费用和标注人力。中长期成本包括推理电费和运维人力、模型效果迭代的微调和评测成本、知识库更新的内容审核人力、Prompt维护和工程质量成本。如果调用的是云端的API还要算数据出域合规的隐性成本。
我们的降本路径有几个方向。一是混合架构,小模型拦截简单问题;二是完善缓存,重复问题命中缓存不回源;三是模型分级,简单固定的问题走参数量较小、单位成本较低的本地模型,只有复杂推理才走大模型;四是选推理引擎时仔细做压测和调优,很多开源的推理框架通过优化能达到差不多的效果,但成本可以差好几倍。这些优化项叠加起来,折算后每个有效问题的综合成本降低了60%以上。
5.2 本地部署大模型的工程细节
本地部署大模型时,核心矛盾是GPU显存和模型规模的匹配。选模型要根据显存决定而不是全凭效果。
比如7B到14B的模型在消费级显卡或单张专业卡上可以跑int8或int4量化,大概11到15GB显存;70B的模型则需要多张卡并行,推理方案会复杂得多。量化本身是有损的,我们测试下来int8对效果影响在可接受范围,int4就得看具体任务了,数学推理类的任务退化会比较明显。
推理框架选型上,vLLM这类用PagedAttention做显存优化的方案是我们主力用的框架。部署时压测要做充分,我用并发请求压批量推理的吞吐量和首token延迟,还要测长文本输入场景下的缓存命中率。接着根据延迟要求去调整max_num_seqs、max_model_len和gpu_memory_utilization参数。实操中很多用户的运维排障习惯是只有服务挂了才去排查,这不对。模型的监控必须和传统服务同等重视,设置好观测指标,请求量和迟延都要持续盯。
5.3 模型微调,真的是大部分项目需要的解药吗
最近网上聊“微调”聊得很凶,几乎所有企业客户来问的第一句话就是“我们想微调一个模型”。我先说结论:大部分知识类场景用RAG就够了,用不着微调。因为RAG解决的是知识缺失问题,你自己干吧。
但这不代表微调没有用。微调真正的用武之地在三个地方:改变说话风格和领域语言习惯,提高特定任务的结构化输出稳定性,以及让模型学会新的思维范式。
我们项目里只做了小范围的领域微调实验:拿了一批高质量客服问答对和制度摘要对来训练。结论是效果提升有,但主要集中在输出格式的规整性和专业术语使用上,对于“答案对不对”这件事没有明显的提升。后来真正帮到业务的是数据分析和Prompt配合,能把结构搭清楚,Prompt就能干大部分活。
微调的门槛主要是训练数据质量和迭代成本,所以我给别人建议是:优先RAG,这条路能给你答案;第二阶段再考虑微调来优化语气和规范;等有足够的用户反馈数据了再上RLHF方向迭代。反着来的项目一般都折腾得比较多。
6. 项目上线后的踩坑记录和观测体系
这套系统上线半年多,踩过的坑比预想的多得多。我挑几个价值最大的记录下来,供后来人参考。
第一个大坑是流式输出的工程复杂度被严重低估。Demo阶段模型一句一句吐字体验很好,但到了生产环境,流式输出和WebSocket、消息队列、前端渲染、系统审计之间全是兼容性问题。流式片段无法做安全审计,敏感词系统上不了拦截,运维日志也没法记录完整的输出内容。我们被迫做了双轨方案:用户看到的是流式体验,底层同时调用非流式完整生成模块做记录留档,供审计和质检使用。成本和工程复杂度直接翻倍。建议新项目从第一天起就把流式场景一起设计进去,别做完再补。
第二个坑是评测集中没有覆盖多轮对话的上下文转移场景,导致模型版本升级时单轮效果全涨了,多轮场景却大量报错。原因是一些升级后的模型更倾向主动补充细节,反而误解了用户简短的转折性追问。后来评测集专门加了跨轮推理、指代消解、话题切换三类多轮场景,这种回归问题才被拦住。
第三个坑是对话系统的日志维度必须足够。最开始我们只记录用户问题和最终答案,问题排查时发现完全无法还原现场。后来补全了完整的trace链:检索召回段、重排分数、Prompt模板版本、模型参数配置、耗时分布、失败原因。现在每次线上问题都能通过trace快速定位是知识库的问题还是Prompt的问题还是模型的问题。这也是为什么说数据和日志是AI应用的重要资产。
表格总结一下几类地雷和应对方式,都是真金白银换来的:
| 问题类型 | 典型现象 | 根因 | 解决方式 |
|---|---|---|---|
| 输出不稳定 | 相同问题不同答案 | 模型自带随机性和Prompt结构脆弱 | 调低temperature参数并优化Prompt结构,强化格式约束 |
| 历史对话丢失 | 用户提到早些时候说过的信息系统不知道 | 记忆管理设计不完整 | 做短期窗口加增量式长期摘要 |
| 知识更新滞后 | 问新制度旧制度还出来答 | 知识库更新流程没建 | 检索层维护知识生效时间,失效文件自动排除 |
| 服务雪崩 | 高并发时大量超时和失败 | 网关限流与重试策略设计不当 | 限流加分级重试 |
| 安全绕过 | 用户通过角色扮演诱导系统越权 | 系统指令约束力不足 | 系统提示词固定角色和拒绝策略,用户输入和系统指令做隔离处理 |
运维方面,我们的监控数据汇集到一个实时面板上,每日推送效果报告。新增一个异常指标是不需要人天天盯着日志,模型会做一次分级,达到预警线的自动发通知给值班人。
对话系统想当生产环境的合格公民,绕不开工程体系的规范化。模型的智商反而是其中最稳定的一块,真正天天出问题的是周围那一圈工程细节,和传统系统开发没有本质区别。
7. 几点实操心得和最后一句想说的话
做到现在,如果要我对一位想踏入大模型应用开发的工程师说几句总结性的话,我会说的是:
首先要把心态从“调模型”转成“搭系统”。模型的API或者权重只是其中一个组件,而不是全部。真正有挑战的是让模型的行为在真实业务约束下稳定可控,围绕它构建数据管线、评估体系、权限体系、监控体系,这些环节投入的时间占比可能高达60%到70%。
其次是坚持用评测驱动迭代。无论是改Prompt、换模型版本还是微调,都要习惯先定义问题集和指标基线,再动手。AI内容生产链路天然存在不确定性,但整个系统的行为不应该也跟着不确定。回归测试能让每一次改动变成可验证的工程演进,而不是一次次盲目的试错。
然后是建议动手建一套属于自己的中小型项目,走通从业务定义、数据采集、模型选型、上线评估的完整闭环。学大模型应用开发最大的误区是把大部分时间花在学框架、学工具库上,而真正拉开差距的是对业务的理解能力和对工程细节的把控力。
据我个人经验,把AI应用开发当作“学一个新技术”来对待,往往学完就忘了;但当手里有一个真正要解决的问题时,整个链路的知识会非常牢固地长在自己身上。这也是我复盘这套项目时最想向你传递的体验:别急着追逐最新的框架或模型,先把一条实用的链路做穿,做透。走一遍,你的体感会完全不一样。