AI工程实践指南:从提示词工程到Agent开发与成本控制
发布时间:2026/10/1 18:22:29 锦皓数字建站

一直有同行在后台问我同一个问题AI工程到底从哪儿入手这个问题比怎么把模型跑起来难回答多了。模型跑起来是半小时的事从零开始把一个AI点子做成能扛住真实流量、控制得住成本、可评测可回退的系统才是真正的工程。这篇博文不讲花哨的算法推导就聊我在一线做AI工程实践踩过的坑和总结出的方法论覆盖提示词工程、Agent开发、工作流编排、多AI协作、模型部署与成本控制。适合三类人想从纯业务开发转AI应用开发的工程师、刚接触AI但不想只停留在会问两句对话模型阶段的同学、以及要带AI项目的技术负责人。看完你会发现AI工程不是一门玄学它和所有软件工程一样有清楚的路基和施工图。1. AI工程化到底在解决什么问题1.1 从会调API到能交付系统的跨越很多人觉得AI应用开发门槛低不就是把API封装一下、写个提示词把上下文塞进去吗我第一次做AI项目时也这么想结果第一个上了生产的项目就给我上了一课。demo阶段一切都很美好模型输出怎么调怎么像样等真上了线问题全冒出来了用户提问的方式千奇百怪知识库内容超出预期范围模型偶尔给出格式错乱的结果高峰期的并发把模型服务打穿月底账单一看光在重复请求上花的Token就够买好几顿下午茶。这个经历让我想明白一件事AI工程和做饭是两回事。会做一道拿手菜不等于能开一家餐厅。开餐厅要考虑供应链、菜品标准化、食客投诉怎么处理、后厨高峰期的出餐速度。AI工程也一样——模型只是厨子你还需要一整套数据管线、服务框架、质量控制机制和成本核算表。所谓AI工程化本质上是把模型偶尔能给出惊人输出变成系统持续可靠地交付价值。我现在的拆法是五层数据准备与检索层、模型接入与路由层、业务编排与Agent层、评测与监控层、成本与安全治理层。每一层都不依赖特别深的算法功底但每一层都决定系统能不能活过生产环境的考验。1.2 零基础构建AI工程能力的四条主线如果让我把AI工程的能力地图压缩成四句话我会这样概括。第一条线是提示词与上下文工程。这是你和模型打交道的语言。它不解决模型能力上限的问题但决定了同一个模型在你手里能发挥出多少水平。很多人不重视这层觉得把问题丢给模型不就行了他们的生产事故往往就是从这里开始的。第二条线是Agent开发与工具调用。模型不再是只能回复消息的对话框而是能自己规划步骤、调用外部工具、根据工具返回的结果继续迭代的数字员工。这条线涉及结构化输出、函数调用、执行循环、记忆管理等工程点也是目前业界投入最多、迭代最快的地方。第三条线是AI辅助编程与研发提效。在写业务代码之前先用AI把自己的日常开发武装起来——自动生成单元测试、辅助代码审查、快速搭出原型、批量做数据清洗。磨刀不误砍柴工这条线短期收益最大也最容易建立信心。第四条线是部署、评测与成本。让系统在真实流量下可靠地运转每次改动都有回归数据兜底让Token消耗不成为吞掉利润的黑洞。我见过提示词写得极其精细但部署后频繁超时的项目也见过部署架构很扎实但Agent行为完全不可控的产品这两类失败都源于没有把四条线同时拉起来。我的建议很简单不要把这些线当作学期制的课程按顺序学而应该当作四个必须同时长高的维度。挑一个小到能在两周内交付的真实场景比如公司内部的工单智能分诊或者自动生成晨会摘要然后把四条线在这个场景里各走一遍比啃十本教材都有用。2. 地基提示词工程与上下文工程2.1 提示词工程不只是写指令提示词工程的名字很容易让人误解以为它就是把需求描述得更清楚一点。但真正把它当成工程来做的时候核心是结构化约束。我自己日常用的提示词模板几乎都是五段式结构角色、任务、约束、输出格式、示例。角色负责框定回答的出发点约束负责划清红线输出格式负责保证下游解析顺畅示例负责让模型模仿到一个可预期的格式。任务描述放在中间它是最不重要的一项——因为模型不缺理解能力缺的是把理解落到既定格式里的纪律感。我拿一个真实案例说明。最早我让模型分类客服工单提示词只写了一句请帮我判断这条工单属于哪个类型。结果模型经常多输出一句解释、一个感叹号甚至把它自己的推理过程也吐出来下游程序解析得不胜其烦。我把它改成五段式之后同样的模型输出立刻干净多了。这里补充一下为什么要给输出格式的示例。我把大模型的输出理解成概率上的续写你给它越具体的范例它的续写空间就被收得越窄出错率自然下降。实操里一个常见误区是试图用一条提示词解决所有边界情况我的经验是不要指望提示词面面俱到用3到5个高质量示例覆盖代表性场景远比写一大段注意不要XXX管用。2.2 上下文工程比提示词更值得投入精力提示词只是上下文工程最表层的一小块。真正决定一个AI产品上限的是你怎么管理发给模型的上下文窗口。我第一次做知识库问答时每次请求都把用户问题相关的前十篇文档全文塞进去觉得多多益善。结果实测发现塞太多内容之后模型反而答得更差——上下文窗口被无关段落填满模型在长文本里迷失被中间一段和问题弱相关的内容带偏还经常漏掉真正重要的信息。后来我才明白上下文不是越长越好而是越精确越好。现在的做法是给上下文做预算管理。系统提示词占多少Token、历史对话占多少、知识库检索结果占多少、工具返回占多少每一部分在上线前都要有预算。检索部分尤其要注意向量数据库捞回来的内容要用重排序模型或简单的关键词加权再筛一遍把最相关的两到三条片段放进上下文而不是无脑合并。成本上这点也不能忽视。每一次请求都会重复发送系统提示词和知识库片段这部分Token是运营成本的大头。我简单算过一笔账一个日请求量10万次的中型应用假设每次请求平均输入3000 Token、输出500 Token按目前主流大型模型的API价格估算一个月的模型调用成本大概在6到12万人民币的量级。如果你的知识库片段和系统提示词能压缩一半省下的钱就相当可观。2.3 三步调优法把提示词改出可复现的结果提示词调优最忌讳的是感觉流。有人改了一个词看几条新结果觉得不错就宣布优化成功——这在demo阶段没问题生产环境会反噬。我自己踩过几次坑之后整理出一个固定流程现在团队里也这样执行。第一步准备一个固定的测试集至少五十条覆盖典型场景的输入每一条记录当前的输出表现当基线。第二步单变量改动每次只改提示词里的一处跑完整个测试集对比基线的通过率、格式错误率和空回复率。第三步不看单条结果的好坏而是看错误聚类——如果所有失败案例都集中在某个输入类型上就针对那个类型补示例和约束而不是盲目改措辞。这套流程看着简单却是我见过最容易被人跳过但最值钱的工程习惯。它最大的价值不是让你找到最好的提示词而是让你知道每一次修改到底带来了什么变化这样当模型底层升级或者业务规则调整时你能快速评估影响而不是对着模糊的记忆重新调一遍。3. Agent开发从单轮到多智能体协作3.1 一个最小可用Agent的架构拆解讲Agent开发之前先明确我们讨论的东西是什么。一个Agent和一个带提示词的单轮问答的根本区别在于Agent有执行循环它能调用外部工具再根据工具返回的结果决定下一步动作直到完成整个任务。听起来很玄但拆开看就是一个非常经典的管道结构。以我自己做过的一个周报分析Agent为例它的循环大致是这样用户丢进来一段原始数据Agent先判断要回答这个问题需要哪些信息如果信息不在已有上下文里它输出一个结构化的函数调用请求比如查询订单表、按日期聚合销售额工程框架接收这个请求先做参数校验再真正执行数据库查询把查询结果作为新的上下文片段回传给模型模型拿到查询结果后再生成分析结论。循环往复直到满足停止条件。这里面有一个工程本质很多人会误解模型并不会直接操作外部系统它只是输出一段结构化的函数调用意图通常是一段标明函数名和参数的JSON真正去执行的是你的工程代码。那段JSON可能正确也可能错误所以框架侧必须做校验、超时控制和错误处理。我习惯在Agent循环上设置最大迭代轮数比如八轮防止模型在一个错误方向上来回打转。另一个关键点是记忆管理。短期记忆就是当前上下文的对话记录长期记忆则需要外挂存储比如把用户偏好或历史结论存进向量库需要时检索回来。别试图把长期记忆全塞给模型它会超出窗口也会带来成本爆炸。3.2 多智能体协作的现实路径单个Agent能解决的任务边界有限所以很多人会自然想到多智能体协作。这里的现实是多Agent不是什么银弹它只是在单Agent处理不好复杂长链路任务时的工程选择。为什么拆成多个因为一个大模型在一条超长的复杂指令下指令跟随能力和专注度都会下降一旦拆成多个单一职责的Agent每个Agent只负责一段聚焦任务模型只需要理解自己那一段失败率会显著下降。我用的比较多的是两种模式。第一种是管道式。比如内容生产流水线选题Agent负责定框架改写Agent负责素材重组润色Agent负责语言表达最后由审核Agent做一致性检查。每个阶段输入输出格式固定像工厂流水线一样一节一节过。这种模式适合任务链清晰、每个环节都有明确文档产物的场景。第二种是编排式。一个主管Agent先做任务规划把大任务拆解成可并行的小任务分派给多个执行Agent执行结果汇总回来再由主管Agent统一整理。适合那种涉及多步骤、多数据源的项目型任务。这里要特别注意裁决机制的设计——多个Agent给出相反结论时你不能让它们互相推诿需要一个评判Agent或规则投票给出最终决定否则很容易出现多智能体互相吹捧的尴尬局面。我的经验是多智能体不是越多越好。每多一个Agent就多一层调用链、多一份失败的可能、多一份Token开销。大多数场景三到五个内部分工就足够了更多往往是为了演示好看而做的PPT架构。3.3 工具选型与API调用的坑Agent再聪明最终也要靠工具来感知世界和改造世界。工具定义写得好不好直接决定Agent能不能落地。我在工具定义上最常踩的坑有三个。第一个是描述太笼统。比如get_order_info只写了获取订单信息模型不知道什么情况下该用、参数怎么填。正确做法是给每个工具写清楚用途是什么、参数分别代表什么、有没有默认值、返回什么结构。更省事的是直接在工具定义里塞两三个调用示例模型照葫芦画瓢的成功率会高很多。第二个坑是错误处理缺失。工具执行时报错框架直接把异常抛回给模型模型看到一堆英文堆栈就懵了。正确做法是把错误信息改写成模型能理解的文字比如用户编号不存在请确认参数或改用按手机号查询模型就能立即调整策略而不是反复撞墙。加一层JSON Schema校验同样重要函数调用参数不合规时把校验错误回传给模型让它重来实战中能救回不少失败的调用。第三个坑也是我反复叮嘱团队的Agent能调用的工具权限要尽量小。数据查询工具永远只读涉及写操作的工具要做二次确认或只允许白名单范围。我在一个项目里见过Agent因为幻觉而调用了删除类工具虽然没发生实际损失但那次之后所有写操作都必须经过人工确认。这不是技术难度问题是工程底线问题。4. AI工作流与多模型协同4.1 工作流编排把AI编进业务流程如果说Agent是单个的数字员工那么工作流就是他们所在的那条流水线和规章制度。我在实际项目里常用五种基础模式路由、并行、合并、循环、人工审批。用一张表列出来比较清晰。模式适用场景示例路由按输入类型分流到不同处理逻辑用户问题分类后进入不同Agent并行互不依赖的多个任务同时执行同时查知识库、订单、物流状态合并把多个来源的结果汇总成一个输出拼接检索结果和业务数据生成回答循环重复某一步直到达成条件内容生成后反复校验格式人工审批高风险决策必须由人来确认退款、对外承诺、批量操作这五种模式在一个真实项目里往往同时出现。我做过一个客服工单分诊系统用户提交工单后路由节点先判断工单属于咨询、投诉还是退款随后并行节点同时去查知识库、订单系统和历史工单查完的结果在一个合并节点汇总成回答草稿同时有一个情绪识别节点如果识别到用户情绪激烈工作流就把这条工单转入人工审批队列否则直接发出回复。这里最想强调的其实是人工审批这个节点。很多人觉得AI系统应该全自动但涉及钱、法律、医疗、对外承诺的高风险环节人工审批不仅是制度上的保险也是整个系统的容错兜底。我的看法是AI负责把效率和初稿做到极致人负责把最后那一关守住这是成本最低的稳健方案。工程实现上我不建议把整套业务流程当成一个大提示词丢给模型让它全流程生成而是把它拆成小步骤每个步骤的输入输出都定义清楚。每一步都可以单独观测、单独替换、单独评测出了一件事故你能精确定位到哪一环。4.2 多AI协作的工程要点多模型协作不是每家厂商的大模型各来一遍的堆砌而是根据任务难度和成本做组合。这里有一个很简单的原则简单任务不要用强模型。我做过一个内容分类需求起初所有请求都走最强模型效果确实好账单也确实刺激。后来我在前面加了一个路由逻辑短的、规则清晰的文本直接给便宜的小模型分类拿不准的才转发到强模型。同样的任务成本下降了一大截准确率几乎没有变化。这种分级诊疗思路是AI系统控成本的常规操作。组合多模型时输出校验是硬要求。你可以事先定义每个节点输出的固定格式用JSON Schema严格校验。模型偶尔会不听指令输出乱七八糟的东西校验不通过时自动回退到备用模型或者规则引擎兜底。我在生产里同时挂了三个模型做互相备份主模型不可用时自动切换切换的逻辑在网关层完成对业务侧完全透明。还有一个工程细节值得单独说全链路追踪。多模型协作最痛苦的事是用户说昨天还能用今天怎么全乱了你却不知道乱在哪一环。现在我的每个请求都会附带一个trace_id链路里每个模型的输入输出Token数、延迟、错误信息都会记录到一个日志表里。排查问题时按trace_id一拉整个过程清清楚楚。这也是常规后端服务里早就养成的习惯但很容易在AI工程里被忽略因为大家太关注模型输出本身忘了它也该被当成一个普通服务来治理。5. 工程落地从原型到生产环境5.1 模型部署与服务化原型阶段直接调API很正常但到了生产环境模型部署和服务化就不能再随性了。先分清三种形态的取舍这是一切讨论的前提。在线推理要求低延迟高并发适合面向用户交互的场景成本最高批处理可以慢慢跑适合定时任务和离线分析单价便宜不少边缘部署和私有化部署适合数据不能出内网或者监管要求严格的场景但要自备算力。三者的选择并不取决于哪个技术更先进而取决于你的业务和合规约束。在线推理我踩过的坑主要集中在一点模型服务变成了整个系统的瓶颈。后来我陆续做了三件事。一是把模型版本固定下来每次升级都要重新跑回归评测再灰度放量。二是在模型前面加一个API适配层让业务代码不直接依赖某个具体模型的接口细节换模型的时候改配置就行。三是用量化加动态批处理的组合把单卡吞吐提了好几倍。如果你用的是开放权重模型现在有专门的推理框架能同时搞定量化、批处理、缓存这些优化直接拿来用比自己从头写推理代码快得多。还有一个容易被忽视的点即使是云服务的模型API也建议套一个网关层。网关负责统一鉴权、日志记录、模型切换和流量控制。这样将来模型价格变动、厂商服务调整切换都是配置级的事不需要动业务代码。5.2 评测没有评测集等于盲人开车AI生产环境里最容易犯的错就是改了提示词之后拿几条样例试一下觉得没问题就上线。除非你的系统是内部自用的玩具否则这种做法会给你埋一颗剧烈的雷。我不止一次见过生产系统因为一次感觉更好的提示词改动输出质量整体滑坡下游消费者怨声载道却找不到任何能证明它变差了的数据。所以我的团队从第一天起就维护三套评测集。回归集固定核心历史用例主要是防止改动让旧场景变差对抗集收集那些强边界的刁钻输入比如空输入、超长输入、诱导性提问、格式极度不规范的文本金标集由业务专家标注正确答案用来量化准确率。每次改动模型、提示词或Agent逻辑都要在本地跑一遍这三套集对照通过率和错误率再决定要不要上线。评测方式也要分层。最底层的单点输出评测用字符串匹配、语义相似度或大模型评委打分来判断单个输出好不好上一层是任务完成率评测比如Agent最终有没有完成目标而不是只看单轮回答最上层是人工抽检每周随机抽取一定比例的线上真实输出请业务侧的人打标。线上还要盯空回复率、工具调用失败率、用户重试率这些间接指标。它们不直接说明模型质量但能第一时间暴露接错参数、服务不可控、格式崩坏这类低级事故。这套体系看起来繁琐但它的价值正在于把模型表现从感觉变成数据。我常说模型升级和提示词改动带来的性能波动是常态没有评测集做防线团队就只能靠灵感和运气工作。5.3 成本控制与安全护栏成本控制是每个AI工程上线后绕不开的话题。先看Token成本的计算公式其实不复杂总成本等于请求次数乘以每千Token单价再乘以平均Token消耗。其中输入Token价格通常只有输出的五分之一到十分之一所以减少输入Token往往比压输出更划算。缓存也是省钱利器如果系统提示词和知识库内容有大量重复前缀缓存能省掉一大块重复计费。我见过最惊悚的成本事故是Agent循环失控模型在一个死循环里反复调用工具一次请求产生了上百轮调用Token消耗爆炸式增长。解决办法很简单给每个Agent和每个工作流设置明确的调用轮数上限同时做预算告警——比如当天模型成本超过预估的1.5倍就立刻通知负责人。上线第一天就做成本看板比事后看月度账单抢在爆炸前拦截要便宜太多。安全护栏我分层来搭。输入侧做内容校验拦截明显的注入指令和异常格式模型侧用系统提示词锁住行为边界明确哪些内容不回应、哪些步骤必须停下来请示输出侧做格式校验和内容拦截防止模型产生不可接受的输出。再往上就是权限设计了AI系统能访问什么数据、能调用哪些工具、能触发什么操作全部按最小权限原则来。数据库只给只读账号写操作必须走人工审批线上操作全部留审计日志。这些在demo阶段显得麻烦但真出了事故它们就是你的复盘材料和保险单。6. 工具链与90天学习路径6.1 一套可快速上手的工具组合很多朋友让我推荐AI工程工具链我的首选原则只有一个用最少的工具、最快跑通全链路再逐步迭代。一个新项目你不需要第一天就上一堆编排框架。日常开发阶段我非常推荐先把AI编程辅助用起来。现在这类工具已经从简单的代码补全进化到了能理解整个项目上下文、自动生成单元测试、辅助代码审查的阶段。业界现在有个说法叫harness engineering大意是让AI Agent在研发流程里承担一部分重复性劳动成为你写代码时的模架。我的实测体会是它最值钱的场景不是让AI帮你写业务逻辑而是自动生成单元测试、批量做重构和辅助审查这些工作省下来的时间非常可观交互成本也低。原型阶段用普通的Python开发环境加上各家模型SDK就够了。如果项目里涉及Agent编排可以先用支持图形化流程设计的低代码平台把业务逻辑跑通成本低、迭代快。等业务稳定了、团队也对链路理解了再视需要往代码侧的图编排框架迁移。千万不要反过来一上来就搭一个复杂的编排系统配了四五个角色Agent结果连最基本的业务流程都没验证过这类项目我见过好多半途烂尾的。模型接入统一走一个API适配层。别让业务代码直接写死某一家模型的接口而是定义统一的请求和返回结构底层可以接任何一家提供方这样将来换模型、做模型对比、故障切换都是配置的事而不是重构的事。6.2 从零到能交付的90天学习路线如果让我给一个完全零基础、但有一定编程背景的人设计一个学习计划我会把周期压到90天而且每天的任务必须产出能看见的东西。前30天只做三件事理解大模型的基本原理和工作方式系统掌握结构化提示词的写法建好自己的第一个测试集。每天选一个真实场景写一个提示词模板比如商品描述、邮件分类、会议纪要然后记录模型输出对照改进。这个阶段的产出是十个能持续复用的提示词模板和一个覆盖核心场景的测评集。它看起来很基础但它是后面所有工程判断的参照物。第31到60天进入Agent和工作流阶段。把前30天积累的某个场景改造成一个能调用工具的Agent再给它接上工作流比如在生成结果前自动检索知识库在发送前加入工审批节点。这阶段的产出是一个带工具调用、有人工确认、能完成完整任务的系统原型。第61到90天是落地冲刺把原型部署到生产环境补上评测集、监控大盘和成本看板处理并发、超时、错误重试等工程细节。这阶段结束时你应该有一个真实用户在用、有监控数据、有成本账单的系统。哪怕它是内部工具哪怕它功能简陋全链路跑通就是最大的里程碑。给我印象最深的心态是不要等学完再动手。AI工程最前沿的东西每天都在变你永远等不来一个都学会的时刻。把第一个版本做得丑一点没关系关键是让数据跑起来让问题暴露出来然后一个坑一个坑地去填。7. 常见问题排查实录7.1 模型输出忽好忽坏同一个问题答案总在变这是问得最多的问题。现象很典型同样的提示词、同样的输入这次给出一个靠谱答案下次就给出格式错误甚至内容歪楼的结果。造成这个现象的原因通常有三个温度参数设得太高、提示词本身不够结构化、上下文顺序不固定。排查顺序我也固定了。先把温度降到0.3以下这个参数控制随机性值越大输出越发散生产场景没有理由调到0.7以上再用输出格式约束比如强制JSON Schema、固定模板格式错误率立刻下来最后检查上下文组装顺序是否每次都一致系统提示词、历史、知识库、工具结果这几个区块的先后顺序发生变化模型对信息的关注权重也会变。实测下来前两步能解决大部分忽好忽坏问题剩下的小部分往往来自模型版本变化那就需要评测集来兜底了。7.2 Agent调用工具频繁失败参数总是编造的Agent工具调用失败最让人抓狂因为模型会一本正经地编造参数。有一次它调用查询接口把用户ID传成了一个完全不存在的大数字而它对自己的错误毫无察觉。排查下来主要问题有三个。工具描述不到位模型根本不知道这个工具是干什么的、触发条件是什么缺少参数示例模型不知道该传什么值工具返回的错误信息太晦涩模型看到报错直接放弃或反复用同一参数重试。解决方案我前面说过工具描述写清楚用途和触发条件、每个工具补两三个调用示例、错误信息改写成模型能看懂的提示再加一层JSON Schema校验解析失败时主动把错误回传模型让它换参数重试。这些都做完工具调用失败率能降一个数量级亲测有效。7.3 月底账单吓人成本完全失控成本超支是生产事故里最让人肉疼的一种。我见过最典型的三种场景Agent循环没有退出条件一次请求产生几十轮调用长上下文反复发送知识库片段和系统提示词每次都全量提交重试逻辑没有上限故障时疯狂重试把账单推到山高。对策是一套组合拳。给Agent和工作流设置严格的调用轮数上限默认五到八轮实现上下文裁剪历史超过阈值就做摘要压缩知识库只取最相关的片段重试逻辑加上限和退避策略。更重要的是把成本看板做在前头按天或者按小时统计单用户成本、单任务成本设置异常告警。成本问题的麻烦在于它爆发后往往已经晚了所以预防才是真正的解药。上线第一天就盯着成本比月底面对账单发呆强一百倍。写到这里我再分享一点个人体会收尾。我从最早只会写提示词到现在能带着团队把带Agent的完整系统交付给运维最大的转折点不是学会了某个框架而是想通了一件事AI工程的第一性原理和传统软件工程没有区别——可观测、可控制、可回退、成本可控模型只是系统里一个有点特殊的组件。如果你现在正准备从零开始我的建议只有一条挑一个特别小、特别真实的需求两周内把它做成一个能跑通全链路的丑系统然后让真实用户用起来。这个过程中你会碰到的所有意外才是这本只讲框架的博文给不了你的东西。哦对了还有一句遇到问题的时候把自己排查的整个过程记录下来发到社区里你会发现讲清楚本身就是最好的复盘方式。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。