从大模型到智能体:AI应用开发的系统工程化演进与实践指南 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度你是不是经常听到“大模型”、“Agent”、“RAG”这些词感觉它们很火但又觉得离自己很远或者概念太多根本记不住你不是一个人。很多开发者甚至一些技术博主都只是停留在“知道名字”的阶段一旦被问到“它们之间到底什么关系”、“我该从哪开始用”就立刻卡壳。这篇文章要解决的就是这个问题。我们不堆砌晦涩的论文术语也不做泛泛而谈的趋势分析。我将用一个贯穿始终的“智能开发助手”场景把大模型、提示词、Agent、Skill、RAG、MCP、工作流这七个核心概念串起来让你不仅知道它们是什么更知道它们为什么出现、解决了什么具体问题以及你该如何上手实践。我的核心判断是AI 应用的开发正从“单点提示词技巧”演变为“系统工程”。理解这套“系统工程”的组件和协作方式是当前开发者用好 AI 的关键。下面我们就从最基础的“大模型”开始一步步搭建起你的认知框架。1. 基石大模型LLM—— 不是万能而是“通才”大模型Large Language Model, LLM是这一切的起点。你可以把它理解为一个博览群书、记忆力超强的“通才实习生”。它读过互联网上几乎所有的公开文本所以它能和你聊历史、写诗、编代码、解数学题。但它的核心局限是什么知识截止它的知识停留在训练数据截止的那个时间点例如 GPT-4 可能是 2023 年初。它不知道之后发生的新闻、你公司内部的文档、或者你私人的笔记。“幻觉”当被问到它不知道的事情时它倾向于“自信地编造”一个听起来合理的答案而不是说“我不知道”。缺乏“行动”能力它很会“说”但不会“做”。它无法替你查询数据库、发送邮件、调用 API 或操作浏览器。所以直接问大模型“帮我根据我们公司 Q3 的销售数据写一份总结报告。” 它大概率会瞎编一份数据。大模型本身是一个强大的文本理解和生成引擎但它不是一个完整的应用。我们需要其他技术来弥补它的短板。2. 沟通术提示词Prompt—— 如何给“通才”下指令既然大模型是“通才”我们如何让它完成特定任务靠的就是提示词Prompt。提示词就是你给大模型的指令和上下文。从“聊天”到“工程”的演变基础提示词“写一首关于春天的诗。”角色设定提示词“你是一个经验丰富的 Python 后端开发专家。请用 Flask 框架编写一个简单的用户登录 API 接口。”这通过设定角色引导模型输出更专业的代码结构化提示词Few-Shot Learning这是提示词工程的核心。你不光告诉它做什么还给它几个例子。# 这是一个将用户问题分类的提示词示例 prompt 你是一个客服问题分类机器人。请将用户的问题分类为 [技术故障, 账户问题, 计费咨询, 产品功能, 其他]。 示例 用户我的账号无法登录了。 分类账户问题 用户新上线的图表功能怎么用 分类产品功能 用户服务器响应很慢。 分类技术故障 现在请对以下问题进行分类 用户我这个月的账单金额不对。 分类 # 期望输出计费咨询提示词的局限性它本质上是将“知识”硬编码在指令里。当知识量很大、需要实时更新、或者属于私有信息时维护一个庞大的提示词是不现实的。这就引出了 RAG。3. 外接大脑RAG检索增强生成—— 给模型“开卷考试”如何让大模型获取它“不知道”的知识比如你公司的内部文档、最新的行业报告、或者你的个人知识库。最朴素的想法是把这些文档全部塞进提示词里。但大模型有上下文长度限制比如 128K tokens而且每次问答都传输大量文本速度慢、成本高。RAGRetrieval-Augmented Generation提供了优雅的解决方案。它的核心思想是“开卷考试”。检索Retrieval将你的知识库文档、网页、数据库拆分成片段Chunks建立索引类似图书馆的目录。增强Augmentation当用户提问时系统根据问题从索引中快速检索出最相关的几个知识片段。生成Generation将这些检索到的片段作为“参考资料”和用户问题一起构成新的提示词交给大模型生成最终答案。一个极简的 RAG 流程代码示意# 伪代码展示 RAG 核心逻辑 from your_vector_store import VectorStore # 向量数据库用于存储和检索 from your_llm import LLM # 大模型 # 1. 知识库预处理通常离线进行 documents [文档1内容..., 文档2内容..., ...] vector_store VectorStore() vector_store.add_documents(documents) # 文档切片并转换为向量存入 # 2. 用户提问时 user_query 我们公司今年的差旅报销政策有什么变化 # 3. 检索相关片段 relevant_chunks vector_store.search(user_query, top_k3) # 检索最相关的3个片段 # 4. 构建增强提示词 context \n\n.join(relevant_chunks) augmented_prompt f 请基于以下参考资料回答问题。如果资料中没有相关信息请直接说“根据现有资料无法回答”。 参考资料 {context} 问题{user_query} 答案 # 5. 调用大模型生成答案 answer LLM.generate(augmented_prompt) print(answer)RAG 解决了大模型的“知识”问题但它仍然不会“行动”。它只能基于已有文本回答问题。如果要执行“查一下我明天的会议安排并邮件通知参会人”这样的任务就需要 Agent。4. 执行者Agent智能体—— 会思考、会拆解、会调用工具Agent 是大模型应用的一次范式升级。如果说之前是大模型“亲自”回答问题那么 Agent 就是大模型作为“大脑”指挥一个“身体”各种工具去完成任务。Agent 的核心工作流规划理解用户复杂目标如“策划一次团队建设活动”并将其拆解为可执行的子任务确定预算、调研地点、收集人员时间、预订场地。工具调用为每个子任务选择合适的工具Skill来执行。例如用“搜索引擎”工具调研地点用“日历”工具查看大家空闲时间用“邮件”工具发送通知。反思与迭代检查工具执行的结果判断任务是否完成。如果未完成或结果不理想则调整计划或重新执行。一个 Agent 的决策循环伪代码# 伪代码展示 Agent 的思考-行动循环 class SimpleAgent: def __init__(self, llm, tools): self.llm llm self.tools tools # 一个工具字典如 {search: GoogleTool, calculator: CalcTool} def run(self, user_goal): plan self.llm.generate(f请将目标拆解为步骤{user_goal}) steps parse_plan(plan) for step in steps: # 思考这一步需要用什么工具输入是什么 thought self.llm.generate(f为了完成‘{step}’我应该使用哪个工具可用工具{list(self.tools.keys())}) tool_name, tool_input parse_thought(thought) # 行动调用工具 if tool_name in self.tools: tool self.tools[tool_name] result tool.execute(tool_input) print(f[行动] 使用 {tool_name}输入‘{tool_input}’结果{result}) else: result f错误找不到工具 {tool_name} # 观察将结果纳入上下文决定下一步 # ... Agent 会根据结果决定继续下一步、重试还是调整计划 return 任务完成Agent 让大模型从“聊天机器人”变成了“数字员工”。而 Agent 赖以行动的那些“工具”就是 Skill。5. 技能包Skill技能—— Agent 的“手和脚”Skill有时也叫 Tool 或 Function是 Agent 能够调用的具体能力单元。一个 Skill 通常对应一个具体的 API、函数或操作。常见的 Skill 类型信息获取类网络搜索、数据库查询、知识库检索RAG 本身也可以被看作一个强大的检索 Skill。计算与逻辑类计算器、代码解释器、数据分析。系统交互类读写文件、执行命令行命令。应用操作类发送邮件、创建日历事件、操作 CRM 系统、控制智能家居。多模态类生成图片、识别图像内容、文本转语音。定义一个简单的计算器 Skill# 一个简单的 Skill 示例 class CalculatorSkill: name calculator description 执行数学计算。输入一个数学表达式如 2 3 * 4。 def execute(self, expression: str) - str: try: # 警告实际生产中请使用更安全的评估方法如 ast.literal_eval 或自定义解析器 # 此处仅为演示 result eval(expression) return str(result) except Exception as e: return f计算错误{e} # 将 Skill 注册给 Agent my_agent.tools[calculator] CalculatorSkill()当用户对 Agent 说“请计算一下 125 的平方根加上 50 是多少”时Agent 会规划出“需要计算”然后调用calculator这个 Skill传入表达式“sqrt(125) 50”得到结果后再组织语言回复给用户。那么如何让不同的 Agent 系统能方便地发现和使用这些 Skill 呢这就需要一套“协议”也就是 MCP。6. 连接器MCP模型上下文协议—— Skill 的“通用插座”MCPModel Context Protocol是一个由 Anthropic 公司提出的开放协议。你可以把它理解为Skill 的“USB-C 标准”。在没有 MCP 之前每个 AI 应用平台如 Claude Desktop、Cursor、自己开发的 Agent 系统都需要为每一个想集成的工具如 GitHub、Jira、数据库单独开发适配器工作量大且不通用。MCP 解决了什么问题标准化它定义了 Skill在 MCP 中称为“资源”和“工具”应该如何被描述、被发现、被调用。解耦Skill 提供者如 GitHub只需要实现一个标准的 MCP 服务器任何支持 MCP 协议的客户端如 Claude Desktop就能立即使用这些 Skill无需额外开发。可组合性开发者可以像搭积木一样将不同的 MCP 服务器提供的 Skill 组合起来构建更强大的 Agent。一个 MCP 服务器的简单概念示例MCP 服务器通过标准接口如 stdio 或 HTTP向客户端宣告“我提供了以下工具search_web搜索网页、read_file读取文件”。客户端如 AI 助手就能在需要时按照协议格式请求调用这些工具。MCP 与 Function Calling 的区别大模型自带的 Function Calling 是一种“请求-响应”机制用于描述和调用单个函数。而MCP 是一个常驻的、独立的服务协议它管理着多个工具的声明、上下文提供如实时数据流和调用更适合构建复杂的、可插拔的 AI 应用生态。最后我们将所有这些概念串联起来就形成了AI 工作流。7. 交响乐工作流Workflow—— 编排一切工作流或称为 Agentic Workflow是最高层次的抽象。它定义了多个步骤、多个 Agent 或组件如 RAG、Skill如何协同工作以完成一个复杂的业务目标。一个“智能周报生成”工作流可能如下触发每周五下午 5 点自动触发。数据收集使用 Skill调用Jira Skill获取本周分配和已解决的任务。调用GitHub Skill获取本周提交的代码和 PR 记录。调用Calendar Skill获取本周参加的会议。信息整合使用 RAG将收集到的结构化数据转换成文本与过往周报模板一起作为上下文输入给大模型。内容生成使用大模型提示词大模型基于整合的信息和指令提示词“请生成一份简洁专业的工程师周报突出进展和风险”生成周报草稿。审查与发布使用 Agent一个审查 Agent 检查草稿的完整性和语气必要时进行调整。最后调用Email Skill或Slack Skill将周报发送给经理。用 YAML 描述一个简化的工作流配置# workflow_weekly_report.yaml name: 工程师智能周报 triggers: - type: schedule cron: 0 17 * * 5 # 每周五17:00 steps: - name: 收集Jira任务 type: skill skill: jira_mcp action: get_my_issues_this_week - name: 收集GitHub活动 type: skill skill: github_mcp action: get_my_prs_and_commits - name: 整合数据并生成报告 type: llm_chain prompt: | 你是一名工程师。请根据以下数据撰写一份本周工作周报。 数据 JIRA任务{{steps.收集Jira任务.output}} GitHub活动{{steps.收集GitHub活动.output}} 要求分点列出语言精炼。 llm: gpt-4 - name: 发送报告 type: skill skill: email_mcp action: send inputs: to: managercompany.com subject: 工程师周报 - {{current_date}} body: {{steps.整合数据并生成报告.output}}工作流将大模型、提示词、RAG、Agent、Skill、MCP 等技术点组合成了一个能自动运行、解决实际问题的完整应用。8. 实践入门从零搭建一个本地 AI 查询助手理论讲完了我们来点实际的。下面是一个极简的实践方案使用 Ollama本地运行大模型、LangChain编排框架和 Chroma向量数据库快速搭建一个能查询你个人文档的本地 AI 助手。8.1 环境准备确保你已安装 Python3.8和 pip。# 创建一个新的虚拟环境推荐 python -m venv ai_assistant_env source ai_assistant_env/bin/activate # Linux/Mac # ai_assistant_env\Scripts\activate # Windows # 安装核心库 pip install langchain langchain-community chromadb pypdf sentence-transformers pip install ollama # Ollama的Python客户端8.2 启动本地大模型服务你需要先安装并运行 Ollama然后拉取一个模型。# 1. 前往 https://ollama.com/ 下载并安装 Ollama # 2. 在终端拉取一个轻量模型例如 Mistral 7B ollama pull mistral # 3. 运行模型服务它会一直在后台运行 ollama serve 8.3 构建个人文档 RAG 系统假设你有一个my_docs文件夹里面放了几份 PDF 文档。我们写一个脚本让 AI 能“阅读”它们。# personal_rag.py import os from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.embeddings import OllamaEmbeddings from langchain_community.vectorstores import Chroma from langchain_community.llms import Ollama from langchain.chains import RetrievalQA # 1. 加载文档 documents [] pdf_folder ./my_docs for file in os.listdir(pdf_folder): if file.endswith(.pdf): loader PyPDFLoader(os.path.join(pdf_folder, file)) documents.extend(loader.load()) print(f已加载 {len(documents)} 份文档。) # 2. 分割文本 text_splitter RecursiveCharacterTextSplitter(chunk_size1000, chunk_overlap200) texts text_splitter.split_documents(documents) print(f分割为 {len(texts)} 个文本块。) # 3. 创建向量数据库使用本地 Ollama 的嵌入模型 embeddings OllamaEmbeddings(modelnomic-embed-text) # 一个不错的开源嵌入模型 vectorstore Chroma.from_documents(documentstexts, embeddingembeddings, persist_directory./chroma_db) vectorstore.persist() print(向量数据库已创建并持久化。) # 4. 创建检索链 llm Ollama(modelmistral) # 使用我们拉取的 mistral 模型 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrievervectorstore.as_retriever(search_kwargs{k: 3}), # 检索最相关的3个片段 return_source_documentsTrue ) # 5. 开始问答 while True: query input(\n请输入你的问题输入 quit 退出: ) if query.lower() quit: break result qa_chain.invoke({query: query}) print(f\n答案{result[result]}) print(\n参考来源) for doc in result[source_documents]: print(f- {doc.metadata.get(source, 未知)} 第{doc.metadata.get(page, N/A)}页)运行这个脚本python personal_rag.py首次运行会处理文档并建立索引之后就可以直接提问了。例如如果你的文档是产品手册你可以问“我们产品的保修期是多久” 系统会从你的 PDF 中寻找答案。8.4 扩展为具有简单 Skill 的 Agent现在我们给这个系统加一个“计算器” Skill让它既能查文档又能做计算。# simple_agent.py from langchain.agents import Tool, AgentExecutor, create_react_agent from langchain import hub from personal_rag import qa_chain # 导入上面创建的 RAG 链 # 1. 定义工具Skill def calculator_tool(expression: str) - str: 用于执行数学计算。输入一个数学表达式字符串。 try: # 安全警告生产环境请勿使用 eval此处仅为演示。 # 可使用 ast.literal_eval 或 math 库解析简单表达式。 result eval(expression) return f计算结果为{result} except Exception as e: return f计算失败{e} # 2. 将 RAG 链和计算器包装成 LangChain Tool tools [ Tool( name文档知识库, funclambda q: qa_chain.invoke({query: q})[result], description当你需要回答关于公司产品、政策、手册等文档内容的问题时使用此工具。 ), Tool( name计算器, funccalculator_tool, description当你需要进行数学计算时使用此工具。输入一个数学表达式如 2 * (3 5)。 ) ] # 3. 创建 Agent prompt hub.pull(hwchase17/react-chat) # 使用一个标准的 ReAct 提示模板 llm Ollama(modelmistral) agent create_react_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue, handle_parsing_errorsTrue) # 4. 运行 Agent while True: user_input input(\n用户: ) if user_input.lower() in [quit, exit]: break response agent_executor.invoke({input: user_input, chat_history: []}) print(f助手: {response[output]})现在你的助手就升级了你可以问“我们产品的价格是多少如果买 10 个总价打九折是多少钱” Agent 会先调用“文档知识库”工具查价格再调用“计算器”工具计算总价。9. 常见问题与排查思路问题现象可能原因排查方式解决方案Ollama 服务连接失败Ollama 未启动或端口被占用在终端运行ollama serve查看输出检查http://localhost:11434是否可访问。确保 Ollama 已正确安装并运行。关闭占用 11434 端口的其他进程。加载 PDF 文档出错PDF 文件损坏或受密码保护PyPDF 版本不兼容。尝试用其他 PDF 阅读器打开文件查看错误堆栈信息。使用完好的 PDF 文件尝试pip install --upgrade pypdf。RAG 回答“根据资料无法回答”检索到的文本块不相关文档未包含该信息文本分割不合理。打印出source_documents看检索到的原文是什么。调整文本分割的chunk_size和chunk_overlap优化文档内容尝试不同的嵌入模型。Agent 不调用正确的工具工具描述不够清晰大模型对任务理解有偏差。开启verboseTrue查看 Agent 的思考链Chain of Thought。修改工具的description使其更精确在提示词中更明确地指导 Agent。运行速度很慢模型太大本地硬件CPU/内存不足未使用 GPU。使用htop或任务管理器查看资源占用。换用更小的模型如llama3.2:3b确保 Ollama 配置了 GPU 加速如支持增加文本块大小减少检索次数。向量数据库占用空间大文档太多或chunk_size太小产生过多向量。检查chroma_db文件夹大小。定期清理无用数据调整分割策略对于大型知识库考虑使用专业向量数据库如 Qdrant, Weaviate。10. 最佳实践与工程建议从简单开始迭代优化不要一开始就追求复杂的多 Agent 工作流。从一个明确的痛点如文档问答开始用 RAG 基础提示词实现 MVP再逐步添加 Skill 和更复杂的逻辑。提示词工程是基础无论技术栈多复杂清晰、结构化的提示词永远是性价比最高的优化手段。为关键任务设计专门的提示词模板。重视评估与测试AI 应用的行为具有不确定性。建立测试集对关键流程如检索准确性、工具调用正确率、最终输出质量进行定期评估。安全与权限是红线最小权限原则赋予 Agent 和 Skill 的权限刚好够用即可。例如一个只读的文档查询 Skill就不要给它删除权限。用户确认对于高风险操作如发送邮件、修改数据设计用户确认环节。输入输出过滤对用户输入和模型输出进行必要的清洗和过滤防止注入攻击或不当内容。拥抱标准化协议在构建自己的 Skill 时考虑采用 MCP 这样的开放协议进行封装。这能极大提高工具的可复用性方便接入不同的 AI 平台。成本与延迟监控大模型 API 调用和向量检索都可能产生成本和延迟。在应用层面加入监控对耗时长的操作进行优化如缓存、异步处理。你现在已经拥有了一个从概念到实践的地图。大模型是引擎提示词是方向盘RAG 是外接导航Agent 是司机Skill 是车辆的功能空调、雨刷MCP 是车辆的标准接口OBD-II而工作流就是预设的自动驾驶路线。理解每个部件的角色和它们如何连接你就能设计出真正解决实际问题的智能应用而不仅仅是和聊天机器人对话。下一步尝试用这个框架去分析你感兴趣的开源项目如 AutoGPT、LangChain、Dify你会发现它们的架构突然变得清晰易懂。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度