用AI辅助生成企业风险分析报告:结构化API + LLM 的正确打开方式
我们的开发团队常收到两类需求:
内部:快速了解合作方的行政处罚、司法诉讼、经营异常等风险
外部:给客户演示企业数据 API 的价值,不能只丢一堆 JSON
传统做法是手工把 JSON 整理成 Word/Excel 报告,重复枯燥还容易漏重点。
大模型擅长文本生成,我们想用它来撰写报告初稿,但必须保证事实准确、可追溯、不编造。
经过几轮迭代,我们总结出一套“结构化 API + 模板约束 + 事实核验”的可靠方案,分享给大家:调用企业风险数据 API,再让大模型将结构化数据辅助生成自然语言版的尽调报告草稿。代码量不大,但如果能避开几个常见的坑,效果会安全且实用。
一、背景与核心风险
如果直接用 LLM 自动写报告,会遇到两个问题:
数据隐私/合规:企业行政处罚、被执行人信息等敏感数据,不能明文发给公有云大模型(违反《数据安全法》及 API 使用条款)。
模型幻觉:LLM 会编造不存在的日期、金额。例如输入只有“立案金额 120 万,法院杭州西湖”,模型可能自行加上“2024 年立案”——这在风控中是不可接受的。
所以,我们的方案必须:脱敏或本地化部署 + 强制可追溯 + 事后校验。
二、安全合规的整体思路
流程依然是三步,但每步都加了安全护栏:
1.调用企业风险 API 获取原始数据(行政处罚、司法信息、经营异常等)。
2.对敏感数据脱敏或采用本地模型(绝不能将原始企业风险数据直接发送给公有云大模型,除非已获授权且数据不包含个人信息/商业秘密)。
让 LLM 按固定模板填充内容,并要求每个结论附带原始数据路径,最后用代码比对关键数值(如金额、日期)是否被篡改。
重要合规提醒:企业行政处罚、被执行人信息等属于敏感数据。如果使用云端 LLM(DeepSeek/GPT/Claude),请务必:
- 获得数据所有方(或 API 供应商)的明确书面许可
- 对数据进行脱敏(例如金额取整、日期模糊、公司名替换)
- 或者改用本地部署的开源模型(如 Llama 3、Qwen)
本文示例仅用于技术演示,实际生产环境请先咨询法务。
三、核心代码(精简版)
python
import os, json, requests, re
from openai import OpenAI
# 1. 获取并脱敏数据
risk_data = fetch_risk_data(COMPANY_ID) # 省略具体 API 调用
def anonymize(data):
# 金额抹去精确值,法院只留前两个字
...
risk_data = anonymize(risk_data)
# 2. 构造 Prompt(强制带路径)
system_prompt = """你是一个报告助理。根据给定数据,按以下模板输出:
## 风险事实(仅罗列,不做评级)
- {风险类型}:原始路径 `$.xxx`,关键信息 [[原样数值]]
## 分析(每点必须带路径)
## 建议
禁止编造任何数据中没有的内容。金额、日期必须用 [[ ]] 标记。
"""
# 3. 调用 LLM(建议用本地模型)
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
response = client.chat.completions.create(
model="llama3",
messages=[{"role": "user", "content": user_prompt}],
temperature=0.1
)
report_draft = response.choices[0].message.content
# 4. 事实核验:提取所有 [[...]] 并与原始数据比对
claims = re.findall(r'\[\[(.*?)\]\]', report_draft)
if not all(str(value) in json.dumps(risk_data) for value in claims):
print("❌ 发现幻觉,请人工复核")
四、安全输出示例
输入数据(简化):
json
{"被执行人": [{"立案金额": 1200000, "法院": "杭州市西湖区人民法院"}], "经营异常": []}
模型输出(合规版):
text
## 风险事实
- 被执行人:原始路径 `$.executed[0]`,立案金额 [[1200000]],法院 [[杭州市西湖区人民法院]]。
- 经营异常:未发现。
## 分析
被执行人金额较大(路径 `$.executed[0].立案金额`),需关注。
## 建议
要求提供该案件的履行证明。
对比修改前:模型不再编造“2024年立案”,金额、日期均原样引用,并提供了可追溯的 JSONPath。风险评级被移除,改由人工或专业规则判断。
如果想彻底杜绝 LLM 篡改关键字段,还可以采用 模板填空 + 仅让 LLM 做分类/总结的方式。
六、总结
总结一下这套方法的关键要点:
|
关键点 |
说明 |
|
数据合规优先 |
敏感数据绝不裸传给云端 LLM,优先私有化或脱敏 |
|
强制可追溯 |
每个结论都要带原始数据路径,方便人工复核 |
|
拒绝直接评级 |
风险评级涉及业务逻辑,不要让 LLM 主观判断 |
|
事后核验 |
用正则或代码比对模型输出的数值是否与原始一致 |
|
低 temperature |
设为 0.1~0.2,减少创造性 |
实际落地时,我们对一批企业批量生成草稿报告,再由风控人员快速确认关键数据路径。效率提升约 3 倍,且没有出现一例事实错误(因为模型不允许自由编造)。
如果你也在尝试类似应用,强烈建议先从模板填空开始,而不是直接让 LLM 写自由文本。信任,但验证,在企业风控领域尤其重要。
最后再强调一下,实际使用的时候,要遵守数据保护法规,并加入人工复核环节。
更多推荐


所有评论(0)