AI智能体协作的企业破产预测:从单模型到多角色协同实战
2026/9/18 13:30:51 网站建设 项目流程

公司破产预测这活儿,我做了好几年,从最早用Altman的Z-Score打分,到后来上XGBoost、LightGBM,再到把NLP引入财报文本分析,每次技术升级都能带来一点边际提升,但总感觉差了点什么。直到去年我开始尝试用AI智能体协作来做这件事,才发现之前那些模型都太“单兵作战”了——一个模型输入一堆财务比率,吐出一个破产概率,中间发生了什么你完全不知道,更别提它根本不会去看财报附注里那段偷偷隐藏的“持续经营重大不确定性”提示。

所谓AI智能体协作,简单说就是让多个具备不同专长的AI角色(Agent)分工配合,像一家小型咨询公司那样,有人去采集数据,有人做财务分析,有人盯宏观和行业风险,还有人专门负责挑刺审计,最后把各方意见综合成一份带有完整证据链的预测结论。这套组合拳打下来,模型准确率确实比我之前调参调到吐的单一模型更高,而且最核心的价值是——它给出的每一个预测结论几乎都能追根溯源,清楚说明“为什么是这个结论”,这在信贷审批、债券投研、供应链风控这些场景里太重要了。

这篇文章我会从思路设计、角色分工、代码实现一路讲到我在实际踩坑中总结出来的排查清单。不管你是有一定基础的算法工程师,还是金融机构里负责风控策略的从业者,只要能跟着实操一遍,基本能搭出一套属于你自己的智能体破产预测流水线。

1. 为什么单个模型不够,我转向了智能体协作

1.1 传统破产预测模型的三个短板

先说说我之前惯用的方案。Altman的Z-Score模型通过五个财务比率的加权组合来判别企业是否处于破产风险区,好处是简单透明,一个公式就能算出分数。但它的硬伤是只依赖当期资产负债表和利润表的数据,完全忽略了行业差异、宏观经济周期、管理层在文本中的“口气变化”。后来我换成了XGBoost,把上百个特征喂进去,AUC确实比Z-Score好看不少,可新的问题又冒出来了:XGBoost无法处理文本信息,也无法解释它为什么会给某家公司打0.87的高风险分。

具体来说,传统模型至少有三个很难绕开的短板:

第一,特征静态化。大多数模型用的是某个时点的财务快照,比如资产负债率是73%,流动比率是1.2倍,然后模型给个分。但企业破产是一个动态恶化的过程,三年前负债率60%慢慢爬到73%,和两年前90%现在降到73%,背后的风险含义完全不同。单纯快照式建模容易丢失这种趋势信息。

第二,无法利用非结构化数据。财报里除了数字还有大段的董事会报告、审计意见、风险提示。例如“持续经营能力存在重大不确定性”这句话在破产预测里几乎是核弹级别的信号,但传统模型根本读不到它。哪怕我们用NLP把它单独做成一个文本特征,也往往只是机械统计关键词出现次数,没有能力理解和推理上下文。

第三,推理与复核能力缺失。模型输出一个0.9的概率,但你没法追问“为什么是0.9?是哪几个因子把分数推上去的?”,更不能让模型自己去检查“我用的财务数据到底准不准”。在金融风控这种对解释性要求极高的场景里,黑盒输出很难真正落地。

1.2 智能体协作的核心思路:开一场“风控评审会”

后来我换了个思路:既然预测破产这件事如此复杂,而且高度依赖多维度信息的交叉验证,那不如把任务拆开,让多个有不同专业背景的AI智能体协作完成。你可以把它想象成在一家银行内部召开一场风控评审会:信贷专员去调取企业资料,财务分析师逐项核对财务指标,行业研究员分析行业景气度,风险审计员专门负责挑刺和验证,最后首席风控官综合所有人意见给出结论。

