尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从零搭建AI工程能力:提示词、Agent与模型选型的实战路径

从零搭建AI工程能力:提示词、Agent与模型选型的实战路径 做AI工程这一年多我最大的感受是这是个典型的“看着热闹、上手发懵”的领域。网上到处是“AI赋能”“大模型落地”的案例分享可真到了自己动手的时候环境怎么搭、模型怎么调、Agent怎么编排、提示词怎么写才能稳定复现每一步都藏着坑。今天把这套从零开始搭建AI工程能力的完整路径整理出来不灌鸡汤只讲实操希望能让准备入坑或者刚入坑的朋友少走点弯路。这篇文章围绕“ai-engineering-from-scratch”这条主线把AI工程化涉及的核心环节拆开揉碎从认知框架和路线规划到提示工程、Agent设计、AI编程工具的组合打法再到一个能落地的完整案例和问题排查实录。无论你是软件开发转AI、产品经理想搞AI应用还是学生想建立体系化能力这套路径都适用。1. 内容整体设计与思路拆解1.1 先想清楚AI工程和AI算法不是一回事很多人一听到AI工程第一反应是“要精通深度学习、手推反向传播”。这是最大的误区。我见过不少算法功底很强的人做出来的模型在测试集上指标漂亮可一到生产环境就崩原因不是模型不行而是工程化环节一塌糊涂没有做版本管理、缺少数据校验、提示词写死在代码里、模型升级后行为漂移了也没人知道。AI工程化的核心是用一套系统化的方法把大模型能力稳定地封装进业务系统。它更接近“软件工程模型调优”的交叉学科而不是纯算法研究。这个定位想清楚了后面的学习路线就不会跑偏。从零开始学AI工程最重要的不是先啃论文而是先建立一个完整的工程视角一个AI功能从需求到上线涉及模型选型、数据准备、提示词设计、Agent编排、评测回归、成本优化、可观测性建设每一环都要有手段去把控。我自己走过的弯路就是前期把重心全压在模型效果上结果在真正写业务代码时发现连“如何优雅地处理模型输出格式不稳定”这种基础问题都搞不定。现在回头看AI工程的核心矛盾不是“模型能力不够”而是“模型能力的不可控性与软件工程的可预期性要求之间的矛盾”。搞AI工程本质上是在做一件调和这个矛盾的事。1.2 零基础到可用AI工程的四层能力模型基于实操经验我把AI工程的能力拆成四层工具层、交互层、编排层、平台层。工具层包括大模型API调用、向量数据库、开发框架LangChain、LlamaIndex这类交互层是提示词工程和思维链设计决定模型输出的质量上限编排层是Agent设计和多步任务拆解解决复杂业务场景平台层是评测、监控、成本管理等保障体系让AI功能可持续演进。对刚入门的人我的建议是不要试图一次把四层全学完每层只先掌握最小必要知识然后立刻做一个端到端的小项目。比如第一周只学“用API调通一个模型并让输出稳定为JSON格式”第二周加上提示词模板和一点评测逻辑第三周引入Agent第四周把整个流程包装成一个小工具。这比花三个月系统啃完LangChain文档再动手要有效得多因为“跑通一个最小闭环”这件事本身会教给你大量文档里查不到的东西。1.3 为什么“手写轮子”依然是最高效的学习路径现在各种AI开发框架已经很成熟了LangChain封装得越来越厚很多教程上来就教你用框架搭建Agent。我的看法是框架可以学但在初期一定要先手写一遍核心流程。我自己带过几个新人差距非常明显直接上框架的人出了问题只能去搜GitHub Issue手写过一遍的人遇到问题大概能猜到是哪一步出的错。原因很简单框架帮你隐藏了大量关键细节——上下文怎么管理、工具调用的结果怎么回填、重试机制如何设计这些都是AI工程的核心设计决策。你只有自己实现一遍才能真正理解为什么框架要那么设计。所以这条路径建议是先用LangChain的底层组件手工搭一个单轮对话工具调用跑通之后再引入框架做抽象。这样不仅对工程理解更深后续排查问题时也会敏锐得多。这是个很反直觉但极其重要的建议。2. 核心基础能力拆解与实操要点2.1 提示词工程AI工程的第一块地基提示词工程Prompt Engineering是AI工程里门槛最低但最容易被低估的一环。说它门槛低是因为你不需要会写代码就能开始说它被低估是因为提示词的好坏对输出质量的方差影响极大很多业务场景下优化的提示词可以在不更换模型的情况下把准确率提升十几个百分点。提示词工程本质上是在做一件事把一个模糊任务定义成清晰、可执行、有约束的指令。业务方的原始需求往往是这样“帮我写个行业分析报告”。这个需求直接丢给模型效果完全看运气做AI工程的人要做的事是把它翻译成强指令“你是一名资深行业分析师请按照以下框架写一份字数约2000字的行业分析报告……报告须包含市场规模、竞争格局、技术趋势、风险因素四个部分使用Markdown标题结构数据不明确时注明需要核实”。我个人的经验是可以把一个好提示词拆成五个要素角色设定、任务定义、输出格式、质量约束、边界条件。角色设定让模型调用合适的知识分布任务定义要具体到动词级别输出格式尽量用结构化描述质量约束要可量化边界条件要明确“什么不能做”。这五个要素不一定每次都全用但有它们兜底输出质量会稳定非常多。关于思维链Chain-of-Thought这里要特别提一句这不算什么高级技巧了已经是日常标配。需要计算、推理或多步任务时直接在提示词里加一句“请一步一步思考并输出推理过程”效果立竿见影。这背后的原理是让模型把隐式的推理过程显式化减少跳跃性错误。实操中要注意的是思维链会增加Token消耗对高频调用接口的场景可以用“先推理后压缩”的方式让模型先推理再要求最终只输出结论避免长推理文本直接落库。2.2 Agent设计从单次问答到多步任务执行Agent不是新技术但它确实是目前AI工程里最有想象空间、也最容易翻车的地方。一个Agent的本质是一个“能自己决定下一步做什么”的AI程序它可以调用工具、查询知识库、综合多个来源的信息完成一个复杂任务。从零实现一个Agent其实不复杂核心流程就三步第一把用户目标拆解成子任务第二根据子任务决定调用哪个工具或查询哪些资料第三汇总工具返回结果并继续推理直到完成整个目标。这个“感知-决策-行动”的循环就是Agent的基本骨架。问题几乎都出在循环的控制上Agent会在一个分支上钻牛角尖出不来、会调用工具后又从头再来、会在没有明确答案时编造一个答案。这些问题的根因都是对Agent的行为缺乏约束。约束Agent有几个实用手段。第一是步骤上限给Agent设置Max Steps比如最多10步防止它无限循环烧Token。第二是路径约束用系统提示词告诉Agent“当工具返回异常时记录错误并尝试下一个方案最多重试2次”。第三是状态回填每执行一步后把当前状态和已完成步骤回填到上下文里让Agent知道“自己已经做到哪了”。第四是输出契约最终结果必须按JSON格式输出字段固定方便后续程序解析。这里我特别推荐一个实践在Agent里加一个“反思”节点。每次工具调用后强制模型检查一下“上一个返回结果是否合理还有没有遗漏信息下一步应该做什么”再继续。相当于给Agent装了个纠偏机制。实测下来这个反思节点能显著减少Agent在错误路径上一路狂奔的情况成本增加不到10%但成功率提升非常可观。2.3 AI编程工具把自己的工作流“武装到牙齿”AI编程可能是普通开发者收获感最强的一项AI工程实践。当前主流选项有GitHub Copilot、Cursor、通义灵码、CodeBuddy等每一家都在推“Harness Engineering”的概念核心都是把AI当结对编程的同事而不是一个超级API。我自己的主力组合是“IDE插件AI Agent”双轨制。IDE插件负责代码补全和单文件级别的重构如生成单元测试、解释代码片段、做Code ReviewAI Agent负责跨文件的代码理解和仓库级重构。这里的核心技巧是“任务拆解”和“上下文控制”AI编程工具不是你给它一句“帮我重构登录模块”就能干活的你要把任务拆到“函数级”或者“文件级”并告诉它相关的文件路径、依赖关系、期望的改动范围否则它会在错误的方向上产出大量无效代码。这里得单独讲讲上下文管理。AI编程的失败案例中百分之八十都跟上下文缺失有关。人看代码有“全局观”AI目前只能看到喂给它的片段。所以高效使用AI编程工具的前提是你得学会“给AI画地图”告诉它入口函数在哪个文件哪一行依赖的数据结构在哪个目录下需要保持兼容的接口有哪些。信息给得越具体AI产出越可用这是我在工程实践里反复验证的一条铁律。2.4 模型选型与API使用的实用决策模型选型是AI工程里一个“越晚意识到越吃亏”的问题。很多人一开始就追最新最强的大模型但实际落地场景里要考虑的维度除了效果还有成本、延迟、上下文长度和生态适配。我的建议是做一个模型选型矩阵把任务按“复杂度”和“敏感度”两个维度划分。低复杂度低敏感度如内容分类、实体提取用中小尺寸模型就够高复杂度或高敏感度的任务如法律咨询、代码审查才上旗舰大模型。这样做的价值非常直接——成本。同样是数亿级接口调用量的业务场景用小模型替代大模型可以省下数十万级的费用而且延迟会显著下降用户体验也更顺。API使用层面最重要的技术细节是设置好temperature、top_p等采样参数。很多AI工程的初学者不知道这两个参数直接控制输出的确定性temperature越接近0输出越稳定调高则增加发散性。工程场景和内容创作场景的取值逻辑完全不同。我在生产环境里通常把temperature调到0.2以下同时设置seed固定值确保同Prompt同模型产出可复现。这个细节看似不起眼但对测试和质量回溯价值极大。再有就是结构化输出Structured Output的运用。现在主流模型基本都支持JSON Schema约束你可以直接告诉模型“按这个Schema输出JSON”这样输出格式基本不需要再解析清洗。这是AI工程落地中最实用的一个API功能能省掉大量正则和修复逻辑。3. 实操过程与核心环节实现3.1 一个具体案例从零搭建一个“Harness Engineering”辅助智能体热词里的“CodeBuddy实现Harness Engineering的完整案例”值得展开讲讲。这里说的Harness Engineering在工程语境下它通常指“为AI调用构建护栏与辅助结构”的工程实践——某种意义上的“套马鞍”工程。就是你要给模型装配好提示词框架、工具接口、知识库入口和结果校验逻辑让它在一个受控的通道里完成任务。为了把一个AI Agent用起来我设计了一个叫“CodeSQL-Sage”的辅助编程智能体主要用来处理“自然语言查数需求转SQL查询”的场景。这个场景足够复杂又能完整展示AI工程全链路。第一步任务定义输入是业务人员的自然语言查询如“最近30天上海地区的订单量环比变化”输出是一条可直接执行的SQL和一段查询逻辑说明。第二步提示词设计给Agent设定角色——你是一名资深数据分析师熟悉订单库表结构根据DDL信息将自然语言转换为BigQuery标准SQL输出要求是JSON格式含sql字段和explanation字段。第三步工具定义给Agent配两个工具一个用于检索建表DDL一个用于检验SQL语法。第四步Agent编排用户提出需求后Agent先并发调用DDL检索工具获取表结构然后生成初步SQL再经语法校验工具检查如发现问题就带着错误信息重新生成最多重试3次。第五步评测和后处理SQL正确性用预置的测试集自动比对执行结果通过后再把SQL包装成固定的JSON响应返回给上游系统。3.2 关键步骤与参数选择细节在实现这个Agent的过程中有几个细节对我帮助极大值得记录下来。首先是用例数据的准备。为了让提示词和Agent的行为有稳定的预期我准备了一百条典型查询和对应的正确SQL作为测试集。这听起来费工夫但它是后面所有优化的基准。没有测试集你无法判断一次提示词修改到底是变好了还是变坏了。测试集的维护贯穿AI工程始终比模型本身还重要。其次是DDL检索工具的设计。我没把整个数据库的DDL都塞进提示词太长了而是做了一个“先搜后读”的两级检索。Agent先按关键词搜索POSSIBLE_RELATED_TABLES拿到表清单再针对具体表获取完整DDL。这样每个步骤的上下文都是精简的既控制Token成本又提升了生成SQL的准确度。整个过程如果你自己手动写一遍就会理解为什么LangChain里的Retriever工具要区分“检索”和“读取”两个阶段。再是提示词里的输出契约设计。我用JSON Schema严格定义了输出格式query_type查询类型、sqlBigQuery标准SQL、explanation中文解析、confidence0-1置信度。模型输出这个JSON后程序侧再做一次简单校验如检查SQL里是否出现SELECT之外的关键字。这样异常率会极大下降。还有一个隐性收益是这个结构化输出可以直接落库做后续分析和效果追踪把一次性的SQL生成变成了可持续迭代的AI资产。3.3 实际运行效果与调优过程记录第一次跑通这个Agent时百条测试集上的SQL正确率是64%只能勉强证明“跑起来了”距离可用差得远。随后我做了三轮针对性调优。第一轮修复提示词里的槽位冲突。测试发现当用户说“近30天”时Agent有时生成的是日粒度有时是周粒度因为我在提示词里同时提了“自然语言理解”和“友好输出”。我调整了定义明确把时间粒度从用户原话里提取并校验准确率提到了73%。第二轮压缩DDL检索噪声导致SQL查错表。我发现Agent有时会在检索阶段带偏检索到2张功能相近却用途不同的表随后在SQL里join错表。我修改了DDL检索工具的排序逻辑增加了“最近30天查询频率”因子把高频使用的表排最前准确率提到了81%。第三轮把“反思节点”加入Agent循环。每次生成SQL后要求Agent自己扮演一名DBA审查“该SQL是否符合表结构字段名是否遗漏了过滤条件是否存在性能隐患” 发现问题就自动修正。这一改动直接把准确率推到了92%。同时平均生成时长只多花了不到1秒每百次查询只增加了约4.5万Token消耗在可接受范围内。到这一步这个Agent才真正有了进入生产环境的价值。这个过程完美说明了AI工程中“系统化调优”和“碰运气调优”的区别前者基于评测集和问题归因每一步都有据可依后者只是不断改提示词然后重跑大概率会陷入“改了这里坏了那里”的泥潭。3.4 开发环境配置与工具链清单整个项目的开发环境我推荐一套简洁工具链Python 3.11 LangChain框架可直接用langchain-core包手写Agent循环 OpenAI或Claude的APISentence-Transformer做向量召回。数据库查询场景需要准备一个测试库建议用DuckDB或BigQuery沙箱方便安全地执行Agent生成的SQL。从工程角度我强烈建议把下面这些“非功能需求”从一开始就纳入开发过程。配置管理API密钥、模型名称、temperature等参数全部走环境变量或配置文件不要硬编码。日志染色每轮Agent对话按request_id维度记录完整的prompt、模型响应、工具调用、耗时和Token消耗这不仅是排查问题的依据更是你做效果评估和成本分析的数据来源。异常兜底模型超时、返回空值、格式不合法都要有降级策略。降级不一定意味着失败有时用一个较弱的提示词重试一次就成功了。这套工具链本身没什么高深的东西但正是这些细节决定了AI工程项目的成败。模型的效果上限由基座模型决定而工程的下限由这一层基础设施兜着。4. 常见问题与排查技巧实录4.1 高频问题速查表直接上干货这些是我在真实项目中反复踩过、帮你排掉过的坑整理成表方便遇到问题时快速定位。问题现象根因分析解决思路模型输出格式时好时坏提示词格式约束不够明确使用模型API的JSON Schema强制约束不用纯文本描述Agent执行一半开始重复循环缺少步骤上限与状态回填设置Max Steps每步执行后回填“已完成动作列表”同一条Prompt两次结果差异大采样参数未固定temperature调到0.2以下开启seed固定长文档问答时遗漏中间信息上下文截断策略不当调整Embedding分块粒度加入上下文压缩与递归检索提示词一改其他场景效果变差缺少场景隔离提示词按场景模块化管理避免全局共用知识库回答引用了不存在的“事实”检索增强模块未干预生成要求模型输出时带引用来源无可引用时明确回答“未在知识库中发现”这六类问题基本覆盖了从API接入到Agent编排再到知识库问答的全部高频故障。这些坑的特点是它们几乎不会出现在官方文档里但实际工程里每一类我都碰到过而且每踩一次都损失了大量的调试时间。4.2 重点案例复盘一次Agent“幻觉”事故的排查过程有一次我负责的一个内部知识库问答Agent突然开始大量输出“库内不存在”的错误信息。第一反应以为是模型问题换了更强的模型仍然复现。排查时我先看请求日志发现检索模块返回的引用确实有相关文档但Agent最终给出“未找到答案”。然后我把这个案例抽出来单独跑发现每次模型都会直接说“知识库中未有相关信息”甚至不检查引用块内容。根因定位在提示词里的一个槽位“若无法在知识库中找到答案请直接回复‘未在知识库中发现相关信息’”。这个槽位被模型过度理解了导致它一看到回答有点拿不准就直接复读这句话把主动推理路径完全切断。我做了两个修改一是把这个提示词改为“优先基于引用内容回答当引用内容与问题无关时才回复未找到”二是在引用块前后加上明确的边界提示符。修改后这个Agent在两千条验证集里的正确率从原来的86%直接提升到95%。这个案例的关键教训是提示词里的“容错语句”要写得非常克制。你给了模型一个“不适合就退出”的选项它就倾向于频繁退出因为这对它来说是最省力的路径。工程上要求“低功耗输出”但业务上往往需要“尽力推理”。这两者之间的平衡只能靠频繁测试和压力测试来校准没有捷径。4.3 Token成本失控的三个急救方案AI工程的成本主要在Token消耗上。我经历过一次月度API账单直接翻三倍的“惊吓事件”起因是一个Agent在循环中反复把一个大文档传入上下文。排查后做了三个收紧动作现在成本基本稳定。第一个动作上下文压缩。我不再把完整文档传给模型而是先让一个轻量模型将文档压缩到500字以内的摘要再交给主Agent做决策。信息损失在可控范围内Token消耗直接降到原来的20%。第二个动作缓存策略。对相同前缀的请求开启响应缓存实测缓存命中率可达25-30%这部分成本直接省掉。第三个动作小模型兜底。对于“分类、关键词提取、文本改写”这类简单任务我始终用性价比极高的小模型处理只有真正需要复杂推理时才走大模型。这三板斧落地后整体Token成本大约压缩了一半左右而业务效果几乎没有可见回落。4.4 工程规范一个标准AI请求应记录哪些日志AI工程的可观测性经常被忽略它却是团队协作和生产排障的根基。我这边定的标准是最少记录以下字段请求ID、业务场景ID、模型名称与版本号、系统提示词版本号、温度等采样参数、输入Token数与输出Token数、运行总耗时、模型响应原文、工具调用记录、最终输出结果、用户对结果的反馈或评分。这些日志的价值在事故排查和效果迭代中都极其珍贵。举个例子如果你发现某天Agent行为突然变了第一步就是对比日志里提示词版本号是否被改动过其次再排查模型服务方是否悄悄升级了底座模型。没有日志你只能靠猜靠猜的代价极其昂贵。我建议把这个要求做成一个可复用的代码模板每次调用模型接口时用装饰器统一记录日志开发和分析都省力。注意如果你没有把日志当核心模块来设计后续所有“归因分析”“回归评估”“成本归因”都无从下手。这是AI工程里最容易被偷工减料但最不应该偷工减料的环节。个人实操中的一点体会最后分享一点个人感受。做AI工程很容易让人陷入“追新工具”的焦虑今天一个新的Agent框架明天一个新的自主模型总觉得不跟上就会掉队。但我这一年多下来最大的体会是工具迭代得再快工程化的基本功不会变。会写高质量的提示词、会设计可控的Agent循环、会建设评测集和可观测性体系这些能力可以迁移到任何新工具、新模型上。花在“理解原理”上的时间远比追新新闻花的时间回报率高。说个反直觉的观察越是依赖AI工具的人越需要在工程基本功上花更多心思。因为AI帮你提升了产出速度如果你没有扎实的评估、测试、日志体系兜底速度带来的不是效率而是成倍的错误。这可能是AI工程和传统软件工程最大的不同——AI让写代码变得便宜但让“确保正确”变得昂贵。谁能在“确保正确”这件事上建立体系谁就是真正的资深AI工程师。如果看完这篇你只记住一件事我希望是先跑通一个最小闭环然后围绕这个闭环建立一个完整的评测、日志、调优循环。这个循环一旦转起来AI工程能力就会自己带着你往前走。
返回列表