
金融信贷这个行业对AI智能体的态度一直很微妙——业务部门想要效率风控部门怕出事合规部门盯着每一句话的措辞。我最近花了两周时间在华为云AgentArts上搭了一套信贷场景的智能体从知识库构建到工作流编排再到容错机制踩了不少坑也摸出了一些门道。这篇笔记不讲虚的全是实操层面的东西RAG知识库怎么切分信贷文档、AgentArts的工作流节点怎么串、金融场景下智能体的容错边界怎么定、以及为什么有些看起来能跑通的方案在生产环境会翻车。如果你正在做金融方向的AI智能体或者手头有信贷知识库想接入大模型这篇内容应该能帮你省掉至少一周的试错时间。我会从实际搭建过程出发把每个关键决策背后的逻辑讲清楚包括那些文档里不会写的坑。1. 信贷场景为什么需要智能体而不是简单的问答机器人1.1 信贷业务的知识复杂度远超普通问答信贷业务的知识体系有个特点它不是一棵树而是一张网。一个小微企业信用贷款产品往上关联着监管政策、行业准入、区域差异往下牵扯着授信额度计算、利率定价、担保方式、还款方式、逾期处理横向还连着反欺诈规则、征信查询授权、贷后管理要求。客户问一句我这种情况能贷多少背后可能需要同时查产品政策、准入规则、额度模型、征信要求四五个维度的信息。普通的问答机器人怎么做把常见问题整理成FAQ用户问什么就匹配最接近的答案。这在信贷场景下基本不可用因为客户的问题千变万化而且往往一句话里包含多个约束条件。比如我是做餐饮的去年营收300万有房贷在还想贷50万周转能批吗——这里面有行业属性、营收规模、负债情况、资金用途四个变量FAQ匹配根本处理不了。智能体的价值就在这里。它不是简单地检索答案而是能拆解问题、调用工具、多步推理、综合判断。AgentArts提供的ReAct模式让智能体可以思考-行动-观察循环先理解客户意图再决定查哪个知识库、调哪个接口、怎么组合信息最后给出有依据的回答。1.2 AgentArts在金融场景的差异化定位市面上做智能体的平台不少AgentArts吸引我的点在于它对RAG的支持比较完整而且工作流编排的粒度够细。金融信贷场景有个硬要求每个回答都要有出处。你不能跟客户说根据我们的政策得说根据《XX产品管理办法》第X条。AgentArts的知识库检索可以返回原文片段和来源标注这对合规审查来说很关键。另一个差异点是AgentArts支持多知识库联合检索。信贷业务的知识分散在产品手册、操作流程、监管文件、内部通知好几个地方如果只能挂一个知识库要么把所有文档塞一起导致检索精度下降要么频繁切换知识库导致工作流复杂。AgentArts可以配置多个知识库并设置检索优先级这个在实际项目里省了很多事。1.3 从能回答到能办事的跨越信贷智能体和普通问答机器人的本质区别在于前者要能办事后者只要能回答。什么叫能办事客户说我想提前还款智能体不能只回答提前还款需要满足XX条件而是要能查客户的贷款合同、计算提前还款违约金、生成还款计划、引导客户确认操作。这涉及到工具调用、状态管理、多轮对话记忆。AgentArts的工作流编排支持条件分支和循环可以处理这种多步骤的业务流程。我实测下来一个完整的提前还款咨询流程大概需要6-8个节点包括意图识别、合同查询、违约金计算、方案生成、客户确认、工单创建。如果用传统的对话机器人做要么写死流程导致灵活性差要么让大模型自由发挥导致不可控。AgentArts的折中方案是用工作流定义主干流程用大模型处理每个节点内的自然语言理解和生成既保证了流程可控又保留了对话的灵活性。2. RAG知识库构建信贷文档的切分策略与检索调优2.1 信贷文档的特殊性决定了切分不能一刀切做RAG的第一步永远是文档切分而信贷文档的切分比通用文档麻烦得多。我一开始用默认的按字数切分比如每500字一段结果检索出来的片段经常是半句话——借款申请人须同时满足以下条件1具有完全民事行为能力2然后就断了。这种片段喂给大模型它要么瞎编后半句要么说信息不完整。后来我改成按语义结构切分。信贷文档有个好处是结构相对规范产品管理办法通常按总则-准入条件-授信额度-利率定价-担保方式-贷后管理分章操作流程按受理-调查-审查-审批-放款-贷后分节。我按照这些自然边界来切分每个片段保证是一个完整的语义单元。具体做法是先用规则提取文档的标题层级然后以三级标题为最小切分单位如果某个三级标题下的内容超过800字再按段落切分。这里有个细节信贷文档里经常有表格比如利率对照表、额度测算表。表格切分不能按行切否则检索出来的就是孤立的数字。我的做法是把表格转成Markdown格式保留表头然后整个表格作为一个片段。如果表格特别大超过2000字就按业务逻辑拆成子表比如利率表按产品类型拆额度表按客户等级拆。2.2 知识库分层把死知识和活知识分开信贷知识有个特点政策文件相对稳定但产品参数和利率经常调整。如果把所有知识混在一个库里每次利率调整都要重新索引整个知识库既慢又容易出错。我的做法是分三层第一层是制度层存放管理办法、操作规程、监管文件这些内容半年一年才更新一次检索优先级最高因为所有回答都要引用制度依据。第二层是产品层存放具体产品的准入条件、额度范围、利率区间、期限选项这些内容可能每月甚至每周更新检索优先级次之。第三层是话术层存放标准应答话术、常见问题解答、客户沟通指引这些内容更新最频繁检索优先级最低主要用于生成回答时的语言组织参考。AgentArts支持多知识库配置我给每个知识库设置了不同的检索权重。制度层权重1.0产品层0.8话术层0.5。这样当客户问小微企业贷款额度上限时系统会优先从制度层找依据再从产品层找具体数字最后从话术层找表达方式。2.3 检索调优为什么你的RAG总是答非所问RAG检索不准八成是这三个原因之一切分粒度不对、Embedding模型不适配、检索策略太单一。切分粒度的问题前面说了这里重点讲Embedding模型。AgentArts默认用的是通用中文Embedding模型在通用语料上表现不错但信贷领域有很多专业术语和缩写比如LPR、不良率、拨备覆盖率、风险敞口通用模型对这些词的理解不够精准。我的做法是在AgentArts里上传了一批信贷领域的问答对对Embedding模型做了微调。微调之后检索LPR调整对存量房贷的影响时能准确召回包含贷款市场报价利率和存量浮动利率贷款的片段而不是召回一堆讲利率的通用内容。检索策略方面单一向量检索在信贷场景下不够用。客户问餐饮行业能贷多少向量检索可能召回一堆讲行业准入的片段但漏掉了餐饮行业特别授信政策这个关键文档。我的做法是混合检索向量检索关键词检索然后用重排序模型合并结果。AgentArts支持配置混合检索关键词检索我设置了行业名称授信额度这样的组合确保特定行业的政策不会被漏掉。还有一个容易被忽略的点是检索数量。默认返回Top 5片段但在信贷场景下一个问题的答案可能分散在多个文档里。比如问提前还款违约金怎么算可能需要同时查合同条款、利率规则、还款方式说明三个文档。我把检索数量调到Top 10然后让重排序模型筛选出最相关的5个片段喂给大模型。实测下来回答完整度提升了大概30%。3. 工作流编排从意图识别到工单生成的完整链路3.1 意图识别节点信贷场景的意图分类比通用场景细得多通用对话系统的意图分类通常就是咨询、投诉、办理几大类但信贷场景下咨询这个意图下面至少有二十个子意图额度咨询、利率咨询、期限咨询、准入条件咨询、材料清单咨询、提前还款咨询、逾期处理咨询、征信影响咨询等等。如果意图识别做不细后面的知识库检索和工具调用就没法精准路由。AgentArts的意图识别节点支持自定义意图分类我用了两级分类。第一级用大模型做粗分类把用户问题归到产品咨询、业务办理、贷后服务、投诉建议四个大类。第二级用Few-shot示例做细分类每个大类下面配置10-20个示例问题。比如产品咨询下面配置了小微企业贷款需要什么条件、抵押贷款和信用贷款有什么区别、最高能贷多少等示例。这里有个经验Few-shot示例要覆盖同义表达。客户不会说我想咨询小微企业贷款的准入条件他可能说我开小公司的能贷吗、个体户能不能申请、没有抵押物行不行。这些变体都要作为示例配进去否则意图识别会漏。我大概配了200多条示例覆盖了常见问法的80%以上。3.2 知识检索与工具调用的路由逻辑意图识别完之后下一步是决定查知识库还是调工具。这个判断逻辑我放在了一个条件分支节点里。规则是这样的如果意图是产品咨询类走知识库检索路径从制度层和产品层召回信息生成回答。如果意图是业务办理类先走知识库检索确认办理条件再调用业务接口查询客户状态最后生成办理指引。如果意图是贷后服务类直接调用业务接口查询合同信息再结合知识库里的贷后政策生成回答。这个路由逻辑看起来简单但实际配置时有个坑工具调用的前置条件校验。比如客户说我要提前还款智能体不能直接调提前还款接口得先确认客户有没有未结清的贷款、贷款是否在可提前还款状态、有没有逾期。这些校验如果放在大模型里做它可能会漏掉某些条件。我的做法是在工作流里加了一个前置校验节点用规则引擎硬编码校验逻辑只有全部通过才进入下一步。3.3 多轮对话的状态管理信贷业务办理通常需要多轮对话。客户说我想申请贷款智能体问您是什么行业客户回答餐饮智能体再问营收大概多少客户回答300万智能体再问有没有抵押物客户回答有房产。这个过程中智能体需要记住前面几轮的信息最后综合判断。AgentArts提供了会话变量功能可以在工作流节点之间传递数据。我定义了这么几个变量industry行业、revenue营收、collateral抵押物、loan_amount申请金额、loan_purpose资金用途。每个变量在对应的对话轮次中赋值最后在方案生成节点里统一使用。这里有个细节变量赋值时的容错处理。客户可能说大概三百万吧而不是300万可能说做餐饮的而不是餐饮行业。我在变量赋值节点里加了一个归一化处理用大模型把自然语言转成标准格式。比如三百万转成3000000做餐饮的转成餐饮。这个处理看起来不起眼但能大幅降低后续逻辑判断的出错了率。3.4 工单生成与人工兜底智能体不是万能的有些场景必须转人工。我的做法是在工作流末尾加了一个置信度判断节点。如果智能体对回答的置信度低于阈值我设的是0.75或者用户明确说转人工就触发工单生成流程。工单生成节点会做三件事第一把对话历史、用户信息、已收集的变量打包成工单内容第二根据意图类型路由到对应的业务队列比如产品咨询转售前贷后服务转贷后第三给用户返回一个工单号和预计响应时间。这里有个经验工单内容要结构化。不要直接把对话记录扔给人工坐席而是提取关键信息填到工单模板里。比如客户咨询小微企业贷款行业餐饮营收300万有房产抵押申请金额50万智能体已告知准入条件和所需材料客户表示需要时间准备材料要求人工跟进。这样人工坐席一眼就能看懂上下文不用翻聊天记录。4. 金融场景下的容错机制智能体出错怎么办4.1 信贷智能体的错误类型与风险等级智能体出错不可怕可怕的是不知道它会出什么错。我把信贷智能体的错误分了三类第一类是事实性错误比如把利率说错了、把额度上限说低了、把材料清单漏了一项。这类错误风险最高因为客户可能基于错误信息做决策。防范手段是强制引用来源每个回答必须附带知识库片段的原文和出处如果检索不到依据智能体必须说我需要核实后回复您而不是编一个答案。第二类是流程性错误比如该校验的条件没校验、该调用的接口没调用、该转人工的没转。这类错误风险中等通常不会直接导致客户损失但会影响体验。防范手段是工作流硬编码关键校验节点不让大模型自由发挥。第三类是表达性错误比如语气不当、用词不专业、回答太啰嗦。这类错误风险最低但影响品牌形象。防范手段是配置话术模板和风格指引让大模型在生成回答时参考。4.2 知识库检索的兜底策略RAG最怕的是检索不到相关内容。客户问了一个知识库里没有的问题大模型要么瞎编要么说我不知道。前者风险极高后者体验很差。我的兜底策略是三层第一层检索置信度过滤。AgentArts的检索结果会返回相似度分数我设了一个阈值0.6低于这个分数的片段不采用。如果所有片段都低于阈值进入第二层。第二层同义改写重试。用大模型把用户问题改写成更规范的表达再检索一次。比如客户问没钱还了怎么办改写成贷款逾期处理方式再检索。这个改写重试能解决大概40%的检索失败问题。第三层兜底话术。如果重试后仍然检索不到智能体返回标准兜底话术您的问题我需要进一步核实已为您创建咨询工单工作人员会在1个工作日内回复。同时触发工单生成流程。4.3 大模型幻觉的抑制手段大模型幻觉在信贷场景下是致命的。客户问提前还款违约金多少大模型可能根据一般银行收1%-3%这样的通用知识编一个答案但实际上不同产品、不同还款期限的违约金规则完全不同。我用了三个手段来抑制幻觉第一个手段是Prompt约束。在系统提示词里明确写你只能基于提供的知识库片段回答问题。如果片段中没有相关信息必须回答根据现有资料无法确认建议咨询人工客服。禁止使用你的通用知识进行推断。第二个手段是引用强制。要求大模型在回答中标注每个信息的来源格式是[来源文档名称章节]。如果大模型编了一个没有来源的信息后处理节点会检测到并拦截。第三个手段是关键数字二次校验。对于利率、额度、期限、违约金比例这类关键数字我在工作流里加了一个校验节点用正则表达式从大模型回答中提取数字然后和知识库片段中的数字比对。如果不一致触发人工审核。4.4 人工兜底的触发条件与响应机制人工兜底不是简单的转人工而是要设计好触发条件和响应机制。触发条件我设了这么几个置信度低于0.75、用户明确要求转人工、涉及投诉或敏感话题、关键数字校验不通过、连续两轮对话未能解决用户问题。响应机制方面工单生成后会自动路由到对应的业务队列同时给用户返回一个预计响应时间。如果队列繁忙系统会自动升级优先级。我实测下来智能体的自助解决率大概在65%左右剩下35%转人工其中大部分是复杂业务办理和投诉建议。5. 实测数据与优化方向5.1 关键指标实测我在测试环境跑了一周大概处理了2000多条模拟对话。几个关键指标指标数值说明意图识别准确率91.3%200条测试样本18条误分类知识库检索召回率87.6%检索到相关片段的比率回答完整度82.4%人工评估回答覆盖问题要点的比例自助解决率65.2%无需转人工的比率平均响应时间2.3秒从用户发送到智能体回复幻觉率3.1%人工抽检发现的事实性错误比例意图识别准确率91.3%这个数字看起来不错但实际使用中那8.7%的误分类主要集中在边界模糊的场景。比如我想了解提前还款和我要办理提前还款前者是咨询后者是办理但表达上很接近。我的优化方向是增加更多边界样本同时引入上下文信息辅助判断。幻觉率3.1%虽然不高但在信贷场景下还是偏高。我分析了一下主要发生在知识库覆盖不全的领域比如一些新产品的政策还没入库大模型就用通用知识补全了。优化方向是加快知识库更新频率同时加强关键数字的校验。5.2 性能瓶颈与优化AgentArts的工作流执行有延迟我实测下来一个完整的6节点工作流平均耗时2.3秒其中知识库检索占1.1秒大模型生成占0.9秒其他节点占0.3秒。知识库检索是最大的瓶颈。优化手段包括减少检索片段数量从Top 10降到Top 5但召回率会下降、使用更快的Embedding模型精度会下降、缓存高频问题的检索结果。我目前用的是缓存方案对Top 100高频问题做了结果缓存命中率大概35%平均响应时间降到了1.8秒。大模型生成方面AgentArts支持流式输出用户可以看到逐字生成的效果感知延迟会低很多。但流式输出有个问题如果生成到一半发现幻觉没法撤回。我的做法是在流式输出前加一个快速校验节点对关键数字做预校验通过后再流式输出。5.3 后续迭代方向接下来我打算从三个方向继续优化第一知识库自动化更新。目前知识库更新还是手动上传文档我打算对接内部的文档管理系统实现政策文件更新后自动同步到知识库。第二多模态知识库。信贷业务有很多图表比如利率走势图、额度测算表。目前这些图表还是以文本形式存储检索效果不好。我打算试试AgentArts的多模态检索能力把图表转成结构化数据再入库。第三智能体自我评估。让智能体在回答后自己评估置信度如果置信度低就主动转人工而不是等用户不满意再转。这个需要设计一套评估Prompt目前还在试验阶段。6. 踩过的坑与实操心得6.1 知识库切分的坑别信默认参数AgentArts的默认切分参数是每500字一段重叠50字。这个参数在通用文档上还行在信贷文档上就是灾难。我一开始没改结果检索出来的片段经常是半句话大模型要么瞎编后半句要么说信息不完整。后来我改成按语义结构切分最小单位是三级标题最大不超过800字。如果三级标题下的内容超过800字再按段落切分。表格单独处理整个表格作为一个片段如果表格太大就按业务逻辑拆。这里有个细节重叠字数要设小一点。默认50字的重叠在信贷文档里会导致检索结果重复因为信贷文档的段落之间逻辑独立性比较强不像小说那样需要上下文衔接。我把重叠设成了20字只保留必要的上下文。6.2 意图识别的坑同义表达覆盖不全我一开始配意图示例的时候按照标准话术配的比如我想咨询小微企业贷款的准入条件。结果测试的时候客户说我开小公司的能贷吗意图识别直接归到了其他。后来我补了200多条同义表达覆盖了常见问法的80%以上。这里有个经验意图示例要来自真实对话。我后来从客服系统里导出了1000条真实对话记录从中提取了各种问法效果比我自己编的好得多。真实用户的表达往往不完整、有错别字、有口语化表达这些都要覆盖到。6.3 工作流的坑别让大模型做关键判断我一开始把是否满足贷款条件的判断放在了大模型节点里让大模型根据知识库片段和用户信息综合判断。结果发现大模型有时候会漏掉某些条件比如客户说有房贷在还大模型可能忘了算负债率。后来我把关键判断都改成了规则引擎用硬编码的逻辑做校验。大模型只负责理解用户输入和生成回答不做关键决策。这个改动之后流程性错误率从12%降到了2%以下。6.4 容错的坑兜底话术不能太生硬我一开始的兜底话术是抱歉我无法回答您的问题请转人工。测试的时候用户反馈说感觉像被抛弃了。后来改成您的问题我需要进一步核实已为您创建咨询工单工作人员会在1个工作日内回复。您也可以直接拨打客服热线XXX。这样用户感觉有人管体验好很多。还有一个细节兜底话术要分场景。产品咨询的兜底话术和贷后服务的兜底话术应该不一样。产品咨询可以说我帮您转接专业的贷款顾问贷后服务可以说我帮您查询一下合同信息请稍等。场景化的兜底话术能让用户感觉智能体是真的在帮忙而不是在推卸责任。6.5 实测中的意外发现有个意外发现用户对智能体的容忍度比想象中高。我原本以为用户会介意我是AI这件事但实测下来只要智能体能解决问题用户并不在意对面是人还是AI。反而有些用户觉得跟AI说话更自在因为不用担心被推销。另一个发现是多轮对话中用户会主动补充信息。比如智能体问您是什么行业用户可能回答餐饮去年营收300万有房产。这时候智能体要能识别出用户一次性提供了多个信息分别赋值给对应的变量而不是傻傻地继续问营收多少。这个功能我是在变量赋值节点里加了一个多信息提取逻辑用大模型从用户回答中提取所有可识别的变量。实测下来多轮对话的轮次从平均5.2轮降到了3.8轮体验提升明显。6.6 关于AgentArts的使用建议最后说几个AgentArts的使用建议工作流节点不要太多。我一开始设计了一个12节点的流程结果调试起来非常痛苦一个节点出错整个流程跑不通。后来精简到了6个核心节点把一些辅助逻辑合并到相邻节点里调试效率高了很多。善用变量和上下文。AgentArts的会话变量功能很强大可以在节点之间传递复杂数据结构。我定义了一个context变量把所有用户信息和对话状态都放在里面每个节点从context里读数据、写数据避免了变量满天飞的问题。测试要覆盖边界场景。我一开始只测了正常流程上线后发现各种边界场景都会出问题。后来补了50多个边界测试用例包括空输入、超长输入、特殊字符、多意图混合、中途切换话题等覆盖率上去了线上问题就少了。日志要打全。AgentArts的日志功能可以记录每个节点的输入输出调试的时候非常有用。我建议在每个关键节点都打日志包括检索到的片段、大模型的原始输出、变量赋值结果等。出问题的时候看日志比猜快得多。