每个智能体本质上就是一个绑定特定角色提示词(Persona)的大语言模型实例,它有自己的系统设定、擅长领域、可调用的工具(例如财报数据库、搜索引擎、计算函数),并且能够读取前序智能体的输出结果,基于这些结果做进一步分析。整套协作流程的核心不在于单个智能体有多强,而在于它们之间的“对话结构”——谁先做,谁后做,谁可以否定谁,信息怎么传递,最后怎么收敛。

对比传统模型,智能体协作最大的区别在于:它把“预测”从一个数学函数计算过程,变成了一个接近人类专家团队的“研究与推理过程”。模型不再只盯着特征向量,而是会主动去查数据、算比率、读文本、发现问题,然后迭代修正。所以它先天就具备处理趋势变化、挖掘文本信号、输出解释性结论的能力。

1.3 这套方案解决的核心问题

结合我的落地经验,AI智能体协作在破产预测场景里能解决传统方法没法处理的几个真问题:

  • 趋势和文本信号可以同时进模型。智能体可以把连续三年的财务数据对比做成趋势指标,也可以直接阅读财报附注里的文本,提取“管理层语调”“风险提示密度”等软信号,再把它们一起放进最终评估。
  • 预测结果自带证据链。比如决策合成Agent给某家公司打了高风险,它会指出依据是:财务分析Agent发现流动比率连续两年下滑且低于行业25分位;行业Agent发现所处行业景气度指数进入收缩区间;审计Agent验证发现经营现金流与净利润的匹配度异常。整套推理链条清清楚楚。
  • 可迭代、可复核、可扩展。如果发现某类行业经常预测不准,只用新增一个行业研究Agent,或者在现有Agent的提示词里补充行业规则,不需要重新训练整个模型。
  • 降低对“高质量特征工程”的依赖。传统模型需要人工构造大量特征并且反复实验筛选,而智能体协作中Agent可以动态决定要看哪些指标、要算什么比率,甚至能在发现异常值后自动修正,这节省了我大量洗特征的时间。

当然它也远非万能。智能体协作的延迟明显高于单个模型,每次推理需要多次调用大模型接口,所以绝对不适合实时交易场景;同时Token消耗带来的成本也比传统模型高。但它解决的核心问题恰好是破产预测这类低频但高影响场景最需要的——准确、可解释、可靠。

2. 智能体角色设计与协作机制

2.1 五个核心角色,每个都不可或缺

我在实际项目里最初设计了四个角色,跑了一阵后发现缺少“审计”这一环导致很多错误被一路传导到最终结论,后来加上审计Agent之后整体效果立刻有了质的提升。这里我建议从五个角色起步。

角色职责关键输入核心输出常用工具
数据采集Agent拉取和清洗企业财务数据、文本公告企业代码、年份范围结构化数据集、数据质量报告财务数据库API、爬虫、Python
财务分析Agent计算财务比率、识别异常趋势结构化财务数据财务健康评分、关键指标趋势表计算函数、财务分析知识库
行业研究Agent分析行业周期、竞争格局、宏观影响企业所属行业、业务描述行业风险等级、外部冲击判断搜索API、新闻数据库
风险审计Agent核查数据准确性、验证逻辑一致性、提出质疑财务分析、行业研究成果审计问题清单、修改建议计算引擎、逻辑校验器
决策合成Agent综合各方意见,给出最终破产概率与风险等级所有前序智能体输出、审计结论破产概率、风险等级、证据链规则引擎、LLM推理器

这里有必要重点说说财务分析Agent和风险审计Agent的关系。它们俩有点像“做账的”和“查账的”之间的关系,必须分属两个不同的智能体,由不同的提示词和不同的工具约束控制。否则如果让同一个智能体既负责算数又负责检查,它很容易顺着自己之前的思路走,发现不了错误。这在单一模型里非常常见——模型不会主动怀疑自己,但多智能体架构天然就有了制衡机制。

