基于 LangChain 的智能文档问答系统实践
文章目录
一个大堂两个窗口,一位不下班也不推销的大堂经理:慧理如何用端到端具身交互智能守住理财咨询第一岗
下午四点的银行大堂,理财经理桌上排着号,阿姨攥着存单问"这个三年期和那个终身寿哪个好",经理看了眼手环还剩 20 分钟下班,斟酌着怎么在合规话术里把话说完。窗口外还有三个人在等。
慧理(Huìlǐ)就是为这个场景而生的。他以大堂经理形象常驻在银行网点的智慧屏和手机银行里,客户坐下来问理财,他先讲风险再讲收益,产品参数张口就来,合规红线一条不碰——晚上九点半他还在岗,节假日也在岗。
本文以慧理为实战样本,拆解一个智慧网点应用如何基于魔珐星云端到端具身交互智能平台,用一个 SDK 把感知、大脑、表达全链路打通,让 AI 大堂经理完成"倾听—KYC—讲解—合规提示"的完整咨询闭环。魔珐星云是一套端到端具身交互智能平台,让 AI 通过屏幕和机器人进入真实世界,成为能够感知、理解、表达并行动的智能体。
开门前:先把话说公平
先把一件容易吵起来的事说清楚:ASR、LLM、TTS 这三项技术本身都没有问题,语音识别这些年进步巨大,大模型的语言组织能力也确实够用,语音合成的自然度早就过了"一听就是机器"的线。谁都不该被否定。
真正卡住的不是任何单项能力,而是怎么把它们围绕一次完整的用户交互连起来:听的同时要能说,说的过程中要能被打断,打断之后要记得自己讲到哪,要能在同一秒里统一事件流转、会话状态、时间同步和异常处理。
传统做法是把它们串成一条直线:
这条直线在银行场景被放大了三倍。客户问到一半说"等等,这个能亏多少"——系统正播着,听不见。等它播完再识别,客户已经重复第三遍了。更麻烦的是合规:LLM 生成的话术必须过审,直线架构里"边说边审"根本做不到,只能整段生成、整段播。
这就是典型的"不是端到端"。
理财咨询的信任,一半建立在"你听得见我打断你"上。
端到端要补齐的五件事,对照慧理看一遍就清楚了:
这五件事串起来,加上统一的实时交互运行时(Real-time Interaction Runtime)负责状态、时序和异常,才构成一个持续循环:持续感知 → 持续理解 → 持续决策 → 持续表达与行动,而客户的每一次反馈又会重新进入感知——这就是 Continuous Interaction Loop。
一号窗口:一个 SDK 撑起一张咨询桌
慧理基于魔珐星云端到端 SDK XingyunAvatarAgent 构建,核心业务代码不到 500 行。整个前端对接只需要三步:提供一个 DOM 容器、注册一组回调、调用 agent.ask() 发送消息。
import { XingyunAvatarAgent } from '@xingyun/avatar-agent';
const manager = new XingyunAvatarAgent({
container: document.getElementById('bank-root'),
avatarId: 'huili-bank', // 控制台配置:正装、稳重的中年形象
persona: HUILI_PERSONA,
voice: { rate: 0.96 }, // 稳,不赶
});
// 客户打断:咨询被打断是常态,必须接得住
manager.on('interrupt', (partial) => {
kyc.push({ role: 'client', text: partial });
compliance.flagIfSensitive(partial); // 敏感诉求立即标记:亏损追问/保本要求
});
// 一轮讲解完成:决定下一步是追问KYC还是出对比
manager.on('replyDone', () => {
const next = flow.next(kyc);
manager.ask(next.type === 'compare' ? buildCompare(next.ids) : next.question);
});
await manager.init();
manager.ask('您好,请问想了解存款、理财还是保险?');
网点智慧屏首屏:慧理大堂经理形象选择 + 业务分流引导


