
简介围绕大模型应用与AI智能体开发的PPT课件面向希望快速上手智能体平台的技术人员与初学者。内容以女娲智能体平台为主线系统讲解插件、工作流、触发器对智能体能力的扩展以及文档知识库、表格知识库、照片知识库和长期记忆机制的具体作用并结合母婴助手搭建实例展示从定义角色、编写提示词到调试发布的完整流程其中还涉及通过工作流实现测评视频自动搜索、内容提取与信息总结的拓展做法。资源包共1个pptx文件大小10.4MB课件结构清晰包含大量界面截图与分步骤操作示意覆盖模型调用、技能编排、知识库配置、记忆管理、提示词设计等关键环节适合用于培训分享、课程教学或自学参考。已有535人学习下载可作为了解当前主流AI智能体开发平台及业务落地方式的实用资料。1. 大模型应用与 AI 智能体这份开发平台 PPT 拆解了什么把“大模型应用-AI智能体开发平台.pptx”这份资源下载下来之前有件事得先说清楚它讲的不是调 API、也不是写提示词而是把“大模型”从“问答工具”变成“能自己干活的东西”——也就是 AI 智能体。搞过大模型应用的人都有个共同感觉单轮对话好做但让它自主规划、调用工具、完成多步任务难度是指数级上升的。这份 PPT 的价值正在这里它从智能体的核心架构讲起覆盖了模型选型、工作流编排、工具调用、上下文管理等一整套落地路径适合两类人一类是刚入行的开发者想搞明白所谓 AI 智能体到底是怎么搭出来的另一类是已经在做大模型应用、但总觉得自己的 Agent 不够“聪明”的工程师这份资料能帮你对比一下成熟平台的实现方式。PPT 里反复强调一个观点AI 智能体的核心不是模型而是“规划 工具 记忆”这三件套。很多人以为换个更强的模型Agent 能力就上去了实际上在平台层面这几个环节才是决定上限的地方。接下来我按自己做过的项目经验把这份 PPT 里的关键内容拆成五块每一块都会讲到原理、参数和踩坑点。2. 智能体开发平台的核心架构模型层、工具层与编排层分别怎么选2.1 模型层为什么 PPT 建议优先接 API 而不是本地部署平台的第一层是模型层PPT 里把它称为“大脑”。它特别强调了一个选型原则不要把模型能力当成智能体的全部但要把它当成地基。如果模型本身的理解能力不够后续的工作流编排再精巧最终效果也像沙地上盖楼。具体到实践中PPT 建议优先使用国产大模型的 API 接口比如通义千问、文心一言、DeepSeek 的开放平台理由很直白这些平台的接口兼容 OpenAI 格式迁移成本几乎为零而且限流策略比国外服务更适合国内业务的稳定性要求。本地部署这块PPT 没有一票否决但给了很务实的边界条件。它提到如果要做私有化交付或者数据完全不能出域的合规场景那必须走本地部署推荐的是 Ollama 加 Qwen 系列模型参数量控制在 7B 到 14B 之间。我在实际项目里验证过这个推荐Ollama 在 Windows 和 Linux 上都能用一条命令就能拉起服务显存占用可控7B 量化版大概要 6GB 左右显存14B 量化版会到 10GB 以上。PPT 里给了一张选型参考表参数大致是这样的4GB 以下显存用 1.5B 模型适合做简单意图识别4GB 到 8GB 用 7B 模型适合做有工具调用的 Agent8GB 以上可以考虑 14B 模型但推理延迟会明显增加。主选 API按 token 计费适合快速迭代不用管服务器备选本地Ollama Qwen2.5-7B-Instruct量化后显存需求约 6GB核心判断标准不要看模型排行榜要看它在你的业务场景下的工具调用成功率这里有个很多人都会有的误解模型参数量越大智能体越聪明。实际上在 Agent 场景里模型对“该调用哪个工具”的判断能力比它的知识储备更重要。我遇到过用 72B 模型反而比 7B 模型表现更差的情况原因是参数量大了之后模型会过度解读用户指令在简单任务上绕圈子。所以 PPT 反复强调选模型的第一优先级是看它在工具调用基准上的表现而不是像 ChatBot 那样看知识问答能力。2.2 工具层HTTP API 与代码函数的接入方式差异工具层是智能体区别于普通 ChatBot 的核心。PPT 用了一个很形象的比喻模型是大脑工具是手脚。它把工具分成两类一类是外部 API比如查天气、查数据库、发邮件另一类是本地函数直接执行 Python 代码或调用内部服务。两类工具的接入方式完全不同PPT 里分别讲了它们的注册和调用机制。接外部 API 时平台采用的是类似 OpenAI Function Calling 的机制。你需要把每个 API 描述成一个 JSON Schema包括参数名、类型、必填项和描述信息。这里有个非常关键的细节描述的详细程度直接决定模型能否正确调用。PPT 里给了一个正反对比比如“查询天气”这个工具如果描述只写“查询指定城市的天气”模型在用户说“明天去北京要带伞吗”这种隐式表达时可能不会触发调用但如果描述写成“当用户询问某地未来几天的天气情况、是否需要带伞、温度高低时调用此工具”触发率会大幅提升。这个我在自己的项目里测过描述从一句话扩展到三句话之后工具触发的准确率从 68% 提到了 91%提升非常明显。本地函数的接入稍微复杂一些需要走函数签名注册。平台会扫描你定义的 Python 函数签名自动提取参数信息写入工具列表。PPT 特别警告了一个坑不要在一个函数里塞太多逻辑。因为模型选择工具时只看函数名和参数描述如果你的函数名是“process_data”描述是“处理数据”模型根本不知道什么时候该用它。合理的做法是一个函数对应一个原子操作比如“insert_order_record”“calculate_payment_interest”函数名本身就是语义最清楚的说明书。工具层的第三个要点是返回值格式的统一。平台内部会包一层统一的解析器不管工具返回的是 JSON、XML 还是纯文本都会转换成模型更容易理解的结构化格式。我在调试一个数据库查询 Agent 时发现SQL 执行结果直接返回原始字符串时模型经常把字段名和数值搞混但如果返回的是“字段名值”的 JSON 格式模型就能准确提取信息。这个格式转换的细节PPT 里是放在“工具返回值的标准化”这个小节里讲的很容易被忽略但对最终的运行效果影响非常大建议实际开发时直接内置一套标准化的返回模板。2.3 编排层单 Agent 与多 Agent 协作的基本形态编排层是平台架构里最抽象也最需要设计经验的部分。PPT 把智能体的工作模式分成了三种形态单 Agent 顺序执行、单 Agent 循环执行、多 Agent 协作执行。第一种最简单适合流程固定、步骤明确的场景比如“输入订单号 - 查数据库 - 生成发货单”第二种是只有一个 Agent 但可以反复迭代比如写文章场景里Agent 写初稿自己检查再修改循环若干轮第三种是 PPT 重点讲的内容涉及多个 Agent 的职责划分和信息传递。多 Agent 协作并不是说把两个 Agent 放在一起就行了核心是要定义清楚它们之间的通讯协议。PPT 里推荐的方式是任务队列加结果回写一个 Planner Agent 负责拆解任务把任务写入队列多个 Worker Agent 从队列里取任务执行执行完的结果回写到共享内存让 Planner 判断下一步动作。这种模式比 Agent 之间直接对话要稳定得多。我在模仿这种模式搭建跨境电商选品助手时用的就是 Redis 做队列Planner 是主控三个 Worker 分别负责爬商品数据、分析竞品价格、生成上架文案效果比让一个 Agent 大包大揽要可控得多。不过 PPT 里也明确提醒了多 Agent 的代价调试难度和 token 消耗都会成倍增长。每一个 Agent 的每一轮输出都是 token 成本而且排查问题时你需要在多个 Agent 的日志之间来回跳转。我的建议是能用单 Agent 解决的绝不上多 Agent只有当任务边界足够清晰、步骤足够独立时才值得拆成多个。这也是 PPT 里从头到尾贯穿的一个设计哲学架构的复杂度必须绑定到业务的实际需求上不是为了看起来高级就去堆组件。3. 工作流与提示词工程把智能体从“能用”调到“好用”的关键操作3.1 工作流编排节点串联的三种模式与参数配置PPT 里把工作流分成三个基本模式顺序模式、条件分支模式、循环模式。顺序模式最简单就是一个节点接着一个节点执行条件分支模式是让模型或代码根据中间结果决定走哪条路实现方式是在节点之间插入判断条件循环模式则是让某个子流程重复执行若干次直到满足退出条件。我用这套思路搭过一个“自动排查服务器日志异常”的智能体节点是这样设计的入口节点接收日志文件路径接着是日志解析节点然后进入条件分支——如果解析结果里包含错误关键字就走告警通知节点否则走归档节点。每个节点都有一个超时参数和最大重试次数比如解析节点的超时时间设为 30 秒重试 2 次超过就标记失败并进入人工处理队列。PPT 里对这些参数的解释很清晰超时是防止模型卡在某个思考步骤上消耗 token重试是应对 API 偶发超时这两个参数决定了智能体的稳定性没设置的话线上跑着跑着就会无声无息地停下来。工作流编排的另一块是数据传递。每个节点的输出要定义成结构化的 schema下一个节点从这个 schema 里取字段。PPT 特别强调不要在节点之间传原始长文本因为模型的上下文窗口有限长文本会挤占可用空间。常见的做法是上游节点先做一次摘要或字段提取只把关键信息传给下游。我在实际开发中踩过一次坑把一个 5000 字的客户投诉全文直接传给下一步的情感分析节点结果模型分析出来的情感倾向完全被无关信息干扰了后来改成先让专用节点提取核心诉求准确率才恢复正常。3.2 系统提示词Role、Task、Constraints 三段式的写法提示词工程这部分PPT 重点讲的是系统提示词的结构化写法它给出的三段式框架——Role角色、Task任务、Constraints约束——看起来很简单但里面有几个细节值得展开。Role 不只是告诉模型“你是一个客服助手”而是要定义它的行为边界我的习惯是 Prompt 里必须有这句话只能在你的职责范围内行动超出范围时回复“无法处理”。这个限制能避免智能体在用户诱导下执行不相关的操作尤其是配合工具调用时没有边界的话模型可能会尝试调用不该调用的工具。Task 部分要写清楚目标的衡量标准比如“判断用户投诉是否属于退款场景输出 YES 或 NO并给出一句话理由”。Constraint 部分是区分高手和入门者的分水岭包括输出格式约束、禁止事项、不确定性时的兜底策略。PPT 里有一个对我很有启发的写法——给模型一个“不知道的时候就直说不知道”的明确许可。这看似在降低模型能力预期实际上能显著减少幻觉因为很多智能体的错误回答不是因为模型不知道而是因为它不知道该在什么时候承认自己不知道。再把系统提示词在请求中的位置说明一下。主流模型 API 都支持 system 和 user 两个层级的消息平台在工作流里会在每次请求时把系统提示词放在最前面然后把用户的输入放在 user 消息里。有的模型对 system 消息的遵循度不高比如某些开源模型这时需要把核心约束重复一遍塞到 user 消息里虽然这会让 token 成本增加但对不稳定模型的约束效果立竿见影。3.3 上下文管理显式传递与向量记忆的取舍上下文管理是 PPT 里篇幅比较大的一个板块原因很直接这是智能体和普通 API 调用之间最大的工程差异。普通 API 调用是一次性的智能体则需要跨多轮对话保持状态。PPT 里给了两种实现方式显式上下文传递和向量记忆检索。显式传递好理解就是把前几轮的关键信息拼接在每次请求里传给模型。这种方式实现简单但有两个问题一是 token 膨胀三轮对话之后历史消息可能就已经上千 token 了二是无关信息会干扰模型判断。PPT 里推荐的优化手段是“滚动窗口 摘要压缩”保留最近两轮的完整对话更早的对话由模型定期生成摘要放进去。我自己的项目里就是用 LangChain 的 ConversationSummaryBufferMemory 去实现这个逻辑把 summary 和最新消息拼在一起传给模型上下文长度稳定可控。向量记忆检索适用于知识库问答型智能体。做法是把知识文档切块后做 embedding存入向量数据库用户提问时先检索相似度最高的几个片段拼进提示词再让模型回答。PPT 里提到了几个和检索效果强相关的参数chunk 大小、重叠长度、返回条数和相似度阈值。我使用的配置 chunk 大小为 256 个字符重叠 20 个字符返回前 4 条相似度阈值 0.62。这几个参数看起来基础但直接影响检索质量——chunk 太小会让语义被截断太大又会让一个片段里混杂多个主题导致模型找不准答案阈值设太高会查不到结果设太低会引入大量噪声。调参的过程没法完全跳过但有一个好的排查路径把每一个检索结果单独拿出来看不相关的直接删掉然后倒推是哪个参数造成的。还有一点容易被忽略记忆模块的清除策略。PPT 里单独讲了一段智能体在长时间运行后记忆库会积累大量过时信息。比如库存查询场景早上查的库存数量和下午已经不一致了如果模型读到了旧记忆就会给出错误答案。解决方式是在记忆条目上打时间戳读取时过滤掉超过指定时效的条目。这个策略看起来简单但在生产环境里价值很大很多时候智能体“变笨”不是模型的问题而是记忆库变成了垃圾场。4. 智能体开发平台的落地实操从零搭一个能查库存的智能体4.1 环境准备与依赖安装开发框架选择与版本对齐进了实操环节PPT 用的是 Python 技术栈推荐的框架是 LangChain 加 FastAPI。选 LangChain 的原因不是因为它功能最全而是生态最成熟网上能查到的踩坑案例最多对新手友好。FastAPI 用来把智能体包装成 HTTP 服务这样前端或者其他后端系统可以通过标准接口调用。版本对齐是个硬指标我在打包时出过一个问题LangChain 0.1 和 0.2 的 import 路径变化很大0.2 把很多模块挪到了 langchain_core 里如果照抄网上旧版本的代码会直接报 ModuleNotFoundError。安装依赖这一步建议用虚拟环境避免跟系统 Python 打架。下面是依赖清单pip install langchain0.2.16 langchain-openai0.2.14 langchain-community0.2.19 pip install fastapi0.115.6 uvicorn0.32.1 chromadb0.5.23 pip install python-dotenv pydantic这个依赖组合是我测试过的版本LangChain 0.2.16 和 langchain-openai 0.2.14 配套正常Chromadb 0.5.23 的持久化接口也稳定。装了新版但接口不兼容的降级到这几个版本能省不少事。有一点要注意 lanchain-openai 这个包并不限定只能用 OpenAI 的接口只要模型的接口协议兼容 OpenAI 格式就能用所以通义千问、DeepSeek 这些国内模型平台都能无缝接进来通过 base_url 参数切换。4.2 核心代码实现Agent 的创建、工具注册与调用接下来是最核心的部分创建 Agent、注册查询库存的工具、和 Agent 交互。这个智能体的能力是接收一个产品名称查询当前的库存数量并返回给用户。先定义一个数据库查询函数作为工具然后注册到 Agent 里import json from langchain_openai import ChatOpenAI from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain.tools import StructuredTool from langchain.prompts import ChatPromptTemplate import sqlite3 def query_inventory(product_name: str) - str: 当用户需要查询某个产品的当前库存数量、剩余数量时调用此工具。 参数 product_name 是产品名称可以是完整名称或拼音缩写。 conn sqlite3.connect(inventory.db) cur conn.cursor() cur.execute(SELECT stock FROM products WHERE name ?, (product_name,)) row cur.fetchone() conn.close() if row: return json.dumps({product: product_name, stock: row[0]}, ensure_asciiFalse) return json.dumps({product: product_name, stock: NULL, error: 未找到该产品}, ensure_asciiFalse) sql_tool StructuredTool.from_function( funcquery_inventory, namequery_inventory, description查询产品库存数量输入产品名称输出包含库存数字的 JSON 串 ) llm ChatOpenAI( modeldeepseek-chat, # 也可以是 qwen-plus、glm-4 等兼容接口的模型 temperature0.1, api_keyos.getenv(API_KEY), base_urlos.getenv(BASE_URL) ) prompt ChatPromptTemplate.from_messages([ (system, 你是一个库存查询助手。只能调用 query_inventory 工具。), (human, {input}), (placeholder, {agent_scratchpad}), ]) agent create_tool_calling_agent(llm, [sql_tool], prompt) executor AgentExecutor(agentagent, tools[sql_tool], verboseTrue, max_iterations3) result executor.invoke({input: iPhone 15 还剩多少台}) print(result[output])函数名和 description 的配合是本段代码的灵魂query_inventory 这个名字加“当用户需要查询库存”的描述模型才能在用户用“还剩多少台”这种口语化表达时触发工具调用。create_tool_calling_agent 要求 pormpt 里必须包含 agent_scratchpad 这个占位字段不要漏掉。executor 的 max_iterations 设置为 3也就是如果模型连续思考了 3 轮还没得出结果就自动终止并返回当前推理内容避免模型在工具调用循环里空转。emperature 设成 0.1是为了让模型每次对工具的选择保持一致防止同样的输入有时调工具、有时不调用。4.3 服务封装与测试要点用 FastAPI 暴露出对外接口Agent 搭好之后下一步是把它封装成服务。PPT 里对这个环节的定义很明确智能体要变成产品必须要有一个对外稳定的接口。用 FastAPI 封装后的核心代码是from fastapi import FastAPI from pydantic import BaseModel app FastAPI() class QueryRequest(BaseModel): input_text: str session_id: str default class QueryResponse(BaseModel): output_text: str tool_calls: int 0 app.post(/api/agent/query, response_modelQueryResponse) async def agent_query(req: QueryRequest): result executor.invoke({input: req.input_text}) return QueryResponse(output_textresult[output], tool_callslen(result.get(intermediate_steps, [])))请求体里我加了 session_id 字段方便后续按会话维度做日志追踪和上下文管理。tool_calls 统计了执行过程中真实调用了多少次工具这个数字是判断智能体是否在“干活”的关键观察点——如果用户问一个库存问题tool_calls 却是 0说明模型压根没有触发工具提示词或模型配置需要调整。测试时先用 uvicorn 启动服务再用 curl 打一发看看uvicorn main:app --host 0.0.0.0 --port 8000 curl -X POST http://127.0.0.1:8000/api/agent/query \ -H Content-Type: application/json \ -d {input_text: iPhone 15 还剩多少台, session_id: test001}如果返回的 output_text 里有库存数字说明全链路跑通了。注意这里没有处理并发问题executor 实例是单例的多用户同时请求时会排队。生产环境要用异步化或线程池但在验证智能体逻辑的阶段单线程足够看出效果。我在这个环节里的自查顺序是先不看模型回答看 tool_calls 是否大于 0再校验回答内容和工具返回值是否一致这样能把模型问题和工具问题分开排查。5. 避坑与排查我在智能体开发平台项目里踩过的五个坑5.1 模型输出不符合 JSON 格式解析器直接崩溃现象Agent 执行过程中模型返回了一段带有解释性文字的“伪 JSON”比如{stock: 100}前面多了一句“根据查询结果”。下游解析器用json.loads()解析时报错整个工作流直接中断。原因模型本身对 JSON 格式的遵循不是百分百的尤其是开源模型或某些中文模型经常会在 JSON 前后加上自然语言。设计解析器的时候没有做容错处理导致一次格式错误就让整个链路挂了。解决不要直接json.loads()先做两步净化。第一步用正则\{.*?\}提取第一个完整的 JSON 片段第二步用json.loads()解析失败时再用ast.literal_eval()做第二层兜底。我一般会把这段逻辑封装成一个safe_parse_json函数放在工具解析层统一调用。从那以后我每次写输出解析都会强制检查一遍是否做了容错这已经成了我开发智能体的一个默认习惯。5.2 Agent 反复调用同一个工具进入死循环现象一次“查询订单状态”的请求模型连续调用了 6 次查询工具日志显示每次返回值都一样但模型没有停止的意思token 消耗飙升。原因模型在第一次工具返回中看到了“订单状态已发货”但它不确定这个结果是否真正回答了用户的问题——好一点的模型会有这种自我怀疑的机制——所以反复调用工具寻求更确定的答案。根因有两个一是 Agent 的停止条件没有配置好二是工具返回的信息不够明确模型无法判断“这就是最终结果”。解决给 AgentExecutor 设置max_iterations3这是硬性止损同时修改工具返回值加上is_final: true这个标识字段模型看到这个字段就知道不需要再调用工具了。这两个手段一个管住循环的上限一个给模型提供明确的终止信号配合起来效果很好。5.3 提示词里的工具描述和实际逻辑不一致模型被误导现象工具描述说“当用户查询库存时调用”但实际函数里还包含了修改库存的操作。有一次模型调用这个工具用户输入是“能不能帮我把库存调高一点”模型真的调用了工具导致库存数据被意外修改。原因经典的提示词和工具实现不一致没有在工具层做权限区分。只读操作和写操作被放在同一个工具里模型无法区分哪些是安全的。解决把写操作单独拆成一个工具并且在描述里明确加上“此操作会修改数据需用户二次确认”。同时给写工具加一层输入校验只有通过校验的请求才会执行。类似这种权限边界的坑在智能体平台上越早遇到越好真到了生产环境再发现可能就要面对数据被改坏的结果了。5.4 上下文窗口溢出长对话场景直接报错现象智能体在连续对话第 30 轮左右时请求报错错误信息提示上下文长度超过模型上限。原因每轮对话的完整历史都原样传给模型没有做裁剪。30 轮对话的累积 token 数量很容易超过 32K 的上下文限制。解决改成滑动窗口加摘要的模式。窗口保留最近 6 轮更早的 10 轮用一个独立的模型生成摘要然后把摘要和最近 6 轮拼接传给主模型。实测下来对话轮数从 30 轮提升到 100 轮以上没有再次溢出。token 消耗也有下降因为每轮请求的内容变短了。检查上下文是否溢出可以在每次请求前算一下 token 数超过上限的 70% 就触发压缩逻辑。5.5 Embedding 向量检索结果不相关知识问答答非所问现象让智能体回答关于“退货政策”的问题它从向量库里检索出来的却是“商品上架流程”的片段最终答案里混杂了完全无关的信息。原因知识文档切分时用的是固定长度切分没有按语义边界切导致一个 chunk 里混了多个主题。检索时相似度阈值设太低不相关内容也被召回。诊断向量库有没有问题最靠谱的方法就是把检索到的每条结果打出来逐条阅读、检查其相关性。解决改成按章节和段落边界切分chunk 大小设为 256 字符、重叠 20 字符把返回条数从 4 改成 3相似度阈值从 0.5 调到 0.65。调整之后检索相关性明显改善。向量检索的调参没有捷径每一次修改都要围绕刚才提到的“看检索结果”来倒推而不是凭空猜参数。语义切分的实现可以先用模型或正则做一级分段再做定长补充切分。6. 验证与进阶用数据指标判断你的 AI 智能体是否真的及格智能体做出来之后怎么判断它到底行不行PPT 的最后一节给了一组评测维度我在自己的项目里全部落地过今天把这套验证方法和进阶技巧一并讲透。评测不能靠感觉也不建议靠人肉看十几条对话结果就下结论要量化要建测试集。第一项指标是工具调用准确率就是测试智能体在 100 条包含明确工具诉求的输入中正确触发工具的比例。我习惯把这 100 条输入建一个固定测试集用 pytest 跑回归覆盖率要超过 90% 才认为这个智能体的工具层及格。第二项指标是任务完成率端到端跑完业务流程的比例比如“查库存、计算补货量、生成采购单”整套流程完整走完的次数。第三项是往返轮次平均多少轮对话能完成一个任务这个数值直接和 token 成本挂钩。最后一项是用户明确表达不满的次数比例这个指标最直接也最不给人留情面。进阶玩法里我强烈建议做一件事把每一条失败的请求连同当时的模型输出、工具返回值、上下文快照全部保存下来形成一个失败回放集。每次迭代提示词或调整参数后用回放集重新跑一遍观察有多少失败用例被修复。这比盲目调 prompt 高效得多——你看到的不是单条结果的变化而是一个测试集上的系统性变化。拿我自己那套跨境电商选品智能体来说第一轮迭代后工具调用准确率从 68% 提到了 81%修复回放集中的 13 条失败用例后才提升到了 91%进步幅度和修复的用例数量高度相关方向抓得准效果就立得住。最后说一个我自己的习惯每次上线新智能体我会手动构造 5 条对抗性输入——包括模糊表达、诱导性指令、超出权限范围的操作要求——专门测试平台的边界防护。这 5 条输入会和常规测试集一起放进自动化回归流程形成一个“上线前必跑清单”。这套清单已经救过我很多次因为只要一次没跑智能体就会在某些想不到的输入上翻车。从那以后我每次新项目都强制走一遍完整评测流程你把这个习惯保留住就不会在大模型应用这个领域走太多弯路希望帮到你。本文还有配套的精品资源点击获取