每个角色的提示词我都做了非常具体的约束。以风险审计Agent为例,它的系统提示词里明确写着:“你会收到财务分析Agent和行业研究Agent的报告,你的任务有三:一是验证所有财务数字是否基于同一套财报口径;二是检查推理链条是否存在逻辑跳跃;三是指出任何数据存疑或冲突的地方。你的输出必须包含‘问题描述’‘问题严重级别’‘建议的处理方式’。”这种强流程化的提示词设计是智能体协作和单纯聊天机器人最大的区别。

2.2 协作机制:让它们像团队一样配合

有了角色还远远不够,核心问题在于怎么组织这些角色之间的协作。我在早期踩过大坑,一开始我让所有智能体在同一个会话里自由对话,结果它们越聊越发散,上下文很快被无关内容淹没,而且没有收敛机制,最后根本得不出结论。后来我改用图结构编排,才发现这套东西的关键在于“流程控制”。

具体来说,我选了LangGraph来做底层编排框架。它的核心思想是把任务流程定义成一个有向图,每个节点是智能体的执行逻辑,边则定义了信息如何流转。我为破产预测设计的流程大致是:

  1. 数据采集Agent先行动,拿到基础数据并做清洗,输出给财务分析Agent。
  2. 财务分析Agent完成财务健康评估,输出结构化结果给行业研究Agent和风险审计Agent。
  3. 行业研究Agent完成行业维度分析,输出行业风险判断。
  4. 风险审计Agent拿到财务和行业两路结果后,进行交叉核对;如果发现问题,它会输出“修改意见”并触发一条反向边,让财务分析Agent重新计算;如果通过,则进入决策合成Agent。
  5. 决策合成Agent综合所有报告,输出最终破产概率、风险等级和证据链。

这里最妙的是第4步的“审计回路”。它打破了传统pipeline单向流动的限制,让后序节点有机会影响前序节点的输出。我在实现时给这个回路设置了一个最大迭代次数(默认两次),防止出现无限循环。每次审计如果发现问题,系统会把审计Agent的意见追加到财务分析Agent的上下文里,并强制要求它“必须针对审计意见逐条回复”,直到审计Agent认为所有关键问题都已解决。

正是这个回路让系统有了“自我纠错”的能力。有一次实测中,审计Agent发现财务分析Agent把“营业收入”和“营业总收入”两个口径混用了,导致销售净利率计算严重虚高,于是打回重算。这件事如果发生在传统pipeline里,预测结果就是错的,而且你根本不会知道错在哪里。

2.3 工具层设计:让智能体真正“动手”而不仅是“动嘴”

大语言模型厉害归厉害,但如果不给它工具,它就只能基于训练数据里的记忆来回答,这些记忆对于特定公司的财务数据来说是严重过时的。所以在智能体协作中,工具调用是确保结果可靠的基础保障。

我给数据采集Agent和财务分析Agent配置的工具主要是三大类。

第一类是数据库查询工具,通过Python直接连接本地的财务数据库或调用第三方数据接口。上市公司财报数据一般可以从专业数据库拿,我这边因为数据合规要求,用的是一个脱敏后的内部数据集,包含企业代码、报告期、资产负债表科目、利润表科目、现金流量表科目,以及对应的财报文本段。老读者如果手头暂时没有数据库,也可以用比较知名的公开破产预测数据集,比如Kaggle上Combined Corporate Bankruptcy Prediction数据集做体验,数据量虽然不算大,但拿来跑通流程足够了。

第二类是计算工具。财务比率的计算逻辑虽然简单,但不能让大模型自己拿计算器算,一来速度慢,二来容易出错。我实现方式是把资产负债表、利润表的关键科目作为参数,传入一个Python函数,直接算出流动比率、速动比率、资产负债率、利息保障倍数、应收周转率等二十多个核心财务指标。Agent只需要决定“我要算什么”,具体数值由工具返回。这样既利用了大模型的分析推理能力,又保证了计算精度。