打断处理里那行 compliance.flagIfSensitive 是金融场景的关键设计:客户说出"会不会亏""能不能保本"这类词,后台立刻标记本轮对话为高敏,后续输出自动切到更严谨的话术模板。这种"听"和"审"的联动,在拼接架构里要跨三个系统做状态同步,端到端架构里就是一个回调的事
这里要说一下 AI 端渲——它在整套体系里的位置不是"把画面做漂亮"的装饰,而是让上面那些事真的能在终端上跑起来的工程底座。慧理要同时出现在三种屏幕上:网点智慧屏(大尺寸、7×24 常驻)、手机银行里的小窗(客户在路上、在电梯里也会点开)、还有一部分老年客户手里那台用了四五年的旧手机。如果渲染放在云上,就是把画面当视频流往下推——视频流传的是像素,参数流传的是骨骼、表情和口型参数,同样的表达,带宽差一个数量级。银行网点的带宽不是问题,但旧手机在做其他事情的同时要接一路视频流,发热和耗电立刻出来;网点智慧屏要同时挂多路更是想都别想。
端侧渲染之后,终端侧只解码参数、本地实时渲染,弱网下画面会轻微掉帧但对话不断、口型不脱节——我特意在电梯里试过,视频卡了一下,慧理的话没停,嘴也没飘。这也是"一个账号能同时撑住几十块屏"的前提。
双录间:一段咨询的双录回放
银行卖理财有一个别的行业没有的规矩:双录——销售专区必须录音录像,事后可追溯、可核查。这段录像恰好是检验慧理最好的材料:镜头对着客户和屏幕,他说的每一句、停顿的每一次、被谁打断的每一次,全在里面。
下面这段是我从试点网点的双录存档里整理出来的(客户信息已做处理),我按时间轴逐条打点,把他在每一秒调用的是"专属智脑"的哪一层标出来。
03:12 一段六分钟的双录
【00:00|画面:客户坐下,手里攥着一张到期存单】
慧理:“您好,请问今天是想了解存款、理财还是保险?”
旁注:这不是寒暄,是第一道分流。这三个词各自对应一条完全不同的流程链,先分流能省掉后面两轮来回。
【00:23|客户:“我那个定期到期了,想买个收益高点的。”】
慧理:“方便说一下这笔钱大概多久不用吗?”
旁注:他没有接"收益高"这三个字。注意这句话的位置——客户刚刚提出诉求,他做的第一件事是往后追问。这不是话术习惯,是规则:客户问"买哪个好",回答"哪个更适合您的资金安排",并追问期限和用途。换成只靠提示词约束的版本,这里很容易顺着客户说"那给您推荐收益高一些的"。
【01:05|客户:“三五年都不用吧,我孙子上大学还早。”】
慧理:“那我先给您做一下风险测评,大概六七道题,几分钟。”
旁注:先测评、后推荐,顺序不可颠倒。这一步是监管硬要求,不是产品经理可以优化的环节。
【02:30|测评结果 R2 稳健型。客户指着旁边海报:“那个收益率 4.5% 的不行吗?”】
慧理:“那款的风险等级是 R4,和您刚做的测评结果不匹配,按规定我不能推荐给您。”
旁注:这一句是全文最值钱的一句,而它的难处不在"拒了",在"为什么拒"。 他需要同时握住四份信息:客户测评结果是 R2、海报上那款是 R4、适当性匹配规则是"不匹配不得主动推荐"、而且必须在不透露产品细节的前提下把原因说明白。 换个只会"回答"的模型,这里太容易滑过去——比如"这款风险相对高一些,您如果想买也可以了解下",听起来没毛病,实际上已经构成主动推荐;再比如干脆说"我也不太确定您能不能买",把判断推回给客户。 合规不是靠"不敢说"实现的,是靠他知道规则长什么样。
【03:40|客户:“那 R2 有什么?”】
慧理:“给您放在一起看:两款都是 R2,期限一年和两年,起点一万,业绩比较基准分别是 3.1% 和 3.4%——这是比较基准,不代表未来实际收益。您更在意用钱灵活,还是收益高一些?”
旁注:先讲风险、再讲收益,顺序是硬的;免责那句话必须贴着数字出现,不能等到结尾统一补。
【04:55|客户打断:“等等,这个能亏多少?”】
慧理立刻停下(当时播到"起点一万"的"一"字中间)。
旁注:"能不能亏"这个词一出现,本轮对话立刻被标为高敏,后面所有输出自动切到更严谨的模板。
【06:20|客户:“我再想想。”】
慧理:“可以。产品资料我发到您手机银行,一周内随时回来问我。”
旁注:他没有挽留。这不是客气——角色写的是"咨询入口",不是"销售",所以"再想想"这个信号对应的动作是归档,不是加一句"现在买有活动"。
打点走完,回头看这张表
把六分钟里的每一秒归类,其实是三件事在同时跑:
他手边能翻的资料
它知道什么这一层,说白了就是"他坐下之前,桌上摆着什么"。银行的资料是所有场景里最难啃的一类——因为它不只是多,是每一份都带法律效力。
全模态数据解析这块,四种关系各踩过一次:
表格关系:产品说明书的费率表是三档的(认购费 0.3%、管理费 0.15%/年、赎回费按持有天数递减)。这张表拍平成文字之后,“持有满 90 天免赎回费"会被讲成"随时免赎回费”——客户提前赎回时才发现扣了钱,这个投诉比讲错收益率更难解释。
层级关系:风险揭示书是层层嵌套的——产品风险等级 R4 → 客户风险承受能力 R2 → 适当性匹配结论"不匹配" → 结论对应的处置是"不得主动推荐、需双录并书面确认"。中间任何一层丢掉,输出都会变成"可以买"。层级丢一层,结论反一次。
说话人信息:历史咨询的录音转写里,有位客户说过一句"我朋友说这个产品稳"。这句话要是被当成产品事实吸进知识库,慧理很快会在别的客户面前复述它。真实踩过的坑,第一次上线后两周发现。
图文关系:产品海报那张图,"4.5%“是大字,右下角一行小字写着"业绩比较基准”。只读大字,等于把比较基准说成了收益承诺。
知识图谱 + RAG 的融合,在意的是"能不能顺着关系找到答案"。客户问"这个能亏多少",普通向量检索捞回来的多半是"理财有风险,投资需谨慎"这类句子——正确,但没用。走关系链则是另一条路:
产品 → 风险等级 R2 → 资产配置(债券为主 + 少量权益)
→ 最近一年最大回撤 → 同类产品净值波动区间
→ "过去一年最大回撤 1.2%,某个月单月浮亏过 0.4%"
"找到一段话"和"基于关系组织答案"的差距,在理财咨询里就是"念免责声明"和"真的回答了他"的差距。
知识治理在银行不是加分项,是底线。三件事必须有:产品停售和下架要能立刻失效(不然他会推荐一款已经不能买的)、风险等级调整要能级联(某产品从 R3 调成 R4,旧索引不更新,他就会继续把它推给 R2 客户——这个错犯一次就是重大事件)、监管口径更新要跟得上("预期收益率"这个词在资管新规之后已经不能用了)。还有一条我特别看重:来源可追溯。网点海报和系统参数不一致是常事,他得知道以哪个为准。
他的岗位说明书
它是谁这一层,落在配置里大概是这样:
const HUILI_ROLE = {
身份: '某城商行网点大堂经理,用工号可查',
人设: '四十岁上下,说话慢,不夸张,不催不劝',
角色: '咨询与流程引导;不做任何投资建议,不判断"该不该买"',
规则: [
'先讲风险再讲收益,顺序不可颠倒',
'禁止词:保本、稳赚、肯定、绝对、最高收益',
'涉及收益率必须带"业绩比较基准不代表未来收益"',
'适当性不匹配的产品,不主动推荐、不透露细节',
],
任务: '把客户的真实需求问清楚,把产品的真实风险讲明白',
对话流程: '分流 → KYC追问 → 风险测评 → 产品对比 → 高敏升级 → 归档',
音频: '中速偏慢,音色沉稳,句间留白比一般客服长',
工具调用: ['调起测评', '查产品库', '生成对比', '推送手机银行', '转人工柜面'],
};
// 合规拦截层:模型输出必须先过这里,再接表达层
const BANNED = [/保本/, /稳赚/, /绝对安全/, /收益 guaranteed/i,
/基本上不会亏|应该没问题|很少出现/]; // 承诺性表述也算违禁
const SOFT_PROMISE = /基本上|应该没问题|很少出现/;
function complianceGate(text) {
if (BANNED.some(re => re.test(text))) {
return rewriteViaTemplate(text); // 违禁句走模板改写,不重roll大模型
}
if (text.includes('收益率') && !text.includes('业绩比较基准')) {
return text.replace('收益率', '业绩比较基准(不代表未来收益)');
}
return text;
}
// 产品对比:参数来自产品库,不是模型生成
function buildCompare(ids) {
const p = products.get(ids);
return `给您放在一起看:${p.map(x =>
`${x.name},期限${x.term},起点${x.min}元,风险等级${x.risk}`
).join(';')}。您更在意用钱灵活,还是收益高一些?`;
}
注意最后那个 buildCompare:收益率数字永远不从模型嘴里出——LLM 只负责组织语言,数字全部来自产品库模板填充。这是和银行合规部门磨了四轮达成的架构共识:AI 的角色是讲解员,不是预言家。
【图2 截图位】合规测试截图:输入诱导性问题(“这个是不是稳赚”),慧理的回复自动带风险提示
最后那行 Workflow 和工具调用,是"他会做事"和"他只会说话"的分界线:调起测评、查产品库、生成对比、推送手机银行、转人工——这些都不是"回答",是流程推进。
有个细节值得单独说:换个任务,同一个模型就变成另一种人。如果任务那行写成"提升单客产品覆盖率",客户问"这两款哪个好",他给出的答案会开始偏向费率更高的那款,而且听起来一样专业。岗位化、场景化、流程化说的就是这件事——不是让他更会聊天,是让他知道自己在哪个岗位上、该干什么、先干哪一步。
他身后的柜台系统
进入业务这一层,就是"他能不能真的把事办完"。慧理接的系统是这些:
-
存单到期、账户余额、交易明细 → 核心业务系统
-
客户持仓、历史咨询记录、到店频次 → CRM 客户系统
-
风险测评结果、适当性匹配结论 → 适当性管理系统
-
产品参数、费率、风险等级、业绩比较基准 → 产品库 / 理财销售系统
-
双录存档、话术抽检、投诉归因 → 双录与质检系统、BI 分析看板
-
预约取号、转人工柜面、理财专区排班 → 网点叫号与工单系统 / OA
-
人员排班、绩效与费用归口 → 办公与资源管理系统(OA / ERP)
-
网点智慧屏、自助终端、叫号机、未来的厅堂导览机器人 → 门店/网点设备管理系统与 IoT
第 02:30 那句"按规定我不能推荐给您",背后走的就是适当性系统。
他的零件是可以换的
这里得说清楚一件事:上面这些能力不是绑死在某一套技术栈上的。
用户还可以自选大模型——行里如果已经定了模型栈,接上去就行;没有惯用的,就用星云自研智脑,它在"身份和规则"这类事上做得比较扎实。
但可插拔不等于简单拼 API:组件能换,前提是接口契约标准化、统一的状态管理。第 04:55 客户打断那一下,如果 ASR 和 TTS 各管各的状态,换完零件后就会出现"他听见了但嘴没停"或者"嘴停了但对话状态还留在上一句"。可插拔真正考验的不是换零件那一下,是换完之后状态还对不对得上。
双录之外,没录到的那三次
双录只录客户在场的那一段。真正出问题的时候,往往不在镜头里。
第一次:禁词拦住了,语气没拦住。 上线第五天,遇到一位反复问"能不能保本"的客户,慧理说:“您放心,这类产品基本上不会亏。” 三个禁词一个都没出现,合规脚本判它通过。但"基本上不会亏"对一位 60 岁的客户来说,就是承诺。后来在合规层前面加了一道语义判据:检测"承诺性表述"而不只是关键词——包括"基本上/应该没问题/很少出现"这类软化词。这件事让我明白,关键词黑名单是给机器看的,语义判据才是给客户看的。
第二次:免责声明被"聊得顺"吞掉了。 前五六轮每句带免责,第八轮开始省了——对话一长,最先掉的就是重复性最强的那部分,偏偏它最不能省。解决不是加规则(规则早就有了),是把免责和数字绑定成同一个输出单元:数字出去,免责必须跟着,做不到就不出数。
第三次:他开始替客户做决定。 第一周出现过一句"您这个情况买这款最合适"。这句话没有任何禁词,甚至听起来很贴心——但"最合适"是投资建议,不是咨询。角色那一行不是写着玩的:咨询与流程引导,不做任何投资建议。 发现问题不是他"想越界",是他的任务描述里"帮客户选到合适的产品"和"不判断该不该买"这两句在长对话里会互相打架。后来把任务改成"把真实需求问清楚、把真实风险讲明白",打架才消。
一句话总结这三件事:提示词能让他背下产品说明书,专属智脑才能让他知道"什么时候该闭嘴"。
客户离柜:他怎么讲风险
慧理讲风险等级的时候,语速会自己降下来,句间留白比平时长半秒;说到"可能亏损本金"四个字,手势会收住,身体略微前倾。客户眉头一动,他会停下来换一种说法——不是把刚才那段重播一遍,是换个入口重讲。
这些不是"播完再配上动作",是语音、口型、情绪表情、眼神、头部动作、手势在同一次生成里出来的。多模态表达这一层要的正是这个:如果口型和动作是后配的,客户一眼就能看出来"这个人在读稿"。
还有一点容易被忽略:表达和感知不是先后两个阶段。他在讲 R2 的资产配置时,耳朵还开着——客户这时候插一句"那亏了怎么办",他不会坚持把这段讲完。这个"边讲边听"的状态,正是端到端和拼接架构最直观的区别。
大堂一天:他怎么听得见
网点大堂其实是个挺吵的地方:叫号广播每隔几十秒响一次、点钞机在柜台那边嗡嗡响、两个客户在旁边聊天、玻璃门开合还有人进出。
慧理要在这堆声音里听出谁在跟他说话。这里面有好几道处理:算法降噪先把稳态噪音压下去(点钞机、空调),AEC 抗回声处理大堂空旷空间的反射(这个处理不好,他会把自己说的话听成客户的声音,然后莫名其妙停下),本体声音抑制保证他自己的语音不会回灌进拾音链路,再用 VAD 判断哪一段是有效人声,远场处理三米外客户说话音量不足的问题。
然后是两类"停"的区分,这是最见功夫的地方:
Barge-in(智能打断)——客户说"等等,这个能亏多少",他要停在半个字上。银行客户尤其不爱打断,很多人会等你说完再重复一遍;但真打断的那次,必须一次停对。
Backchannel(反馈音)——客户"嗯"“对”"你说"这类声音不该算打断。这个区分不做,他会不停被自己的客户打断。
视觉侧我们也用了一点,但用得克制:智慧屏摄像头只做**"是否有人进入交互范围"的粗判断**——不做人脸识别、不存图、不识别身份信息。客户站到屏前十几秒还在犹豫要不要开口的时候,慧理那边先出声:"您好,需要了解什么可以问我。"网点反馈里,这一下对启动率的帮助比任何 UI 优化都大,因为很多客户不是不想问,是不知道怎么开口。
日结单:上线一个季度的实测
某城商行 6 个网点试点,智慧屏 + 手机银行双端,92 天:
不回避的问题:老年客户对屏幕形象的第一反应是"这是录像吧",需要大堂真人引导一句话才开口;产品库更新滞后一天曾导致一期产品参数过期,后来加了产品库版本号和对话绑定;还有一次客流量大时,同一块屏被两位客户几乎同时搭话,前一位的对话状态被后一位接管——多人共用一块屏的会话归属,到现在也只是做了个简单排队,没做到真的优雅。金融场景,宁慢不错。

打烊后:AI 在金融网点站住了哪个位置?
试点跑完,行里开会复盘时说了一句我记得很清楚的话:慧理最大的价值不是省了人力,是把"先讲风险"这四个字变成了每一句产品介绍的出厂设置。真人经理月底冲业绩时会松动的分寸,他不会。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)