
简介《大模型应用-AI智能体开发平台》PPT课件聚焦大模型应用开发平台面向希望掌握智能体设计与搭建的产品经理、开发者及高校师生。内容从平台定义与核心价值切入明确可视化界面、预置模型、全流程工具集成如何降低开发门槛并以女娲智能体平台为主线详解插件、工作流、触发器对智能体能力的扩展方式以及文档知识库、表格知识库、照片知识库各自适用的数据场景。课件拆解了变量、数据库、长期记忆、文件盒子所构成的记忆机制并区分知识与记忆在数据来源、可见性和共享规则上的差异。在实践部分通过母婴助手智能体实例完整演示了智能体创建、提示词编写、技能添加、调试优化以及利用工作流自动总结测评视频的搭建流程具有较强的可操作性。整包为单个演示文稿文件大小10.4MB现有535人学习适合作为教学课件或入门自学资料可按章节顺序阅读并结合平台操作快速上手。1. AI智能体开发平台为什么大模型落地卡在“接线”而不是“模型”企业里做AI落地最容易被低估的一项工作是把大模型接进业务流程。单独调Prompt、微调模型大家已经摸索出不少套路可一旦要把“对话”变成“能干活”的智能体你面对的就是模型怎么选、工具怎么接、记忆怎么存、流程怎么编排这一整串问题。所谓AI智能体开发平台就是把这四件事封装成一套可复用的工程框架让研发团队不用每次从头搭脚手架。这篇笔记会沿着“选型→搭建→调参→排错→上生产”的顺序把做智能体平台的关键环节拆开讲适合正在从Demo往生产推、想少踩坑的工程师。2. 拆开智能体开发平台模型层、记忆层、工具层与编排层的选型逻辑2.1 模型层底座选型不只看分数要看调用成本与控制力先聊模型层因为这一层的选择会直接限制上面几层的设计空间。很多团队选底座模型时习惯看公开榜单的分数这个思路在智能体场景里不够用。一份40分的模型在单轮问答上可能只比90分的差一点但到了连续工具调度、多轮状态跟踪、输出格式强制约束这类任务上差距会迅速放大。我做过的项目里最典型的翻车案例是某个轻量模型在生成JSON时偶尔会在结尾多一个换行符导致下游解析失败单看问答质量根本发现不了。所以我的选型习惯是三步走。第一步把业务里最复杂的5个Prompt场景抽出来做成固定的评测集第二步在候选模型上跑一轮重点看工具调用准确率和结构化输出成功率第三步估算单位token成本与每请求平均token消耗算出单次智能体任务的模型成本上限。如果预算敏感优先考虑用本地部署的开源大模型把高频简单任务扛住把复杂任务路由给商用模型整体成本能降一个量级。这一层还有一个很多人忽略的点如果要走本地部署接口协议尽量选兼容OpenAI格式的服务封装。目前常见做法是用Ollama或vLLM这类工具起服务它们能把本地模型包装成标准API上层代码不用为每家模型单独写适配。如果业务领域性很强比如法律条文问答、设备维修知识库还可以考虑在开源底座上先做微调再部署这样指令遵循能力会更贴合场景。我在踩坑那一章会专门讲接口不兼容的问题这里先记住原则统一接口是平台稳定性的地基。2.2 记忆层短期上下文与长期向量库的分工记忆层是智能体区别于普通对话机器人最关键的部分也是最容易被做成“黑匣子”的部分。很多人一上来就上向量数据库把所有历史消息都塞进Embedding结果召回的片段上下文混乱模型反而变笨。正确的分工应该是会话窗口内的近期消息走短期记忆直接放进上下文供模型读取跨会话的用户偏好、历史事实、业务规则走长期记忆向量检索只负责把相关片段找出来再拼接到当前上下文里。要记住一个原则模型能直接读到的永远是“拼接后的上下文”而不是数据库里所有数据。具体实现上短期记忆要控制窗口大小。不要简单地把最后N轮对话全塞进去那样很快会顶到上下文上限。更稳妥的做法是在窗口内保留“完整对话结构”但把超过一定轮数的消息做摘要压缩。长期记忆的写入也有讲究不能把原始聊天记录直接丢进向量库而是先让模型把对话里的关键信息抽取出来格式化成类似“用户ID、属性名、属性值”的结构再入库。这样检索时可以用结构化字段做过滤大幅降低召回噪音。向量检索的召回数量top_k和相似度阈值也不是越大越好。我一般会把top_k设在3到5之间相似度阈值设在0.2到0.3之间按余弦相似度太高容易漏召回太低全是噪音。这几个值要根据业务内容反复调没有放之四海皆准的预设。2.3 工具层Function Calling 是智能体的“手脚”没有工具调用能力的智能体只是一个高级聊天机器人。工具层要解决的核心问题是让模型在需要时能主动调用你注册的外部函数并把返回结果纳入推理链条。实现上现在主流的大模型都支持Function Calling要点是把可调用的工具用JSON Schema描述清楚随请求一起发给模型。模型不直接执行函数而是返回一个结构化的调用意图由平台侧负责真正执行并回传结果。描述工具时函数名和参数的语义要足够精确否则模型会凭字面意思乱猜。比如一个函数叫“query_order_status”参数里只有“order_id”模型很可能把用户说的“我上周买的东西”这种模糊表述直接映射进来导致查询失败。正确的做法是为参数补充别名和示例值让模型知道“上周买的东西”应该先通过用户ID查出订单列表再调用查询状态。工具注册表还需要做版本管理。业务系统接口在演进但线上智能体可能还停留在旧版本的工具定义。如果工具Schema变了而平台侧没有同步模型会按旧格式生成调用参数下游接口必然报错。我见过不少团队在这里翻车最后是靠给每个工具加版本号、在部署时做兼容性检查才稳住的。2.4 编排层ReAct、Plan-and-Execute 还是 Graph编排层决定智能体怎么“思考”。三种常见的编排范式分别是ReAct、Plan-and-Execute和图编排。ReAct是最常见的思路让模型在“思考→调用工具→观察结果→再思考”的循环中推进任务适合工具不多、步骤相对线性的场景。Plan-and-Execute更进一步模型先产出整份计划再逐步执行适合任务链路长、需要预判的场景。图编排则是用流程图显式定义状态转移把智能体拆成节点和边每个节点是一个具体的处理步骤适合流程固定、需要强管控的场景比如工单审批、订单异常处理。我的建议是优先从ReAct起步因为实现成本最低、可解释性也够当任务链路真的变长、模型开始频繁在计划之间跳来跳去时再迁移到Plan-and-Execute或图编排。不要让编排层过早复杂化这是很多团队把平台做成“大而全但没人用”的常见原因。3. 从零搭一个最小可用的智能体平台核心组件与落地步骤3.1 最小框架API网关 模型路由 工具注册表 记忆存储抛开PPT里那些复杂的架构图真正常用的最小可运行框架只有四个部件。第一是API网关负责接收外部请求、做鉴权和限流第二是模型路由根据请求类型、成本策略把请求分发到不同模型第三是工具注册表统一管理和校验所有可被智能体调用的外部函数第四是记忆存储用Redis管短期会话用向量库管长期事实。四个部件之间通过一个编排核心串起来这个核心就是我们在上一章说的ReAct循环。这套框架里网关和路由可以先用轻量方案代替。网关直接用FastAPI写一层中间件路由则做成一个简单的配置表。不要一开始就上微服务和消息队列等流量和数据量真正起来了再演进。这也是我反复跟团队强调的平台的第一版应该是能用手推着走的自行车而不是四轮汽车。如果不想从零造轮子也可以直接在Dify这类开源平台上接入本地大模型把上面四个部件交给平台托管团队专注业务工具的接入。不想自己维护基础设施的团队这条路最省人力。3.2 用Python实现一个模型路由与工具调用循环下面给出一个最小可运行的ReAct循环示例代码只保留了核心逻辑。# 拉取模型并启动 Ollama 服务默认监听 11434暴露 OpenAI 兼容接口 ollama pull qwen2.5:7b-instruct ollama serve# agent_core.py import json from openai import OpenAI # 统一使用 OpenAI 兼容的接口协议 client OpenAI(base_urlhttp://localhost:11434/v1, api_keyEMPTY) TOOLS [ { type: function, function: { name: query_order_status, description: 查询订单当前状态, parameters: { type: object, properties: { order_id: { type: string, description: 订单号例如 SO20240501 } }, required: [order_id] } } } ] def run_agent(user_message: str, max_steps: int 5): messages [{role: user, content: user_message}] for step in range(max_steps): resp client.chat.completions.create( modelqwen2.5:7b-instruct, messagesmessages, toolsTOOLS, tool_choiceauto, temperature0.2, ) msg resp.choices[0].message # 模型没有调用工具意图直接返回回答 if not msg.tool_calls: return msg.content # 把模型回复追加进上下文 messages.append({ role: assistant, tool_calls: [ {id: tc.id, type: function, function: {name: tc.function.name, arguments: tc.function.arguments}} for tc in msg.tool_calls ], }) for tc in msg.tool_calls: # 模拟执行工具实际应调用注册表里的函数 args json.loads(tc.function.arguments) result {order_status: SHIPPED, order_id: args[order_id]} messages.append({ role: tool, tool_call_id: tc.id, content: json.dumps(result), }) raise TimeoutError(agent steps exceeded) if __name__ __main__: print(run_agent(帮我查一下 SO20240501 这个订单到哪了))这段代码的核心逻辑是一个标准的ReAct循环每次把用户消息和历史追加进messages调用模型接口时带上tools定义模型如果决定调用工具就会返回tool_calls平台解析参数、执行工具、把结果以roletool的消息回传然后带着新上下文进入下一轮。循环终止条件是模型不再返回tool_calls或者步骤数超过max_steps。有几个参数值得注意。temperature设为0.2是因为工具调度场景需要确定性温度太高模型容易在工具选择上左右摇摆。max_steps限制在5防止模型陷入死循环。tool_choice用auto让模型自己判断是否需要调用工具如果业务场景是“必须走某个工具”可以显式指定为对应函数名。如果你在本地用Ollama启动模型base_url指向本地的兼容接口即可api_key用占位符EMPTY。3.3 接入业务系统的三种方式同步API、消息队列与事件回调智能体不能只活在沙盒里它必须能触达真实业务系统。常见的接入方式有三种。第一种是同步API调用最直接。模型调工具时平台同步请求外部服务拿回结果再继续推理适合查询类操作比如查订单、查库存、查客户信息。缺点是慢一旦外部接口超时整个智能体响应时间就被拖长。第二种是消息队列异步调用适合写操作比如创建工单、发起审批。平台把工具调用包装成消息发到队列业务系统消费后把结果写回结果表智能体在后续轮次里通过查询主动获取结果。这种模式能避免长时间占用模型连接但要自己处理结果对账。第三种是事件回调适合外部系统主动通知智能体的场景比如支付回调触发订单状态变更。实现上一般是暴露一个Webhook接口接收事件后把事件内容写入智能体的短期记忆再触发一次主动推理。建议第一版尽量只用同步API把能跑通的业务场景跑起来异步和事件驱动等平台稳定了再补。同步调用能暴露最多的连接问题也最容易调试。4. 智能体开发平台中的关键参数温度、上下文窗口、工具超时与重试策略4.1 大模型参数temperature、top_p、max_tokens 怎么配合很多人在智能体场景里还是按聊天机器人习惯调参这是第一个坑。聊天可以开高温度让回复多样但智能体追求的是任务完成率参数必须往确定性方向压。temperature控制在0到0.3之间优先从0.2起步。top_p可以保持默认或与temperature联动下调一般不建议同时把两者都压到极低会大幅降低输出质量。max_tokens要按工具返回体量预留余量如果工具结果可能很长而max_tokens设小了模型回复会被截断JSON解析失败。一个经验值是按“历史上下文加工具返回加模型回复”的三倍估算宁可多预留。还有frequency_penalty和presence_penalty在智能体场景里建议设成0或接近0。这两个参数设计的初衷是减少重复、鼓励发散放在工具调度里只会让模型输出不稳定。记住一个原则智能体平台的模型参数目标不是“有趣”而是“可复现地完成任务”。参数配置有个推荐做法把不同场景的参数组合做成配置模板每个智能体实例引用一个模板而不是在代码里到处写死。这样调整参数不用动代码灰度验证也方便。比如客服场景用一套模板工单处理用另一套每套模板独立调优互不干扰。注意模型升级后原来调好的参数很可能不再适用。每次更换模型版本都要重新在评估集上跑一遍参数组合不要沿用旧参数想当然。4.2 工具调用的超时、重试与并发控制工具调用是智能体生产事故的高发区。外部接口慢、超时、返回异常都会让整个智能体卡住或答非所问。超时设置上不同工具要分开配置。查询类工具可以给3秒到5秒的超时写操作或涉及人工审批的工具可以放宽到15秒甚至30秒。不要给所有工具设同一个超时阈值否则慢工具频繁超时、快工具白白等待。重试策略要区分错误类型。网络抖动导致的连接错误可以重试2到3次采用指数退避业务逻辑错误比如参数校验失败重试多少次都没用应该直接返回错误信息给模型让模型调整参数或向用户澄清。这里很多团队会犯一个错误把所有异常都交给重试结果外部系统被反复打形成雪崩。并发控制同样关键。如果外部接口有QPS限制平台侧要为每个工具配一个信号量或令牌桶。常见做法是给每个工具定义max_concurrent参数超过后新的调用排队等待而不是直接拒绝。这样既保护了外部服务也保住了用户体验。4.3 记忆上下文的裁剪策略窗口不够时怎么办上下文窗口是智能体平台最硬的资源约束。即使模型支持很长的上下文每次请求携带的token数也直接决定成本和延迟。裁剪策略按优先级有三层。第一层是丢弃最早的非关键消息比如问候语、寒暄、无关的闲聊。第二层是摘要压缩把超过一定轮数的对话用模型生成一段结构化摘要替换掉原始消息。第三层是长期记忆外置把已经沉淀为事实的内容写进向量库上下文里只保留引用ID需要时再检索回来。实现时要注意摘要压缩本身也要消耗token。一个经验做法是只有当对话轮数超过阈值比如10轮且累计token接近窗口上限的60%时才触发压缩。压缩后的摘要要保留“用户目标、已执行动作、当前状态、待办事项”四个字段否则下一轮模型会丢失关键任务状态。还有一个容易忽略的细节工具调用产生的中间结果也会占用上下文。在ReAct循环里模型每次调用工具后工具返回的结果都会被放回上下文。如果某个工具返回特别大的数据建议在代码层做截断只保留关键字段而不是把完整响应塞给模型。这一步对控制上下文膨胀非常有效。5. 智能体开发平台踩坑手记常见问题与排查路径5.1 现象模型“乱叫工具”现象智能体在用户问一句“你好”时就主动去调用查询订单的工具返回一堆无意义数据。原因系统提示词里没有约束“何时使用工具”。模型把“自动调用工具”理解成了“每次都调用”尤其是用tool_choice为auto时更容易这样。解决在系统提示词里明确写清工具的触发条件同时在代码侧用业务规则做前置过滤。比如只有当用户消息里匹配到“订单”“发货”等关键词时才把工具列表传给模型否则只走普通对话路径。这条血泪经验告诉我们给模型的边界约束越具体越好。5.2 现象智能体答非所问现象用户问“我上次的退款处理到哪一步了”智能体却开始介绍退款政策答非所问。原因长期记忆的向量检索把“退款政策”和“退款进度”混为一谈召回了政策文档片段没有召回用户的退款工单记录。解决把用户事实按业务实体建模不要只存对话文本。退款进度应该存成“用户张三退款单号R20240001状态复核中”这样的结构化记录检索时先用结构化字段过滤用户再做语义检索。另外把召回top_k从5降到3并加上相似度阈值0.3过滤掉边缘结果。5.3 现象工具调用超时现象某个查询服务依赖的数据库慢查询单次查询从2秒涨到20秒智能体所有请求都卡住前端大量超时。原因平台侧工具调用没有超时熔断服务变慢后请求全部堆积在等待队列里。解决为每个工具配置独立的超时时间和最大并发数超时直接返回“工具执行超时”给模型让模型给出降级回答比如“系统繁忙请稍后再试”。排查链路要从外部服务监控入手先看慢查询SQL和连接池再回头调整平台侧熔断参数。没有熔断的平台流量一大就是雪崩这不是危言耸听。5.4 现象多轮对话上下文爆炸现象智能体在30轮对话后单次请求的token数从3千涨到3万响应延迟翻倍成本飙升。原因短期记忆窗口只追加不裁剪30轮对话的原始消息和每轮工具调用结果全部堆积在上下文里。解决按第4章的压缩策略对话超过10轮且token占用超过窗口的60%时触发摘要压缩。这里要特别提醒工具调用的中间结果要单独归类不能和用户消息混在一起裁剪。我见过一个项目把工具返回截断后模型下一轮就找不到订单号了就是因为压缩策略把“当前任务的参数”当成了历史消息裁掉了。5.5 现象本地大模型接口和云端模型不兼容现象同一套代码在云端模型上正常运行切到本地部署模型后工具调用频繁报错或返回格式不符。原因本地模型对Function Calling的支持程度不一有的模型工具格式是厂商私有协议有的对JSON Schema校验不严格系统提示词的格式要求也不一样。解决统一接口层的适配。常见做法是在平台内部做一个“模型适配器”把云端模型的函数定义转成本地模型能识别的格式。切换到新的本地模型时先在离线评测集上跑工具调用用例确认返回格式稳定后再灰度放量。如果某个本地模型对工具调用的支持太差别硬扛换一个函数调用能力强的开源模型省下来的时间足够你多做几轮业务迭代。6. 把智能体平台推向生产验证方法、可观测性与一个值得养成的习惯6.1 用 Pytest 给智能体写“行为回归测试”智能体不像普通函数那样输入输出一一对应它的行为是多步推演的结果。因此测试不能只看最终回答要看中间的工具调用序列。常见做法是把一组业务场景固化成测试用例断言每一步的工具名称、参数和最终回答的关键字段。# test_agent.py from agent_core import run_agent def test_order_query_flow(): result run_agent(查一下单号 SO20240501 的物流状态) assert query_order_status in result.tool_trace assert result.tool_params[order_id] SO20240501 assert 运输中 in result.final_answer这样的回归测试能在模型升级或系统提示词调整时快速暴露行为漂移。我的经验是每新增一个业务场景就先补一个这样的测试用例把测试集当成智能体行为规范来维护。6.2 可观测性链路追踪与 token 成本核算智能体平台比普通接口更需要可观测性。每一个请求会经历“模型推理→工具调用→再推理”多个阶段任何一个环节出问题用户感知到的都是“回答奇怪”。所以从第一版开始就要为每个请求生成一个trace_id记录模型调用耗时、token消耗、工具调用列表、每步延迟和错误信息。成本核算也是容易被忽略的点。按模型单价乘以每次请求的总token数按月汇总你会发现智能体平台的成本大头往往集中在“多轮对话加频繁工具调用”的长任务上。有了成本数据你才有依据去优化上下文压缩策略、调整模型路由规则。6.3 一个值得养成的习惯先定评估集再动代码我在智能体平台上最大的教训是“没有评估集就改Prompt等于盲改”。你改了一次系统提示词凭感觉觉得效果好了一点但没有量化指标两周后你根本说不清哪次改动真正有效。所以现在的习惯是每次业务改版先把涉及的业务场景扩充进评估集跑一遍基线记录工具调用准确率和任务完成率改完代码或Prompt后再跑同一套评估集对比差异。这个过程可能只花半小时但它能让你从“玄学调参”变成“有据可依”。这套方法说起来简单坚持下来不容易。但正是这个习惯帮我避开了好几次“看起来在进步、实际在退步”的陷阱。如果你也要推智能体平台建议从今天起就把评估集建起来哪怕只有10个用例也比没有强。希望帮到你。本文还有配套的精品资源点击获取