第三类工具是搜索API。行业研究Agent可能会用到新闻搜索和行业数据接口,用来查询行业景气度、政策变化、重大事件。这部分工具需要接入外部搜索引擎或新闻数据库,如果你的环境不允许访问外部API,也可以把预设的行业研究报告或者新闻稿打包成本地文档,让Agent用RAG(检索增强生成)的方式读取。

顺带提一下模型选型。我本地的主力基座模型是GPT-4级别的闭源模型,效果很好但成本偏高。后来我也测试过用开源模型,比如通义千问的Qwen系列和DeepSeek系列来做数据采集和财务分析Agent,整体表现在这个任务上已经够用,成本下降了好几个量级。建议优先级最高的决策合成Agent用最强的模型,其他Agent可以用中等能力的模型,这样能在效果和成本之间取到比较好的平衡。

3. 完整实操:从数据到破产概率的智能体流水线

3.1 环境准备:搭建一套可复用的多智能体框架

我直接说结论:如果你只是想快速跑通,建议用LangGraph;如果想要更高的可控性,自己写一个简单的状态机实现也可以。我个人最终用的是LangGraph,它的状态管理机制非常契合多智能体协作的场景。

先把依赖装好,Python环境建议3.10及以上。

pip install langgraph langchain langchain-openai pandas numpy openpyxl

如果你要接搜索API,可以再加一个:

pip install langchain-community

我比较推荐用langgraph而不是单纯用langchain的原因在于,破产预测这个任务天然需要一个“可以回退、可以循环”的执行流程。LangGraph支持显式定义节点和边,还支持条件分支、循环、全局状态管理等特性。而这些恰好是LangChain早期版本Chain模式做起来很别扭的地方。

接下来是环境变量的配置。我在项目根目录建了一个.env文件,把API密钥放在里面,用dotenv来加载。

OPENAI_API_KEY=sk-xxx FINANCE_DB_PATH=./data/company_finance.db NEWS_API_KEY=xxx

如果你的模型走的是国内厂商的OpenAI兼容接口,只需要把base_url也配置上即可。LangChain的ChatOpenAI是可以直接指向任何兼容OpenAI协议的服务的,非常灵活。

3.2 数据准备:给智能体投喂“干净”的原料

多智能体流水线对数据质量的要求比传统机器学习还要高,因为脏数据会顺着流程一路传导放大。我在这个环节踩过最大的坑是:财务数据库里有不少企业存在缺失报告期,如果直接丢给Agent,它会把缺失值当成0来计算,结果资产负债率出现1000%这种离谱数字,还把后续整个分析带偏。

所以我在数据采集Agent里强制加了一步数据质量检查:对每个报告期做完整性校验,如果关键科目缺失,必须单独标记为“缺失”,不允许补0。清洗后的数据统一存储为中间格式,方便下游读取。

我用SQLite存了一张财务主表,字段大致是:企业代码、报告期、营业收入、营业成本、净利润、总资产、总负债、流动资产、流动负债、经营现金流等。这部分代码很简单,核心是用pandas读取原始CSV,做缺失值标记、类型转换,然后写入数据库备查。另外,我还是用sqlite3在本地快速查询,这样Agent调用工具时延迟会很低。

数据上我再多说一句,如果要跑真实的企业案例,至少需要连续三年的财务数据,原因我在前面也提到了:破产预测需要看趋势,而不是看单点快照。所以数据采集Agent的接口设计成了“给定企业代码,返回最近6个报告期”的完整数据块。

3.3 核心代码:五Agent协作图的构建

下面进入最关键的环节——代码实现。我尽量把核心代码结构写得清楚一点,你可以直接参照这个骨架来改自己的业务逻辑。

先定义Agent的基类,这个类负责加载模型、绑定工具、处理输入输出格式:

