☰
大模型应用开发实战:官网落地RAG、Agent与文档生成的全过程
2026/10/21 21:25:54 网站建设 项目流程

智泊AI官网这轮更新的核心,是把“大模型应用开发”从PPT里的概念词,变成了官网上一排排可以直接点开试用的真实产品。作为参与整个开发和上线过程的一员,我想把这次从方案设计、技术选型,到踩坑、压测、上线的完整经过写下来。这篇不只是记录“我们做了什么”,更想把“为什么这么做”“哪些决策翻过车”“上线前夜还在改什么”这些更实际的东西讲清楚,给正在做类似大模型应用落地的朋友一个可参考的样本。

1. 更新需求拆解:官网为什么要上大模型应用

1.1 大模型应用的落地场景选型

智泊AI官网原来是一个典型的产品展示型站点,主要是公司介绍、行业解决方案展示、联系入口,访客进来基本是“看”,留不下多少有效动作。当时的团队认真讨论过一个问题:如果要证明我们真的在搞大模型应用开发,最有说服力的方式是什么?

结论很一致:不是放几篇技术博客,也不是在首页挂一个“我们支持最新大模型”的横幅,而是直接把应用做出来,放在官网的在线体验区。让访客在浏览器里,不知不觉就和某个大模型应用产生一次真实交互。比如上传一份隐私脱敏的文档,让AI生成摘要和图表;或者在对话框里直接问一句“上季度哪个品类销量下滑最明显”,系统连数据库都能查出来。

于是我们给这次更新定了三个核心场景:知识库智能问答、数据指标对话、结构化文档自动生成。每个场景背后都对应一条独立的产品化链路,而不是简单调一个对话模型接口就完事。这个选择后来被证明是对的,三个场景刚好覆盖了访客最常问的“能做什么”的三类回答:能读懂你的私有资料、能回答和业务数据相关的问题、能帮你把内容变成规范的文档。

1.2 用户路径与体验目标

上线之前,我们先把用户路径画了一遍。访客从官网首页进入,先看到一个“AI体验中心”的入口,再选择具体应用,打开后是一个尽量接近真实产品的界面。整个过程不应该要求用户先注册、填表、申请试用,而是点击即用,体验完再决定要不要留下联系方式。

体验目标很明确,首屏要能完成一次有意义的交互:用户输入一个真实问题或上传一个真实文件,系统在10秒内给出有质量的响应。这比任何宣传文案都有说服力。我们在内部反复宣导一个标准:“如果访客体验完没有发出‘哦’的一声,那这个模块就还没做好。”

1.3 与原有官网体系的集成方式

大模型应用开发模块不是另起炉灶,而是嵌进原有的官网体系。前端复用原有站点的设计语言和导航结构,后端则独立部署了一个应用服务层,避免影响原官网的动态页面和内容管理。同时,用户无论从哪个入口进入体验区,都能保持同一套鉴权状态。

这里做了个关键取舍:体验区完全对外开放,但每个IP和会话都做了频控;如果要体验更复杂的功能,比如上传更大的文档、跑更重的数据分析任务,才需要提交一个简单的申请信息。既保留低门槛体验,又避免后端资源被滥用。

2. 技术方案选型:大模型应用开发背后的关键决策

2.1 模型接入的架构思路

模型接入是这次开发的重中之重。当时有两种主流路线:一是直接调用公有云上的商用大模型API,二是基于开源模型自部署微调。我们的实际情况是:团队规模不大,但需要同时跑多个应用场景,且上线时间非常紧。

最终选择了以商用API为主、开源模型为辅的混合路线。理由很实际:商用API的模型能力迭代速度快、稳定性和安全性有保障,适合做对效果要求高的知识库问答;开源模型虽然可控性强,但考虑到算力成本和运维精力,最后只承担了部分非核心的辅助任务。这个决策在成本控制上帮了大忙,开发和调优周期也明显缩短。

为了屏蔽不同模型之间的差异,我们在中间加了一层模型网关。无论底层是哪个模型服务,上层应用始终面对一套统一的接口。后续如果要切换模型或者新增场景,不需要改应用代码,只动网关配置即可。

2.2 RAG方案选型与向量检索

知识库问答用的是典型的RAG(检索增强生成)架构。这个方向本身并不稀奇,真正磨人的是链路里的每个细节:文档解析质量如何、切片策略合不合理、向量检索召回准确率够不够、Prompt里对检索结果的约束是不是足够干净。

