ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零搭建AI工程:模型选型、提示词、评测与Agent实战

从零搭建AI工程:模型选型、提示词、评测与Agent实战 “ai-engineering-from-scratch”这组词我是越看越有共鸣。在一线做AI应用这几年我见过太多团队把“会调模型接口”当成“具备AI工程能力”结果系统一上线就出问题输出格式说变就变、延迟忽高忽低、换个模型小版本直接全线回归、线上告警都不知道该看哪个指标。真正的AI工程是把模型能力从“能回答”打磨成“稳定、可靠、可评测、可迭代”的产品能力这中间的距离比大多数人想象得要远得多。这篇文章就围绕从零落地AI工程的主线聊聊我从模型选型、数据构建、提示词工程到Agent编排、评测回归的一整套实践路径。内容适合准备转型AI的后端工程师、正在立项的技术负责人以及刚接手AI项目的开发者参考既有原理层面的拆解也有可以直接落地的代码和步骤。1. AI工程到底在解决什么问题1.1 从“模型可用”到“系统可靠”之间的距离很多人在第一次接触大模型时都有过这种体验在对话框里随便问几句感觉模型很聪明于是立刻觉得什么都能做。可真到要做系统情况完全不一样了。我拿自己做过的客服工单项目举个例子。你让模型“对工单进行分类”在Playground里怎么问都能得到正确结果可一旦要接进生产环境你立刻会发现你需要的根本不是一个“会说话的模型”而是一个“听话的接口”。生产系统对接口的要求是分类结果必须从指定的类别集合里选不能自己发明新分类如果它无法判断必须返回一个unknown/其他而不是硬编一个答案分类和摘要要分成两个字段返回接口要在800毫秒内返回结果每万次调用的成本不能超过某个预算。这一堆约束条件模型能力只是其中一环真正决定系统能不能上线的是工程侧的设计。我习惯用一个比喻来理解这件事模型能力是发动机的极限马力工程体系是底盘、悬挂、刹车和方向盘。马力再大没有可靠的控制系统这车就只配在赛道上试跑根本不能上公路。AI工程的核心工作就是给模型这匹野马装上约束和兜底机制让它变成一个可以被业务系统信任的组件。这也是“from scratch”的关键含义不是从“调用一次模型”起步而是从“如何让模型稳定地在系统里工作”起步。系统里一个看似简单的分类功能背后会牵扯到输出约束、错误重试、字段校验、日志追踪、成本控制、回归评测这一整条链路任何一个环节偷懒后期都要付出更大的代价。1.2 AI工程与普通软件工程的三个本质差异做AI工程和做传统后端开发表面上看都是写代码、调接口、部署上线但骨子里的思维方式有非常明显的差异。这三个差异如果不在一开始就想清楚后面写代码的时候会很别扭。第一个差异是输出的不确定性。传统函数是确定性的同一个输入函数返回永远相同。大模型是概率采样同一个Prompt同一套参数两次结果可能不一样。这个特性决定了我们不能用“单元测试期望值等于实际值”的方式来写测试而是需要用结构化约束、后处理校验、多次采样投票等手段把概率性的输出拉回到确定性轨道上来。第二个差异是需求规格的模糊性。传统软件的需求是可以明确描述的输入一个订单号返回订单状态。但AI需求往往很难定义“完全正确”。比如“写一个30字以内的客服工单摘要”什么叫好摘要不同人标准不一样。这带来一个连锁反应代码review、测试用例、验收标准都得换一种思路必须引入“样本集人工标注评分指标”这套机制来锚定质量。第三个差异是错误模式的复杂度。传统系统的错误是明确的异常超时、数据库连接失败、参数非法。大模型的错误往往“表面上完全正常”但语义上已经跑偏了。举个典型例子让模型从工单里提取退款金额它返回了“用户希望退款”这样一句人话格式完美、语法通顺但完全不是你要的结构化字段。这种错误传统断言根本抓不住只能靠字段校验和评测集来识别。这三个本质差异可以总结成一张对比表维度传统软件工程AI工程输出状态确定性可精确断言概率性需要约束与校验需求规格输入输出可明确描述正确性依赖标注与评分错误类型明确的异常语义层面的隐性错误测试方式单元测试、集成测试黄金样本集指标评分回归迭代方式代码变更可精确控制模型/Prompt变更需重新评测1.3 从零开始的正确技术路线图很多团队启动AI项目时第一反应是“选个框架”“搭个平台”“买套Agent编排工具”我建议千万别这么干。从零开始最理性的路线是先做一个你能看得见摸得着的最小闭环然后再逐步扩展。我实际跑下来的顺序是这样的第一步明确一个具体场景比如“客服工单自动分类”场景要窄到你能说清楚输入是什么、输出是什么。第二步不写代码先人工在模型对话框里试跑20到30条真实输入确认这个任务模型确实能干这一步能省下后面大量返工成本。第三步把试跑时用过的样本整理成最初的评测集每一条都人工标注好标准答案。第四步写第一版Prompt然后用程序调用模型把结果和标准答案做对比。第五步根据对比结果调整Prompt直到基线分数达到心理预期。第六步再加缓存、重试、监控这些工程化手段最后才考虑Agent化、多模型路由这些高阶玩法。这个顺序之所以有效是因为每一步都有明确的产出物并且上一步是下一步的前提。你先有评测集才能谈“提示词好不好”你先有稳定基线才能判断Agent编排是变好还是变坏。从零开始的重点不是“少走弯路”而是“每一步都走得有依据”这也是我在这篇文章里反复强调的理念。2. 从零搭建AI应用的五个核心环节2.1 需求拆解与方案选型先定边界再谈模型接到一个AI需求第一件事不是选模型而是判断这个任务到底适不适合用大模型做。我有一套快速的筛分逻辑凡是涉及语义理解、内容生成、复杂意图识别、跨文档归纳的任务大模型有明显优势凡是精确计算、固定逻辑判断、强事务性操作的任务传统代码更可靠。这里有个很容易犯的错把什么都往Agent上靠。比如“自动处理退款”听起来很AI但退款涉及支付系统、风控规则、库存状态这种强流程、强约束的场景更适合用传统工作流做骨架只在“识别用户意图”这个环节接入模型。我见过太多团队把简单事情复杂化最后Agent没做好基础流程也乱成一团。需求拆解的本质是把任务切分成“适合模型的”和“适合代码的”两部分然后让各干各的。确定任务确实适合LLM之后再谈模型选型。选型必须同时看四个维度能力、延迟、成本、可控性。能力最强的不一定是最优解尤其对To B系统来说延迟和成本往往是更刚性的约束。我的经验是先定一个“够用”的模型作为基线比如大多数文本分类任务用小型模型就够了不要一上来就上超大杯等评测集跑出结果发现确实是能力瓶颈再升级也不迟。模型选型还涉及一个容易被忽略的点输出格式的可控性。有些模型对JSON Schema这种结构化输出的支持很弱或者对工具调用的实现不规范这在选型阶段就要测出来。我的建议是选型时不做“聊天测试”而是直接写一个带结构化输出要求的程序化调用跑50条样本看格式成功率和字段正确率这两个数字才真正决定系统好不好写。2.2 数据层工程清洗、构造与评估集的建立数据是AI工程里最不起眼但最要命的部分。很多人觉得“数据工程”是训练模型才需要做的事做应用不需要这个认识是错的。哪怕你只是调用现成模型API数据也至少在两个层面影响你的系统输入数据的质量决定模型输出的质量评估数据的质量决定你迭代方向的判断质量。先说输入侧的数据清洗。真实的业务输入非常脏我见过工单系统里同一个字段存着三种编码格式有用户把订单号写成“123456/ 789”还有填了完整家庭住址的“咨询”工单。这些脏数据如果不做预处理模型会被带偏。我的做法是进入模型前做一轮标准化清洗比如统一编码、去除明显噪声、把长文本截断到模型可处理的范围、对敏感信息做脱敏。然后是评估数据的构造这是整个数据工程里最值得投入的部分。评估集不是随便找几条数据就行的它要能代表真实流量的分布。我当时做客服工单分类时从历史工单里按类型分层抽了100条人工标注了三个字段正确分类、是否紧急、理想摘要。这100条数据就成了后面所有迭代的“裁判”任何Prompt改动、模型升级都要在这100条上面重新跑一遍。这里有一条经验想强调评估集一定要单独保存、独立管理绝对不能让评估样本混进日常调试数据里。否则你调Prompt的时候在拿评估集当开发集用调的次数多了Prompt会“背题”评测分数虚高一上线面对真实数据就露馅。我自己的做法是评估集锁库只有少数人能改开发时另建一套不重合的开发样例。2.3 提示词与上下文工程讲究质量的细节提示词工程说到底是把“模型能力”转化成“业务需求”的那层翻译逻辑。它的核心不是吟唱华丽的Prompt模板而是要把任务边界、输出格式、约束条件、示例这四件事交代清楚。我见过很多人写Prompt只有一句话然后抱怨模型不听话实际上是没说清规则。我的Prompt通用结构是这样先给角色定位再说任务目标然后列输出格式和硬性约束最后给一到两个示例。用客服工单分类来举例角色是“客服工单处理助手”任务是“分类和摘要”输出格式是“JSON对象包含category、summary、urgent字段”约束是“分类只能从给定集合选取无法判断时返回其他”示例是“用户说……你应该输出……”。这样一套下来模型的表现会比只有一句“帮我把工单分类”稳定得多。少样本示例few-shot是提示词工程里性价比最高的手段。一个构造得当的示例比你在Prompt里反复强调“要准确要准确”有用得多。示例的选择也有讲究不需要选最复杂的而是选最典型的最好能覆盖边缘情况比如“无法判断分类”的示例。这样模型学到的是决策边界而不只是答案格式。结构化输出是工程侧必须重视的一环。现在主流模型都支持JSON模式或函数调用我的建议是能走结构化就尽量走结构化别让模型返回自由文本然后靠正则去解析。自由文本解析看起来灵活实际上是个无底洞你永远不知道下一个奇葩格式从哪儿冒出来。结构化输出配合字段校验至少能保证88%以上的格式成功率剩下12%再靠重试兜底。温度参数的设置也常被忽略。做分类、抽取这类确定性任务温度直接设0做创意写作才考虑调高。我见过有人分类任务温度调到0.8结果同一个工单每次分类都不一样这种问题其实跟模型能力没关系纯粹是参数没调对。还有上下文长度模型输入看起来可以有几万token但真正有效的注意力是有限的。我的原则是只把和当前任务相关的信息放进上下文不相关的历史数据一律剪掉或摘要化而不是无脑塞进去。2.4 推理层设计延迟、成本与稳定性的取舍模型调用只是系统中的一个组件真正让系统健壮的是推理层设计。我把推理层理解成在“模型能力”和“业务接口”之间加的一层服务治理它管延迟、管重试、管成本、管降级。延迟管理首先要区分同步和异步。用户界面上等着出结果的比如在线客服回复摘要要设计成同步接口并且要严格控制模型响应时间后台批量的任务比如历史工单批量标签化走异步队列就合适慢一点没关系重点是不能让单条失败拖垮整个批处理。选模型的时候也要同步看延迟预算比如业务要求800ms选模型就要用能压进这个指标的型号再考虑加语义缓存来进一步提速。重试与熔断是AI系统最容易欠缺的部分。模型接口偶尔会超时或返回异常这不是稀奇事关键是你怎么处理。我的建议是设计带幂等语义的重试请求失败后最多重试2次退避间隔逐步拉长如果连续失败超过阈值触发熔断走预设的降级方案比如返回一个“处理失败转人工”的兜底结果。这里一定要注意重试的是“幂等操作”那种每次调用会触发外部副作用比如扣费通知的操作重试前一定要确认是否已经执行过。成本控制是另一个绕不开的话题。Token费用不是事后看账单才管的而是要在设计时就估算。我给团队分享过一个粗略的估算公式单次调用成本约等于输入Token数×输入单价 输出Token数×输出单价月成本等于单次成本乘每日调用量乘30。从公式里就能看出三个成本控制抓手压缩输入、压缩输出、减少无效调用。压缩输入靠上下文管理压缩输出靠限制max_tokens和精简摘要要求减少无效调用靠语义缓存——完全相同或高度相似的输入直接命中缓存返回历史结果。缓存这个点值得多说一句。很多团队只做HTTP缓存不做语义缓存。其实对AI应用来说语义缓存的收益非常明显客服工单里“怎么退款”“如何申请退款”这类相似询问出现频率很高用向量相似度匹配历史结果能命中就能省掉一大笔模型调用。我实测下来语义缓存命中率做得好能稳定降低20%到30%的调用成本同时延迟也能降一个量级。2.5 评测与回归没有评测就没有迭代评测是AI工程里最核心、也最容易被跳过的一环。没有评测集和量化指标你根本无法回答“新Prompt好不好”、“新模型能不能上”这两个问题。我甚至会说在AI项目里没有评测的迭代就是耍流氓因为你会被随机性欺骗凭感觉做决策。评测指标要根据任务类型来定不能只盯着一个综合准确率。我经常用的是四层指标第一层是字段级正确率比如分类结果是不是落在合法集合内、摘要是否超过字数限制这层管的是“格式正确”第二层是语义准确率分类对不对、摘要关键信息全不全这层管的是“内容正确”第三层是业务可用率某一个字段错了会影响下游流程的程度比如“是否紧急”判断错了可能导致响应延误第四层是成本和延迟指标同一个任务新版Prompt和旧版对比成本涨了多少、延迟涨了多少。评测集的建设是逐步积累的不用一次性做几百条。起步可以只有30到50条覆盖主要类别和典型边缘情况跑出基线之后每次线上发现错误案例把错误样本经人工确认后加进评测集这叫“错误驱动建设”。这样评测集不用多久就能长到几百条而且每一条都来自真实战场含金量远高于凭空编造的样本。评测一定要做成自动化的回归流程。我的做法是写一个评测脚本输入是一批黄金样本和一组待测配置模型版本、Prompt版本、参数输出是一份评测报告包含各指标分数和成本统计。每次改动不管是改Prompt还是换模型强制跑一遍评测报告留档。有了这套机制你才能回答“上一个版本为什么更好”而不是出了回归问题只能干瞪眼。3. 实操搭建一个可复现的AI工程最小闭环3.1 场景定义与技术栈选择理论聊完必须落到实操。我选一个具有代表性的场景来走通整个闭环客服工单分类与摘要。为什么选这个场景因为它有清晰的输入输出边界、输出结构可校验、容易构建评测集而且几乎是所有做AI应用的人都会遇到的业务类型。这个场景能走通其他场景无非是换Prompt和换数据的问题。技术栈上我选择最朴素的一套Python OpenAI兼容接口 Pydantic做字段校验 JSONL做评测集存储。不用任何重框架原因是前面提过的理念——先跑通最小闭环再谈架构。工具链越简单你越容易看清每一步发生了什么。实测下来这套组合处理客服工单分类场景代码量可以控制在200行以内但已经具备生产系统的雏形。环境准备只需要一个Python环境和一个模型API的访问密钥再把openai库和pydantic库装好。我不建议一上来引入LangChain这类编排框架原因在于框架会掩盖底层的调用细节当系统出问题时你很难判断是模型的问题、Prompt的问题还是框架的问题。等你自己用原生API把链路跑通一遍再去看框架会有一种“原来它做的是这件事”的通透感。3.2 从Prompt到可维护代码一个具体示例我从真实项目里抽一个精简版实现展示分类与摘要功能的核心代码。这段代码的关键设计有三个第一用Pydantic定义输出结构让后续校验有据可依第二温度设0保证分类结果尽量稳定第三用response_format强制JSON输出从源头减少格式事故。import json from pydantic import BaseModel, Field from openai import OpenAI client OpenAI() CATEGORIES [退款, 账号, 物流, 咨询, 投诉, 其他] class TicketResult(BaseModel): category: str Field(description工单分类) confidence: float Field(description置信度0到1之间) summary: str Field(description一句话摘要30字以内) urgent: bool Field(description是否紧急) def classify_and_summarize(content: str) - TicketResult: sys_prompt ( 你是一名客服工单处理助手。请对用户工单进行分类和摘要。\n f分类只能从以下类别中选择{、.join(CATEGORIES)}。\n 如果实在无法判断请选择其他。\n 摘要必须控制在30字以内保留关键信息。\n ) user_prompt f用户工单内容\n{content}\n resp client.chat.completions.create( modelgpt-4o-mini, temperature0, messages[ {role: system, content: sys_prompt}, {role: user, content: user_prompt}, ], response_format{type: json_object}, ) raw resp.choices[0].message.content data json.loads(raw) return TicketResult(**data)调用时只需要一行代码result classify_and_summarize(我买了东西没收到货快递已经两周没更新了要求退款)返回结果会是category物流、summary快递两周未更新用户要求退款、urgentTrue这样的结构化对象。这段代码虽然短但它背后包含了三个工程意识一是把Prompt模板与代码分离。系统提示词是常量放在函数最前面方便维护和版本管理。二是输出经过Pydantic校验字段缺失或类型错误会直接抛异常而不是带病进入业务流程。三是模型返回的是结构化JSON下游代码拿到的永远是干净的字段而不是需要再解析的自由文本。实际生产里我会在这个函数外面再包一层异常处理JSON解析失败时做一次带错误提示的重试连续失败就返回一个默认的“其他”分类结果保证接口不因为模型抽风而直接崩掉。这一层兜底逻辑虽然代码量不大但往往是线上稳定性最关键的一道防线。3.3 Agent化的关键一步工具调用与流程控制最小闭环跑通之后不少人会想“能不能让系统再聪明一点”这就走到Agent化这一步了。但这一步我特别想强调Agent不是目的是手段。在我的工单场景里只有当分类置信度不足或模型判断为“其他”时才需要调用检索工具去查历史工单来辅助判断这才是合理的Agent化路径。用工具调用实现这个逻辑是这样的给模型注册一个search_ticket_history工具让模型在需要更多信息时自己决定调用。代码逻辑可以简写成这样tools [ { type: function, function: { name: search_ticket_history, description: 根据关键词检索相似历史工单及其处理结果, parameters: { type: object, properties: { keywords: {type: string, description: 搜索关键词}, }, required: [keywords], }, }, } ]然后在第一次模型调用时传入tools参数如果返回结果里有tool_calls就执行对应的工具函数把工具结果作为新消息再次发给模型让它基于检索内容给出最终分类。这套流程看起来简单但工程化时有一个关键的细节必须给Agent设定“停止条件”。比如最多只允许调用两次工具两次之后无论模型说什么都强制输出当前结果。否则模型可能会陷入“检索—分析—再检索”的循环既不经济也不可控。我在实际项目里还加了一个更保守的约束Agent分支只在主流程判定“低置信度”时才触发。这相当于给系统装了一个开关大部分工单走快速通道路径只有少数疑难杂症才走复杂的Agent路径。这样的设计既享受了Agent的灵活性又不会让系统整体变成不可控的黑盒。说到工具调用有一个常见的工程陷阱工具本身要有严格的错误处理。如果检索工具超时或者返回空结果模型拿到的就是不可靠的数据它很可能基于这些数据瞎猜。我的做法是工具返回结果里带一个status字段超时或异常时明确告诉模型“检索失败请基于已有信息判断或选择其他”从Prompt层面就堵住这个问题。3.4 评测集与指标让迭代有据可依代码写好了Agent也加了怎么知道这套系统是真好还是自我感觉良好必须跑评测。我构建的评测集是100条从真实工单里抽样并人工标注的JSONL文件每条包含输入内容、正确分类、是否紧急、理想摘要四个字段。评测脚本遍历这些样本调用系统函数把输出和标注做对比。评测指标我按前面说的四层来算。格式正确率看四类错误category不在合法集合内、confidence超出0到1、summary超出30字、urgent不是布尔值。语义准确率则靠人工复核或者用另一个模型做评判者来粗筛再抽检人工确认。业务可用率还要额外看“紧急工单是否被成功识别”这条指标哪怕只差一两个百分点在实际客服场景里都可能意味着投诉升级。成本和延迟指标则是按100条样本的总Token消耗和平均响应时间统计。等评测脚本跑完我会得到一份类似这样的报告指标基线版本当前版本分类准确率82%87%字段格式成功率92%98%紧急工单召回率70%80%平均响应时间1.2s0.9s每百条成本¥3.6¥2.9这份报告的价值不只是告诉你当前系统好不好更重要的是它能用来做决策。比如你改了一版Prompt分类准确率涨了5个点但紧急工单召回率掉了那这版改动到底要不要上需要结合业务优先级判断而不是拍脑袋。我始终坚持一个原则AI系统的任何一次迭代都必须有数字作为决策依据哪怕这个数字粗糙一点也远胜于纯感觉。4. 常见问题与排查技巧实录4.1 结果不稳定、时好时坏怎么处理做AI应用的人最常遇到的就是“同一个输入跑两次结果不一样”。遇到这种情况先别急着怀疑模型能力按顺序排查四件事。第一温度参数是不是设0了分类任务只要不是0波动就是预期内的先归零再测。第二输出有没有做结构化约束没约束的自由文本天然就更不稳定。第三Prompt里有没有“两个冲突的指令”有时候你自己都没意识到。 第四如果前面都排除了还是波动可以考虑“多次采样投票”机制同一输入跑3次取多数结果或置信度最高的结果用次数换稳定性。这里要额外提醒一个容易混淆的点测试的时候不要拿同一句话反复测要看模型在相似但不同的输入上的表现。很多“不稳定”其实是正常的概率分布如果任务本身适合波动幅度会在可控范围内如果波动大到分类忽东忽西大概率是Prompt边界不清让模型在做无根据的猜测。4.2 上下文爆炸与Token成本失控上下文爆炸是AI工程里的经典慢性病。最早你可能只传一条工单给模型后来想让它“更聪明”把用户历史聊天记录全部塞进去再后来把知识库文档也塞进去Token数一路飙升成本跟着飞起延迟也拖不动了。我把它叫“上下文堆砌陷阱”——你以为信息越多模型越准实际上超出一定量之后模型的精度不升反降因为无关信息干扰了注意力。治理方案有三层。第一层是裁剪只保留与当前任务直接相关的上下文片段。比如工单分类只需要用户最新描述的投诉内容历史订单状态可以去掉。第二层是摘要化给模型的信息不是原文而是经过一次预处理的摘要。第三层是缓存与路由高频请求命中语义缓存直接跳过模型调用。这三层叠下来成本能压掉一大截。还有一个容易被忽略的技巧输出侧的Token控制。有些任务你只需要模型给一个简短结论但模型默认会把推理过程也写出来凭空增加不少输出Token。通过在Prompt里明示“只输出结论不要解释”或设置合理的max_tokens能节省相当可观的开销尤其在高频调用场景下这个差距是按月来计算成本时非常显著的。4.3 模型迭代后的兼容性回归换模型版本是AI工程里高风险的常规操作。很多人换完模型只做几个用例冒烟测试觉得没问题就上全量结果上线第二天才发现新的模型对某种输入格式的处理和旧版不一样。原因很简单大模型本身就是黑盒厂商发布新版本时虽然整体能力提升了但个别子任务上的行为可能发生倒退这种变化连厂商的官方评测都未必能覆盖全。靠什么挡住这种风险只能靠评测回归。我的生产准则是任何模型变更包括大版本升级、小版本更新、甚至同一个版本换了服务商都必须先在黄金评测集上跑一遍完整报告对比关键指标后再决定是否切换。如果评测报告的分数有降但业务上可接受我会先在小流量上灰度运行几天看线上真实指标再放量而不是一次性全量切换。评测集对于模型迭代的重要性怎么强调都不过分。很多团队把评测集当“开发工具”只在调试时用这是不对的。评测集更像一个“保险机制”它的存在就是为了在你最不需要的时候提醒你模型变了、你的系统可能受影响。哪怕你近期完全没有改Prompt的计划也应该定期把当前配置和评测集跑一遍留存基线为下次变更做好准备。4.4 提示词工程与代码工程的边界最后一个问题是很多团队会争执的Prompt到底应该写在代码里还是配置化我的观点是对于生产系统Prompt必须代码化、版本化、可回滚不是说写成一个常量就够了而是要有独立的版本标识和变更记录。我踩过一个真实的坑有一次线上工单分类准确率突然下降排查了很久最后发现是同事觉得分类Prompt里的一个词“不太准确”直接在线上配置中心里改了没有走版本记录谁都不知道这个改动是什么时候发生的。从那以后我把Prompt当成一等公民来管理每次改动都记录变更原因、变更人和前后评测分数发布前先跑评测通过后才能上线。这个流程推行的前两周大家觉得繁琐后面都真香了因为再也不用靠猜来判断准确率变化的原因了。另外一个边界问题是不要指望用Prompt解决所有问题。当你在一个任务上反复调Prompt正确率始终卡在85%上不去而业务要求95%时问题大概率不在Prompt而在于方案本身。可能是任务定义太模糊可能是需要引入更多上下文也可能是需要拆分成多个子任务分步处理。这时候该做的是重新做架构决策而不是继续在Prompt里抠字眼。写在最后从零开始做AI工程这段路我走下来最大的感受是真正的门槛不是模型而是建立一套“可评测、可迭代、可回滚”的工程闭环。模型能力突飞猛进是外界的事你的系统能不能稳定交付价值才是自己真正要修炼的功夫。如果你正准备启动一个AI项目我建议你先别急着采购工具或搭框架花几天时间把一小撮评测样本认真地标出来然后逼自己把第一个最小闭环跑通。这个动作会逼你想清楚系统到底在解决什么问题、用什么衡量好不好、模型出错时怎么兜底。还有一个小技巧想分享给你从第一天起就把每次实验的Prompt版本、模型版本、参数设置和评测分数记在同一个表格里坚持一个月你会感谢自己当初养成了这个习惯。
返回列表