很多朋友做企业尽调、供应商审核,第一反应就是打开企查查、天眼查,或者自己写个爬虫去拉数据。但我说句实话:这条路从根源上就走不通。
手动查的话,一个公司查工商、股东、司法、商标,半小时起步,批量几十家直接崩溃。用爬虫吧,数据可能过期、可能被反爬封IP、网站一改版脚本就报废,而且还有合规风险。那有没有一种既合规、又稳定、还能和AI结合自动出报告的方法?
答案是:企业数据API + AI提示词。
最近我一直在项目里常态化使用企业数据API,从接口调试到对接AI自动生成尽调报告,算是把这套方案彻底跑通了。今天就把我踩过的坑、填坑的代码、以及一套可直接复用的Prompt模板全部分享出来,让你30秒内从“输入公司名”到“输出完整尽调报告”。
一、传统方案的核心缺陷:手工与爬虫都不是答案
手动查和自己写爬虫这两个方案的本质问题是什么?它们都不是为“规模化+自动化”设计的。一旦你需要批量查50家公司,或者每天定时监控合作方变动,这两种方式立刻崩溃。
那真正适合生产环境的方案应该长什么样?
- 数据源统一:不用东查西查,一套API覆盖工商、司法、税务、知识产权等20+维度。
- 实时合规:数据与官方源头同步,无需担心反爬和法律风险。
- AI驱动:自然语言输入,自动生成结构化报告,无需手写代码调用。
前面两点,就需要用到合规的、经过清洗和整理的企业数据API。
二、直接采用即插即用、合规、稳定的企业数据API
对比一下手动写爬虫和调用现成的企业数据API,结果非常明显:
对比维度 | 自己写爬虫 | 调用企业数据API |
开发成本 | 需针对不同网站适配,反爬处理复杂 | 一行代码,5分钟接入 |
数据时效 | 可能滞后,网站更新了你不知道 | 实时返回,与源头同步 |
数据完整性 | 页面结构变化后字段可能漏抓 | 按字段交付,覆盖率100% |
法律风险 | 可能涉及爬虫合规边界 | 正规数据源,完全合规 |
后续维护 | 网站改版就崩,维护成本高 | 无需维护,API自动升级 |
有了稳定、合规的数据源,下一步就是让AI帮我们自动生成报告。
三、实战:AI + 企业数据API自动生成尽调报告
整体流程非常简单:
你在对话框输入“帮我查一下北京字节跳动,要工商、股东、裁判文书、商标”。
AI根据我提供的Prompt生成Python代码。
代码调用企业数据API,返回数据后自动组装成Markdown报告。
下面直接给出核心Prompt模板(可根据自身情况调整使用):
markdown
## 角色
你是一名资深数据工程师,擅长使用企业数据API和Python进行自动化尽调。
## 任务
根据用户提供的统一社会信用代码或企业名称,调用企业数据API,生成一份结构化尽调报告。
## API信息
- 接口文档:文档中心 - 鲸海数据 API 集成指南、SDK、FAQ | 鲸海数据
- 需要调用的接口:
- 工商基本信息:/company/basic
- 股东信息:/company/shareholders
- 裁判文书:/company/court-notice
- 商标信息:/company/trademark
- API Key 配置在环境变量 JINGHAI_API_KEY
## 输出要求
1. 生成Python代码,包含函数 call_jinghai_api 和 generate_report。
2. 报告格式为Markdown,至少包含:工商信息、股东结构、司法风险摘要、知识产权摘要。
3. 必须处理异常:API返回空数据时输出“暂无”;网络超时重试3次;token超限时只取前10条。
## 约束
- 禁止硬编码API Key
- 禁止编造数据,调用失败注明“接口调用失败”
将这段Prompt喂给GPT-4o或Claude 3.5,它会输出可运行的代码。下面是我实际跑通后的核心代码片段(已脱敏,可直接改参数使用):
python import os import requests from tenacity import retry, stop_after_attempt, wait_exponential API_BASE = "https://www.kqdaas.com/docs" API_KEY = os.getenv("kqdaas_API_KEY") @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10)) def call_jinghai_api(endpoint, params): url = f"{API_BASE}/{endpoint}" params["key"] = API_KEY resp = requests.get(url, params=params, timeout=10) resp.raise_for_status() data = resp.json() if data.get("code") != 200: raise Exception(f"API error: {data.get('message')}") return data.get("data", {}) def generate_report(company_name): # 搜索企业获取信用代码 search = call_jinghai_api("search", {"keyword": company_name}) if not search.get("items"): return f"未找到企业:{company_name}" credit_code = search["items"][0]["creditCode"] basic = call_jinghai_api("company/basic", {"creditCode": credit_code}) holders = call_jinghai_api("company/shareholders", {"creditCode": credit_code}) judgments = call_jinghai_api("company/court-notice", {"creditCode": credit_code}) trademarks = call_jinghai_api("company/trademark", {"creditCode": credit_code}) # 组装报告(省略格式细节,实际运行会生成完整Markdown) report = f"# {basic.get('entName')} 尽调报告\n## 工商信息\n- 法人:{basic.get('legalPerson')}\n..." return report四、我踩过的3个坑(以及填坑方法)
这套方案落地过程中,我遇到了几个文档上不会写的坑,这里直接列出来,帮你避开。
坑1:批量查询超时
一次性传50个信用代码调用工商接口,API返回超时。
解决办法:改用API提供的异步批量接口/batch/query,一次提交最多200个企业,轮询获取结果。代码只需把requests.get换成提交任务+轮询即可。
坑2:AI编造数据
有一次API限流返回429,结果GPT自动“脑补”了注册资本和股东名单。
解决办法:在Prompt中增加硬约束:“如果API调用失败,报告里只写‘接口调用失败,请重试’,禁止编造任何数据。”
坑3:字段缺失导致KeyError
有些小微企业没有股东信息,API返回空数组,代码直接崩溃。
解决办法:对每个字段做空值判断,例如holder_list = holders.get("list", []) or ["暂无股东信息"]。
这些问题处理好之后,这套方案就算是基本稳定了。
五、真实报告示例(已脱敏)
输入“杭州某科技有限公司”,AI自动生成的报告片段:
markdown
## 一、工商信息
- 统一社会信用代码:91330100MA27XXXXXX
- 法定代表人:张三
- 注册资本:500 万元
- 成立日期:2020-03-15
- 登记状态:存续
## 二、股东结构
- 张三:出资350万元,占比70%
- 杭州创投合伙企业:出资150万元,占比30%
## 三、司法风险摘要
共检索到 3 篇裁判文书,最新案由:侵害作品信息网络传播权纠纷(2025-12-10)
## 四、知识产权
- 商标数量:12 件
全程无需手动复制粘贴,20秒出结果。
六、总结:企业数据API是智能化尽调的基础设施
未来的企业决策,不会再依赖人工翻财报、人工查工商信息。所有的尽职调查、信用评估、供应商审核,都会基于企业数据API实时驱动。AI负责理解意图、生成代码、组织报告,API负责提供准确、实时、合规的数据。