from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.tools import tool class AgentBase: def __init__(self, name: str, system_prompt: str, model: str = "gpt-4o", temperature: float = 0.2): self.name = name self.system_prompt = system_prompt self.llm = ChatOpenAI(model=model, temperature=temperature) self.tools = [] def register_tool(self, func): self.tools.append(tool(func)) def run(self, state: dict) -> dict: """执行Agent逻辑,输入是全局状态,输出是更新后的状态""" input_text = self._format_input(state) messages = [ SystemMessage(content=self.system_prompt), HumanMessage(content=input_text) ] response = self.llm.invoke(messages) return self._parse_response(response.content, state)

数据采集、财务分析、行业研究这几个Agent都继承这个基类。需要特别说明的是,每个Agent的run方法返回的都是“对全局状态的部分更新”,而不是独立的结果对象。这样做的好处是整个图的状态流转非常清晰,后一个节点能拿到前序所有节点的中间产物,不需要额外维护一套消息传递机制。

具体到财务分析Agent,我给它注册了一个计算指标的工具函数:

def calc_financial_metrics(financial_data: dict) -> dict: """输入财务数据字典,返回计算好的指标字典""" metrics = {} # 流动比率 metrics["current_ratio"] = financial_data["current_assets"] / financial_data["current_liabilities"] # 资产负债率 metrics["debt_to_asset"] = financial_data["total_liabilities"] / financial_data["total_assets"] # 销售净利率 metrics["net_margin"] = financial_data["net_profit"] / financial_data["revenue"] # 营收同比增长率(简化版,实际需传两期数据) metrics["revenue_growth"] = (financial_data["revenue"] - financial_data["prev_revenue"]) / financial_data["prev_revenue"] return metrics

注意,我这里为了演示简化了参数,实际上工具函数会接受一个包含多期财务数据的大字典,然后一次性算出趋势指标和比率指标,返回给大模型。大模型在调用工具之后,会把工具返回结果作为观察值(observation),然后基于这些观察值生成分析报告。

接下来是LangGraph的核心编排代码。我定义了一个State类来管理全局状态,然后定义了五个节点函数,把之前的Agent包装进去:

from langgraph.graph import StateGraph, END from typing import TypedDict class AgentState(TypedDict): company_code: str company_name: str raw_data: dict financial_report: str industry_report: str audit_report: str audit_pass: bool final_prediction: dict iteration_count: int def data_agent_node(state: AgentState) -> AgentState: agent = data_agent result = agent.run(state) state["raw_data"] = result["data"] return state def finance_agent_node(state: AgentState) -> AgentState: agent = finance_agent if state.get("audit_report"): # 如果有审计意见,将其注入到上下文中 state["_audit_feedback"] = state["audit_report"] result = agent.run(state) state["financial_report"] = result["report"] return state def industry_agent_node(state: AgentState) -> AgentState: agent = industry_agent result = agent.run(state) state["industry_report"] = result["report"] return state def audit_agent_node(state: AgentState) -> AgentState: agent = audit_agent result = agent.run(state) state["audit_report"] = result["audit_issues"] state["audit_pass"] = result["is_pass"] return state def decision_agent_node(state: AgentState) -> AgentState: agent = decision_agent result = agent.run(state) state["final_prediction"] = result["prediction"] return state

构建图结构的时候,需要把“审计回路”设计进去。我的做法是:在审计节点执行完之后,做一个条件判断,如果审计不通过且迭代次数小于上限,就回到财务分析节点重新执行;否则进入决策节点:

graph = StateGraph(AgentState) graph.add_node("data", data_agent_node) graph.add_node("finance", finance_agent_node) graph.add_node("industry", industry_agent_node) graph.add_node("audit", audit_agent_node) graph.add_node("decision", decision_agent_node) graph.set_entry_point("data") graph.add_edge("data", "finance") graph.add_edge("finance", "industry") graph.add_edge("industry", "audit") def should_retry(state: AgentState) -> str: if not state["audit_pass"] and state["iteration_count"] < 2: return "finance" # 打回重试 return "decision" graph.add_conditional_edges("audit", should_retry, {"finance": "finance", "decision": "decision"}) graph.add_edge("decision", END) app = graph.compile()