向量化部分比较过两种方案:一是用某商用向量模型接口,二是用开源的向量化模型本地跑。商用接口的效果确实更好,对中文长文本和表格内容的语义理解明显更强;但考虑到数据隐私,最后是私密文档走本地向量化、通用文档走商用接口,两边结合着用。索引库采用支持混合检索的方案,既能做向量召回,也能做关键词匹配兜底。

2.3 Agent能力与工具调用框架

数据指标对话这个场景,本质上就是一个简化版的Agent系统。用户问了一句业务问题,系统需要完成意图理解、数据查询、结果解释三个环节,中间还要决定什么时候调用数据库工具、查询结果怎么组织成自然语言回答。

工具调用的框架没有自己造轮子,而是基于业内成熟的Agent开发框架做了二次开发。核心的流程控制器写在应用层代码里,采用“规划、执行、反思”三段式结构:先让模型判断需要什么数据,再执行查询,查询结果不满足时自动调整查询条件重新执行。整体状态用状态机管理,这也是后面排查问题时最有效的手段。

3. 核心应用开发实录:从Prompt到文档生成

3.1 知识库应用的文档处理细节

知识库问答是上线后用户量最大的应用。单说文档解析,就够写一篇长文。我们支持的格式包括PDF、Word、Markdown和普通文本,每种格式都有各自的坑。比如PDF里有扫描件、有文字版、还有那种“文字版里藏着图片”的混合排版,都不是一个解析库能搞定的。

最终的解析流程是分层处理的:先用内容识别工具判断文档类型,扫描件走OCR,常规文字版走结构化解析,遇到表格则单独抽取出来转成结构化数据。解析完成后进入切片环节,切片不能只按固定字数硬切,而是先识别语义段落,再用固定大小结合重叠窗口做二次切分,保证每个片段的语义相对完整。

Prompt的设计也花了不少功夫。知识库回答最怕的就是让模型“自由发挥”,于是系统Prompt里明确约束了回答策略:优先基于检索到的内容作答,如果检索内容不足,必须明确告知未知边界,绝对禁止编造。回答的句式上还做了规范化要求,比如先给结论,再列依据,最后补充建议,这样用户读起来的体验会稳定很多。

3.2 数据指标对话的NL2SQL实践

数据指标对话是最有技术含量也最容易翻车的一块。用户用自然语言提问,系统要把问题转换成SQL查询背后的数据库。看起来是一个标准的NL2SQL问题,但业务数据的特点让难度上了一个台阶:指标名称不统一、条件表达模糊、多表关联复杂。

我们建了一层指标语义层,先把数据库里实际存在的表和字段映射成业务指标。比如“销量”对应了三个不同表的字段,在语义层里统一成一个指标,模型生成SQL时优先基于语义层,而不是直接面对原始表结构。这样即使模型生成SQL有偏差,也不至于完全不可用。

为了保证准确率,还加了结果校验环节。查询出的数据不是直接反馈给用户,而是先经过一轮摘要和格式转换。比如用户问“销量趋势”,系统不仅要返回数值,还要判断是否需要配一张趋势图。这里调用了一个专门的图表生成工具,把数据转成前端可渲染的配置,用户看到的是一张图表加一段文字结论,比单纯输出数字友好得多。

3.3 文档生成应用与流式输出

文档生成应用是最直观展示大模型能力的场景。用户输入一个主题,系统自动生成一套规范的结构化文档。这个看起来简单,实际上对可控性的要求非常高。我们不想让模型自由写一篇小作文,而是要按照预设的模板结构一步步填内容,每一节有明确的目标和长度约束。

实现方式是把整个文档拆成多个连续的生成任务,前一步生成的结论会作为后一步的输入上下文。比如先让模型生成项目背景,再基于背景生成核心模块设计,再基于两者生成实施路径。整个流程通过一个编排器串起来,每个子任务失败都可以单独重试,不需要整篇重新生成。

前端特意实现了流式输出效果。因为文档生成耗时较长,如果用户点击后面对几秒钟的白屏,几乎一定会认为系统挂了。流式输出让文字一段段渲染出来,用户能直观感受到“模型正在工作”,体验和心理感受完全不同。技术实现上用的是基于流式传输协议的实时数据通道,前端的渲染层按收到的消息增量更新页面。

4. 官网体验优化:前端交互与性能细节

4.1 加载态、错误态与空数据态

大模型应用和普通页面最大的不同,在于响应时间是不可预测的。官网体验区做了非常细致的状态设计:请求刚发出时,展示清晰的加载动画并附带提示文案“正在处理中,预计需要10-20秒”;当响应超过阈值时,主动提示用户可以选择等待或取消;请求出错时,不是简单弹一个报错框,而是给出错误分类建议,比如“服务繁忙,请稍后重试”“内容超出处理范围,请调整输入”。

