LLM 2
约 6336 字大约 21 分钟
2026-07-25
1.3 大模型家族:闭源与开源的博弈 • 闭源王者(GPT、Claude、Gemini):由OpenAI、Anthropic、Google等巨头研发,通常能力最强,API稳定,但成本高、内部机制不透明、数据隐私存在顾虑。适合快速原型验证、对效果要求极高的生产应用。 • 开源新贵(Llama、Qwen、DeepSeek):以Meta的Llama系列为代表,开源了模型权重,允许本地部署、深度定制和微调。成本可控、数据安全,但通常需要更强的工程能力进行部署和优化,且基础能力(在同等参数量下)可能略逊于顶级闭源模型。开源生态正在蓬勃发展,是AI民主化的关键力量。 给工程师的思维锚点:请始终将LLM视为一个超级文本模式匹配与生成引擎。它就像一个经过海量“测试用例”(文本对)训练的程序,能根据输入模式,生成统计上最合理的输出模式。它的“智能”是统计规律的副产品,而非主动的认知。理解这一点,你就不会被它的“类人”表现所迷惑,能更冷静地评估其能力和边界。
进化篇:打破牢笼,赋予AI“感知世界”与“操纵世界”的能力 掌握了基石,你就能清晰地看到LLM的致命短板:它的知识被“冻结”在训练数据截止的那一刻,且它没有与真实世界互动的“肢体”。 这就像一个被困在藏书阁里的绝世智者,学识渊博但信息陈旧,且无法亲手触碰阁外的任何事物。为了让这位智者真正为我们解决问题,我们需要为他做三件事:开一扇窗(接入最新知识)、递一套工具(操作外部系统)、建立一套指挥体系(自主规划与执行)。这就是RAG、Function Calling/MCP和Agent诞生的逻辑。
- RAG深度实践:如何为AI打造一个“企业级知识库外挂”? 核心痛点:通用大模型不知道你们公司的产品手册、内部wiki、私有数据库、客户支持日志。当员工问“我们产品的X功能在Y场景下的最佳实践是什么?”时,模型无法回答。 解决方案:RAG(检索增强生成)。其核心思想不是重新训练模型(成本极高),而是在推理时,动态地为模型“检索”相关的外部知识,并将其作为“参考材料”塞进Prompt,让模型基于“最新情报”来生成答案。 1.1 RAG的技术实现三部曲 RAG不是一个魔法黑盒,而是一套标准的工程流水线:
- 索引构建(Indexing): • 数据加载:从PDF、Word、Confluence、数据库、网页等各种来源获取原始文档。 • 分块(Chunking):将长文档切割成语义连贯的小片段(如256-512个Token)。这是RAG效果的关键!分块策略(按段落、按标题、滑动窗口)直接影响后续检索的精度。分块过大,检索会带入无关信息;分块过小,会丢失上下文。 • 向量化(Embedding):使用嵌入模型(如text-embedding-3-small, BGE, Voyage)将每个文本块转换成一个高维向量(如1536维)。这个向量在数学空间中表征了文本的语义。语义相似的文本,其向量在空间中的距离(通常用余弦相似度衡量)也更近。 • 存储:将文本块和对应的向量存入向量数据库(如Pinecone, Weaviate, Milvus, PGVector)。向量数据库的核心能力是近似最近邻搜索,能快速找到与查询向量最相似的几个向量。
- 检索(Retrieval): • 当用户提问时,首先使用相同的嵌入模型将问题转换为查询向量。 • 在向量数据库中进行相似度搜索,召回与查询向量最相似的K个(如top-5)文本块。 • 进阶检索策略: • 重排序(Re-ranking):用更精细但更耗时的模型(如Cross-Encoder)对召回的结果进行二次精排,进一步提升相关性。 • 混合检索:结合基于关键词的BM25检索(擅长精确匹配)和向量检索(擅长语义匹配),取长补短。 • 元数据过滤:在检索时加入过滤器,例如只搜索“产品A的技术文档”或“2024年的更新日志”。
- 生成(Generation): • 将检索到的相关文本块(作为“参考依据”)和用户的原始问题,按照预设的Prompt模板组装成最终的增强Prompt。 • 模板示例:“基于以下上下文信息,请回答用户的问题。如果上下文信息不足,请直接说明你不知道。 上下文: [检索到的文本块1] [检索到的文本块2] ... 问题:[用户问题] 答案:” • 将这个增强Prompt发送给LLM,生成最终答案。 1.2 向量数据库选型与优化 • 云服务:Pinecone, Weaviate (SaaS),部署简单,性能有保障,但按用量付费,数据需出境。 • 开源自托管: • Milvus:专为大规模向量搜索设计,功能丰富,性能强劲,但运维复杂度高。 • Qdrant:Rust编写,API友好,性能和资源占用均衡。 • Chroma:轻量级,易于上手,适合原型和中小规模应用。 • PGVector:PostgreSQL的扩展,如果你的应用已使用PostgreSQL,这是最自然的选择,可以利用现有的ACID事务、备份等生态。 1.3 评估与调试:RAG的“观察者效应” RAG系统不是一劳永逸的,需要持续评估和优化。关键指标: • 检索相关性:召回的前K个文档块是否真的与问题相关? • 答案准确性:基于检索内容生成的答案是否正确?有没有“幻觉”(胡编乱造)? • 答案相关性:答案是否直接回答了问题? 实用调试工具: • RAGAS, TruLens 等框架可以自动化评估上述指标。 • 构建一个包含(问题, 标准答案, 参考文档)的测试集,进行回归测试。
- Function Calling与MCP:建立AI与外部世界的“标准通信协议” 核心痛点:AI知道“查天气”这个功能,也知道天气API返回的结果格式,但它自己无法发起一个HTTP请求。它需要一种方式“告诉”我们的后端程序:“嘿,去调用这个API,然后把结果给我。” 2.1 Function Calling详解:AI的“工具调用说明书” Function Calling不是一个新的API端点,而是一种标准化的数据交换格式。通常是一个JSON Schema,用于描述“工具”(即一个函数或API)的用途、输入参数和返回格式。 工作流程:
- 定义工具:开发者用JSON Schema定义一系列可用的工具。 [ { "name": "get_current_weather", "description": "获取指定城市的当前天气", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,例如:北京,上海" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"] } }, "required": ["location"] } }, { "name": "send_email", "description": "发送一封电子邮件", "parameters": { ... } } ]
- 请求模型:将用户问题(“北京今天热吗?”)和工具定义一起发送给支持Function Calling的模型(如GPT-4)。
- 模型决策:模型根据问题,判断是否需要调用工具。如果需要,它会以结构化JSON的形式返回一个“调用请求”,例如 {"name": "get_current_weather", "arguments": {"location": "北京", "unit": "celsius"}}。如果不需要,则直接生成自然语言回复。
- 后端执行:你的应用程序收到这个JSON,解析后,去真正执行 get_current_weather("北京", "celsius") 这个函数(内部可能调用第三方天气API)。
- 结果返回:将函数执行的结果(如 {"temperature": 28, "condition": "晴朗"})作为新的上下文,连同原始对话再次发送给模型。
- 模型总结:模型基于API返回的真实数据,生成面向用户的最终回答:“北京今天天气晴朗,气温28摄氏度。” 关键优势:模型从不直接执行代码,它只负责“意图识别”和“参数解析”。所有的执行权、安全性控制都牢牢掌握在后端工程师手中。 2.2 MCP:工具的“统一即插即用接口” 随着工具越来越多,为每个工具都写一遍适配Function Calling的代码变得繁琐。能否让工具像USB设备一样,即插即用?这就是 MCP(Model Context Protocol) 的愿景,一个由Anthropic等公司推动的开放协议。 • MCP的角色:它定义了一套服务发现、工具注册、调用和结果返回的标准协议。任何工具,只要实现一个MCP服务器(Server),就能被任何支持MCP的客户端(如Claude Desktop, 未来的各类AI应用)自动识别和使用。 • 类比:如果把Function Calling看作是USB设备的数据格式标准(比如U盘里的文件系统格式),那么MCP就是物理接口和电气信号标准(比如USB-C的形状和电压)。MCP确保了工具能以标准方式“插入”AI系统。 2.3 两者关系梳理 • Function Calling:是AI模型层面的指令格式。它规定了AI“大脑”思考后,输出给执行层的命令长什么样。 • MCP:是系统集成层面的插件协议。它规定了各种工具“执行层”如何以标准化方式接入到AI系统中,让AI系统能自动发现和调用它们。 一个理想的未来工作流:开发者编写一个工具,实现MCP Server。部署后,任何支持MCP的AI应用都能自动将其识别为一个可用工具,并通过Function Calling格式来调用它。这大大降低了AI应用的集成复杂度。
- Agent:从“工具使用者”到“自主任务规划者” 大脑(LLM)有了,实时资料(RAG)能查了,工具(Function Calling/MCP)也会用了。现在,我们可以将这些能力打包,并赋予AI一个更高级的能力:自主规划与执行复杂任务。这就是Agent(智能体)。 3.1 Agent的核心构成 Agent = LLM(推理与决策核心) + Memory(短期/长期记忆) + 工具集(Function Calling/MCP) + 规划器(任务拆解与调度策略) 3.2 典型工作流程(ReAct模式) ReAct(Reasoning + Acting)是Agent的经典模式,它让模型在“思考”和“行动”之间循环。
- 接收任务:“帮我规划一个从北京到上海的三天两夜旅行,总预算不超过5000元,偏好文化历史景点。”
- 规划(Plan):Agent内部的LLM分析任务,并将其拆解为一系列可执行的子目标。 • 思考:这个任务需要查询航班、酒店、景点、预算汇总。我需要按顺序执行。
- 执行(Act):Agent选择并调用合适的工具来执行子目标。 • 调用 search_flights工具,参数:{出发地: 北京, 目的地: 上海, 日期: ...} • 获得结果:航班列表和价格。 • 思考:根据航班时间和价格,选择最合适的选项。接下来需要查酒店。 • 调用 search_hotels工具...
- 观察(Observe):Agent接收工具执行后的结果。
- 循环:基于观察到的结果,更新其内部状态(Memory),决定下一步是继续执行下一个子目标,还是需要调整计划(比如发现预算超标,重新选择更便宜的酒店),然后进入下一个“思考-行动”循环。
- 最终汇总:所有子任务完成后,Agent调用LLM,整合所有收集到的信息(航班、酒店、景点、预算),生成一份格式优美的最终旅行方案文档。 3.3 关键设计模式与挑战 • 反思(Reflection):Agent在执行后,可以对自己生成的结果或采取的行动进行“自我批评”,检查是否有错误或可以改进的地方,然后进行修正。这能提升任务完成的可靠性。 • 子智能体(Sub-Agent)与分层规划:对于极其复杂的任务,可以引入“主Agent”和“子Agent”。主Agent负责高层目标规划和任务分发(类似项目经理),子Agent(如专门的“数据分析Agent”、“文案撰写Agent”)负责执行具体的专业性任务。这符合软件工程的单一职责和微服务思想。 • 主要挑战: • 规划幻觉:Agent可能制定出不切实际或逻辑错误的计划。 • 无限循环:Agent可能在“思考-行动”循环中卡住,无法推进。需要设置最大步数限制。 • 工具选择错误:选择了不合适的工具,导致任务失败。 • 成本与延迟:每一步的思考和工具调用都涉及LLM API调用,任务越复杂,耗时和成本越高。 工程篇:从“炫技”到“投产”,为AI应用注入软件工程的灵魂 Agent能力令人兴奋,但如果像早期的AutoGPT一样完全放任其“自由探索”,在企业级应用中将是灾难——不可控、成本高、难以调试。这时,我们必须引入软件工程的成熟方法论,为AI“上规矩”,在灵活性与可靠性之间找到平衡。
- 流程编排:为AI工作流绘制精确的“设计图纸” 对于那些流程高度固定、容错率低的业务(如贷款审批、保险理赔、标准化报告生成),我们不希望AI“自由发挥”。相反,我们希望像设计BPMN工作流一样,明确地定义每一步的逻辑。 1.1 什么是AI工作流编排? 它允许开发者通过可视化界面或代码DSL(领域特定语言),将LLM调用、条件判断、循环、API调用、人工审核等节点串联成一个有向无环图(DAG)。每个节点的输入输出都有明确的定义。 1.2 核心优势: • 确定性:流程是预先定义好的,执行路径可预测,便于调试和审计。 • 可控性:可以在关键节点插入人工审核、数据验证或降级策略。 • 可观测性:可以清晰地监控每个节点的状态、耗时和输入输出。 • 复用性:工作流可以版本化、模板化,方便在不同业务场景中复用。 1.3 代表工具: • LangChain Expression Language (LCEL):用代码定义链式工作流。 • Microsoft Semantic Kernel:提供了规划器和编排器。 • 专门的工作流引擎:如Windmill, n8n, Zapier 也开始深度集成AI节点。 示例场景:一个自动化的周报生成工作流。
- 节点1(数据提取):调用内部API,获取本周的JIRA issue数据、Git提交记录、销售数据。
- 节点2(数据清洗与汇总):用Python脚本或简单的LLM调用,将原始数据整理成结构化格式。
- 节点3(生成分析):将结构化数据喂给LLM,指示其生成亮点、风险和趋势分析。
- 节点4(生成Markdown报告):将分析结果填入预设的Markdown模板。
- 节点5(发送通知):将最终报告通过邮件或企业微信发送给相关人员。
- Skill(技能)模式:固定骨架与自由血肉的完美结合 这是将软件工程中 模板方法模式 应用于AI的绝佳实践。它完美平衡了确定性与创造性。 2.1 核心思想: • 80%的固定流程(骨架):用代码严格实现任务中那些不容有失、逻辑确定的部分。例如,“从数据库A和API B获取数据 → 按照规则C进行融合与校验 → 将结果存入数据库D”。这部分保证了业务的底线、效率和零错误。 • 20%的自由创作(血肉):将流程中需要创意、解释或因人而异的部分,交给AI自由发挥。例如,在生成报告时,“基于上述融合后的数据,撰写一段面向高管的、不超过200字的总结,需突出增长亮点和潜在风险。” 2.2 实践示例:自动化代码审查Agent
- 固定骨架: • 监听Git仓库的Pull Request事件。 • 拉取代码diff,运行静态代码分析工具(如SonarQube, Checkstyle)获取基础问题列表。 • 提取本次提交关联的JIRA issue描述作为业务上下文。
- AI自由发挥: • 将“代码diff”、“静态分析结果”、“业务上下文”组合成一个精心设计的Prompt,发送给LLM。 • Prompt示例:“你是一位资深Java架构师。请审查以下代码变更。已知的静态检查问题已列出。请重点关注:1. 本次变更是否与JIRA issue描述的目标一致?2. 是否有潜在的性能退化、并发安全问题或架构异味?3. 给出具体的、可执行的改进建议。请以友好的口吻撰写评论。” • AI生成的评论被自动发布到Pull Request中。 这种方式,既利用了AI的洞察力和自然语言能力,又用确定性代码守住了质量和安全的底线。
- Sub-Agent(子智能体)与微服务化架构 当一个Agent试图处理所有事情时,它会变得臃肿不堪,上下文混乱,职责模糊。这和单体应用面临的问题一模一样。解决方案也相同:微服务化与单一职责。 3.1 如何设计Sub-Agent? 根据业务域或能力域进行划分: • 感知层Agent:负责意图识别。分析用户模糊的需求,将其分类并提取结构化参数(如“订机票” -> {intent: "flight_booking", params: {...}})。 • 知识层Agent:专精RAG检索。对接公司内部各个知识库,能高效、准确地找到相关信息。 • 执行层Agent:负责工具调用。每个Agent可能只负责一个或一类紧密相关的工具(如“支付相关Agent”、“数据查询Agent”)。 • 决策/规划层Agent(主Agent):负责接收结构化任务,协调调度上述各个Sub-Agent,并整合最终结果。它就像一个“大脑皮层”,负责高级规划和资源调配。 3.2 通信与协调 Sub-Agent之间如何通信?可以采用消息队列(如RabbitMQ, Kafka)或直接的HTTP/gRPC调用。主Agent向特定主题发布任务,Sub-Agent订阅并处理。这带来了解耦、独立扩容和容错的好处。 3.3 监控与治理 在微服务架构下,你需要一个集中的监控系统来追踪:每个Sub-Agent的调用成功率、延迟、Token消耗、成本。当某个Agent(如支付Agent)失败时,主Agent需要能够感知并采取降级策略(如转为人工处理)。 实践与展望:我们站在技术浪潮的何处?下一步如何行动? 技术路线图全景复盘 让我们以一张清晰的进化图谱,再次串联整个旅程:
- 起点(原始LLM):一个拥有海量参数、基于概率进行文本接龙的超级引擎。痛点:知识静态、无法交互。
- 第一步进化(RAG):通过检索外部知识库,为引擎动态注入“最新情报”,解决知识实时性问题。
- 第二步进化(Function Calling):定义标准协议,让引擎可以“发出指令”,指挥外部程序干活,解决操作能力问题。
- 第三步进化(MCP):标准化工具接口,让新工具的接入变得即插即用,解决生态扩展效率问题。
- 第四步进化(Agent):整合前三步能力,并引入“规划”模块,让引擎能自主拆解和完成多步骤复杂任务,解决任务自动化问题。
- 第五步进化(工程化:编排/Skill/Sub-Agent):引入软件工程方法论,通过流程编排、模板方法、微服务化架构,解决Agent的可靠性、可控性、可维护性问题,使其真正具备企业级投产能力。 至此,一个只会“接龙”的模型,已经演进为一个可以集成到企业IT系统深处,自动、可靠、高效处理复杂业务流程的“数字员工”。 后端工程师的机遇与转型之路 AI不会淘汰程序员,但会深刻重塑程序员的价值定义。对于拥有扎实工程功底的后端工程师而言,这是“主场作战”的绝佳机会。我们擅长的分布式系统、高并发、数据库、API设计、系统稳定性保障等技能,正是当前AI应用从“玩具”走向“生产系统”所最急需的。 核心机会领域:
- AI应用架构师:设计能够承载海量AI请求、管理复杂Agent状态、控制推理成本、保障数据安全与隐私的企业级AI中台架构。需要思考如何做负载均衡、限流降级、缓存策略(针对Embedding、Prompt模板)、以及如何将AI能力与现有的微服务架构无缝融合。
- RAG/Agent核心开发工程师:这是目前企业落地AI需求最旺盛的岗位。你需要深入理解RAG的每一个环节(分块、Embedding、向量检索、重排序),能针对业务数据特点进行调优;你需要能设计高效的Agent工作流,处理工具调用的错误与重试,实现有效的记忆和反思机制。
- AI基础设施与工具链开发者: • 构建和维护内部的MCP工具生态。 • 开发可视化的工作流编排平台,让业务人员也能参与AI流程设计。 • 搭建完善的AI应用监控、调试、评估(A/B测试)平台。 • 优化模型推理服务,研究模型量化、蒸馏、服务端缓存等技术以降低成本。 具体行动指南:如何从现在开始,构建你的AI工程能力栈? 学习路径建议(由浅入深):
- 第一阶:建立直觉与手感(1-2周) • 行动:深度使用ChatGPT、Claude、DeepSeek等主流产品,用它们辅助你日常的编程、写文档、学习新知识。刻意练习Prompt Engineering,在真实场景中体会不同指令带来的效果差异。 • 目标:消除对AI的“神秘感”,建立人机协作的基本直觉。
- 第二阶:掌握核心武器库(1个月) • 行动:系统学习LangChain(或LangChain4j for Java)框架。用它亲手搭建几个经典项目: • 一个简单的命令行问答机器人(理解Chain、LCEL)。 • 一个基于本地文档的RAG系统(理解DocumentLoader、TextSplitter、VectorStore、RetrievalQA)。 • 一个带有Function Calling的天气查询/邮件发送Agent。 • 目标:理解主流框架的抽象概念,具备快速原型开发能力。
- 第三阶:深入原理与优化(2-3个月) • 行动: • LLM:学习Transformer架构的基本原理(注意力机制、前馈网络、层归一化)。不必推导公式,但需理解其数据流向。 • Embedding:了解不同嵌入模型的特性及如何选择。 • 向量数据库:选择一种(如PGVector),学习其部署、索引构建和查询优化。 • 评估:学习使用RAGAS等工具评估你的RAG系统质量。 • 目标:能从原理层面分析和解决实践中遇到的问题,而不是只会调库。
- 第四阶:工程化与架构设计(持续) • 行动: • 将一个原型项目改造为可生产部署的服务,考虑API设计、错误处理、日志监控、成本核算。 • 研究如何将AI能力嵌入到你现有的Java/Spring Cloud微服务架构中。 • 关注开源社区(如LangChain, AutoGPT, CrewAI)的最新进展和最佳实践。 • 尝试参与一个相关的开源项目,哪怕只是提交文档或修复一个简单的bug。 • 目标:具备设计和领导一个企业级AI项目落地的能力。 技术的本质,始终是解决问题。从编写Java Servlet到设计分布式微服务,再到如今构建AI驱动的智能系统,不变的内核是我们拆解复杂问题、设计优雅架构、实现稳健方案的工程化思维。AI不是要取代这种思维,而是要将其应用到一片更广阔、更具挑战性的新大陆上。 现在,地图已经在你手中。下一步,是选择你的第一个坐标,然后,出发。 附:万字拆解知识图谱(此处本应有一张可视化知识图谱,概括从LLM到Agent工程化的全链路技术与依赖关系,但由于文本格式限制,建议读者根据文中结构自行绘制,这将是一次极佳的知识内化练习。)
本文基于2026年6月的技术视野撰写,AI领域日新月异,文中提及的具体工具、模型和框架版本可能很快迭代,但其中揭示的技术演进逻辑与工程化思想,希望能为你提供长久价值的参考。