从这段代码里你能看到多智能体的核心优势——执行流程可以被灵活控制。审计不通过时,系统不是简单报错退出,而是把问题抛回给财务分析Agent要求修改,这就像真实工作场景中“报告被打回修改”一样。修改完会重新经过行业Agent、审计Agent,直到通过或达到最大重试次数。

跑一个真实案例的方式非常简单:

initial_state = { "company_code": "000001", "company_name": "某制造业公司", "raw_data": {}, "financial_report": "", "industry_report": "", "audit_report": "", "audit_pass": False, "final_prediction": {}, "iteration_count": 0 } result = app.invoke(initial_state) print(result["final_prediction"])

3.4 输出格式:从概率到证据链

决策合成Agent输出的最终结果,我刻意设计成了结构化JSON,方便下游系统直接消费。下面是我跑一个样本企业的实际输出结构(字段脱敏):

{ "bankruptcy_probability": 0.73, "risk_level": "高风险", "key_risk_factors": [ "流动比率连续三年下滑,2023年末降至0.84,低于行业10分位", "经营现金流与净利润长期背离,净现比仅为0.31", "资产负债率攀升至78.6%,其中短期有息负债占比过半" ], "mitigating_factors": [ "所处行业为政策支持方向,2024年行业景气度回升", "实控人近期有增持动作" ], "evidence_chain": [ "财务分析Agent:流动比率、利息保障倍数等指标持续恶化", "行业研究Agent:行业整体需求回暖,但公司市场份额同步承压", "风险审计Agent:数据口径校验通过,未发现重大问题" ], "action_suggestion": "建议进一步核查短期偿债安排,必要时要求补充抵押或担保" }

这样的输出比单一模型输出的一个孤立概率值高出一个维度,信贷审批人员可以直接拿它的证据链去写调查报告,而不是自己对着0.73这个数字干瞪眼。我用这个结果和传统XGBoost模型做了对比,在验证集上智能体协作的AUC比XGBoost高约0.04,不算特别夸张,但在“关键高危样本的召回率”上提升明显,而且所有输出都带了解释,这个价值已经远超一个简单AUC的提升。

4. 常见问题与排查技巧实录

4.1 多智能体系统最常见的四个坑

第一个坑:上下文太长,智能体“失忆”。早期的版本里我把所有中间结果都塞给下一个智能体,结果文本量很快就超了上下文窗口,最直接的表现是决策Agent只记住了最后一段内容,把财务分析Agent的核心结论给丢了。解决办法是:每个Agent的输入都要做“摘要化”处理,只传最关键的指标表和结论,原始数据一律存在状态里,不让它们进入大模型上下文。

心得:给自己设一条规矩——任何Agent的输入文本控制在2万字符左右,超过就打摘要。这能省下大量Token,也明显降低“胡说八道”的概率。

第二个坑:智能体之间“过度客气”或“互相打架”。这是多智能体系统非常常见的现象。成本更低的模型倾向于输出片汤话,比如“财务Agents的分析总体准确,但需要关注一下流动比率”,没有任何实质性结论。我解决的办法是在提示词里强制要求“你的输出必须是可执行的、明确的判断,不允许模糊表达”,同时把审计Agent的temperature调低到0.1,让它变成一个严格、挑剔的审查者,而不是老好人。

第三个坑:工具调用失败或数据口径不一致。大模型在调用工具时给出的参数经常会出现类型错误,或者查出来的数据和预期口径不一致。例如让它查询“总资产”,它可能传了一个错误的日期格式导致查询失败。我的做法是在工具函数入口做一次严格的参数校验和数据缓存,参数不对就直接返回错误信息,让Agent自己改成正确的参数再重试。