空数据态的打磨也值得一提。当用户上传的文档没有解析出有效内容时,系统不会直接说“没有数据”,而是引导用户检查文档格式、是否包含扫描图片等内容,给出具体改进建议。这些细节看似不起眼,但对用户信任感的影响非常大。

4.2 并发处理与频控机制

上线前大家都担心一个问题:如果流量突然爆发,后端能不能扛住。我们做了三层限流:网关层按IP限制单日体验次数、应用层按用户会话限制并发请求数、模型层对每个应用设定独立配额。三层策略各司其职,防止不同类型的使用造成的资源挤兑。

实际观察到一个很有意思的现象:周一上午十点和周三下午的流量高峰,往往不是因为外部推广,而是因为很多访客在分享、转发体验结果。这启发了我们增加了一个“分享体验”的功能,把结果生成类似卡片一样的分享样式,转出去的效果就是给官网带量。

4.3 内容安全防线

官网是公开的,AI应用生成的内容必须在安全边界内。我们搭建了一套双重的审校机制:第一道在输入侧,对用户提交的内容做实时检测,拦截明显的风险输入;第二道在输出侧,对模型生成的结果做二次审核,确保不出现违规内容。

提示:在后续版本里,这两道防线已经升级为可配置的策略引擎,不同场景可以自定义不同的过滤规则。正式上线前我们用大量边界样本做了一轮压力测试,确保所有规则都能在毫秒级生效。

这对公开站点来说不是可有可无的“合规摆设”,而是必须默认开启的基础能力。

5. 部署上线过程与稳定性保障

5.1 上线前的压测脚本与性能基准

大模型应用服务的性能瓶颈通常不在Web服务本身,而在模型调用的耗时、外部API的响应时间和上下文窗口的长度限制。正式上线前一天,我们搭建了一套压测脚本,用并发请求模拟真实用户的行为链路。

一轮压测下来暴露了两个问题。第一个是向量检索服务在并发升高时出现毛刺,排查原因是连接池配置偏低,调整后平稳;第二个是流式输出场景下网关的连接数被打满,后来通过增加网关实例才解决。所有性能基准都以“P95响应时间不超过3秒”作为硬性标准,达不到就不允许上线。

5.2 监控、日志与告警体系

大模型应用的可观测性比传统Web应用更复杂,因为一个问题可能出在模型层、检索层、应用层或者前端任何一个环节。我们给链路里每一层都埋了日志和性能指标,形成了按请求ID串联的完整链路追踪。

告警规则也做了分级。最紧急的告警是接口错误率突然飙升和模型服务超时频繁,直接拉群通知;一般的告警是某个场景的平均响应时间出现波动,只记录和周报汇总。上线后经历了两次模型服务方接口更新导致的不稳定,告警都在五分钟内触发,及时避免了用户感知。

5.3 安全加固与数据隐私处理

公开体验区意味着任何人上传的内容都可能是私密的。在架构上做了隔离:体验区上传的文件只保存在内存级临时存储中,用户提交后如果没有导出结果,文件在会话结束后立即销毁。并且所有上传内容在处理前都会经过一次脱敏检测和提醒,告知用户不要上传敏感文件。

数据链路全程加密,模型网关和外部API的通信做了白名单控制。在日志中,对于可能包含用户输入内容的字段做了自动脱敏处理,从源头上减少隐私泄露风险。

6. 上线前后的真实踩坑记录

6.1 问题现象、排查过程与解决方案汇总

任何一次系统上线都不可能一帆风顺,这次尤其明显。我把遇到的主要问题整理出来,基本覆盖了大模型应用开发中比较常见的几类故障。

问题现象排查过程根因与解决方案
知识库回答偶尔引用不存在的内容逐条分析模型输出,发现切片边界处信息缺失优化切片重叠窗口,增加引用来源校验,无来源时拒绝回答
自然语言查询偶发返回错误SQL日志对比输入和生成的SQL,发现指标语义层未生效补充同义表达库,在Prompt中增加负例提示,语义层兜底校验
高并发时段文档生成超时率升高观察模型网关耗时分布,发现排队时间过长引入队列机制,调整超时策略,用户可看到排队进度
流式输出偶发内容截断前端日志提示异常断开,复现后发现网络层连接被重置改用更稳定的长连接策略,增加断点重连机制

6.2 “模型瞎编”的终极解法组合