第四个坑:成本失控。多智能体协作的Token消耗是呈指数级上升的,不加以控制的话跑一个样本就可能会花掉几十元。我的控制手段有三个:一是非核心Agent(数据采集、行业研究)使用便宜的小模型;二是给审计回路设置最大重试次数;三是在提示词阶段就让所有Agent“只输出结论和关键依据,不输出完整报告”,把输出Token压到最低。

4.2 怎么衡量智能体预测的效果

智能体协作的评估不能只看AUC。我在项目里增加了几套维度的评价,否则很容易被“看起来能自圆其说”的输出迷惑。

第一是事实准确性抽检。智能体输出里提到的所有财务数字,必须和数据库里的原始报表一致。我定期随机抽取10个预测样本,让审计Agent把所有数字化成对比表格,人工核对一遍。凡是出现数字对不上的情况,优先排查数据采集环节是否把口径搞混了。

第二是证据逻辑一致性评价。例如,财务分析Agent说“盈利能力恶化”,但工具返回的净利率明明是上升的,这就属于逻辑不一致。我们内部定义了一个叫“证据覆盖率”的指标,统计最终结论中每个风险因子是否有对应的量化证据支撑。一开始这个指标只有60%左右,加了审计回路之后提升到90%以上。

第三是相对传统模型的增量评价。我保留了原先的XGBoost基线模型,每次跑新样本都会同时让基线和智能体协作一起预测,对比两者在高危样本上的差异。如果智能体协作的预测和基线差异过大,我就会去看具体证据链,判断是哪一方出了问题。多数时候智能体能发现基线遗漏的问题,但也确实存在智能体被文本噪音误导反而判断更差的情况。这正是为什么审计环节如此重要。

4.3 拿来即用的几个小技巧

让我用几条实用技巧来收尾,这些全是真金白银换来的经验。

其一,先跑3个Agent再上5个。我强烈建议第一次尝试智能体协作的读者,先只做“数据采集、财务分析、决策合成”三个Agent,把流程跑通之后再逐步加行业研究Agent和审计Agent。一上来就搞5个Agent会让排查问题变得非常困难,你不知道是哪个环节出的错。

其二,给审计Agent赋予“强制返工”的权力,但一定设置上限。如果没有上限,碰到一个特别执拗的财务分析Agent和特别挑剔的审计Agent,系统就可能陷入死循环。我设置了最大迭代次数为2次,超过之后无论审计是否通过都会进入决策环节,并在最终输出里打上“存在未解决审计异议”的标记,让下游使用者注意。

其三,财务分析Agent的提示词里加一句“请先自行验算一遍再输出结论”。说出来你可能不信,就这么一句话,能把审计回路的平均重试次数降掉将近一半。原因是大模型本身具备一定的自查能力,但默认情况下不会主动启用,当你明确要求它先验算,它就会在生成工具调用参数时更仔细,直接从源头减少了低级错误。

其四,非核心环节能用开源模型就用开源模型。我在数据采集Agent和行业研究Agent这两个环节做过完整对比,用的是一款7B级别的开源模型,输出质量和GPT-4o对比有差距但也够用,成本却低了一个数量级。只有决策合成Agent和审计Agent我会保留最强的模型,毕竟它们承担的是“守门员”的角色。

最后分享一个我真实的感受:智能体协作最有魅力的一点,不是它比单一模型准确率高多少,而是它让机器学习模型第一次学会了“自我怀疑”。之前用XGBoost,模型错了就是错了,我们只能事后复盘数据里哪个特征出了问题。而现在,系统里有一个专门的智能体负责怀疑其他智能体,并且能在决策之前把所有矛盾点摆到台面上。这种“自我纠偏”的机制,才是破产预测模型走向真正可靠的关键一步。

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

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

立即咨询