大模型回答“一本正经地胡说八道”是RAG应用里最头疼的问题,没有之一。我们试了很多种方法,最终形成了一套组合拳。第一是在系统Prompt中明确身份和边界,告诉模型“你只基于给定资料回答”;第二是在检索环节提高召回质量,确保喂给模型的资料本身尽可能完整;第三是在结果校验环节加入一致性检查,比对回答中关键实体是否能在检索资料中找到。

有一个典型案例:用户问某款产品的兼容性,模型回答里提到了一个数据库版本号,但检索资料里根本没有这个版本信息。抓到这个案例后,我们在校验环节增加了“关键信息溯源”的检查,回答中出现的事实性表述必须能在原文中定位到,否则宁可让模型回答“资料未提及”。这一招上线后,回答的可靠度明显提升。

6.3 三个影响体验的细节问题

第一个是文档生成中偶尔会出现“内容重复段落”。排查发现是长文本生成时的上下文漂移问题,解决方案是把生成任务分成更细的子任务,并在每个子任务的输入中附带前文摘要而非全文。

第二个是用户在移动端体验时,页面滚动和键盘弹起会导致视口混乱,打断流式输出查看体验。后来前端重写了体验区的布局,使用独立滚动容器,问题才彻底解决。

第三个问题是中文标点和排版。模型生成的文档里,中文引号、破折号经常出现半角全角混用的情况。后来在输出后处理环节加了一个规范化的排版过滤器,专门清洗标点问题,成品质量看着专业很多。

6.4 上线首周的应急响应记录

上线首周是最紧张的。第一天直接遇到一个比较隐蔽的问题:某些知识库问题会在回答末尾带出一段与问题无关的“总结性废话”,而且带有明显的模型幻觉痕迹。紧急查了链路,发现是系统Prompt中一段示例的问题诱导了模型模仿语气。快速调整Prompt示例后,问题基本消失。

另外一个应急事件是某个外部模型服务升级导致的响应格式变化,网关解析失败。当时靠我们做的协议适配和多模型路由正确兜住,没有对用户造成明显影响。这次经历让我特别深刻地意识到,模型网关和适配层不是“过度设计”,而是一种刚需。

7. 上线后数据表现与后续演进

7.1 数据表现与用户反馈

上线三周后,体验中心的整体数据表现超出预期。知识库问答的日均使用次数比预想高了两倍,用户平均停留时间也远高于普通官网页面。数据指标对话是转化率最高的场景,很多访客体验完数据问答后选择了留下咨询信息。

文档生成场景的用户行为也很有意思:大部分用户不是随手试试,而是非常认真地输入详细主题,甚至反复调整主题重新生成。这个信号说明需求是真实的、痛点是明确的,剩下的问题只是把体验做得更好。收集到的高频反馈包括:希望支持更多文档格式、希望问答能记住同一会话的上下文、希望增加导出格式的种类。

7.2 后续演进方向与版本规划

下一阶段的规划主要围绕四个方面:一是知识库问答升级为支持多轮记忆的对话形态,而不是单轮问答;二是数据指标对话增加多维度分析能力,支持更方便的比较、下钻等操作;三是文档生成支持用户自定义模板,而不是只能用预设结构;四是建设一套统一的应用评测体系,让每个场景的效果变化有量化指标可追踪。

其中第二项比较关键,因为它意味着要复用更多Agent决策能力。每个规划背后都对应着一批新的技术挑战,有些是算法层面的,更多是工程化层面的。

7.3 大模型应用开发的经验沉淀

这次更新给我最大的感受是:大模型应用开发的难点不在“调接口”,而在如何把一个可能犯错、篇幅有限、存在不稳定的技术能力,封装成稳定、可控、有边界的产品能力。

这中间最核心的三件事分别是:检索质量、Prompt设计和异常兜底。方法论上,所有环节都遵循“先用最小可行方案跑通链路,再基于真实数据反馈迭代优化”的节奏,避免在缺乏数据依据时过度设计。这些经验会沉淀到团队内部的开发流程中,让后续新场景的落地能更快更稳。

8. 写在最后的大实话

如果你正在规划官网或者某条业务线接入大模型应用,我个人的建议非常直白:不要从“我们要用大模型做什么”开始,而是从“用户在这里会遇到什么问题”开始,然后反推需要什么技术方案。把入口做得足够轻,把响应做得足够快,把失败处理做得足够体面,这三个基本点远远比模型选型、参数调优这些听起来高大上的事情重要。

每次发布都会伴随各种小意外,但这次上线后,有个访客试用完文档生成后说了一句话,让我觉得前面所有折腾都值得——“你们这个不是Demo,是能直接用的工具”。这句话比任何一个指标都更能说明大模型应用开发的意义,也激励着我们把这条技术路持续走下去。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询