零基础用AI做财务对账:从环境准备到自动核验的完整流程

如果你手头有两份表格——一份银行流水、一份内部账务记录,想用AI快速找出对不上的条目,这篇教程就是为你准备的。
下面从零开始,用Python脚本调用大模型API完成金额和摘要的比对,并给出每一步的验证方法。
整个过程不需要财务系统开发经验,但需要你能在电脑上运行命令。

先理清适用场景和前提条件

这个方法适合单次对账量在几千条以内、格式相对固定的Excel或CSV文件。
如果流水条目超过一万条,建议先按日期或账号拆分,否则API调用费用和响应时间都会明显上升。

你需要准备三样东西:

  • 一台能联网的电脑(Windows、macOS或Linux均可),安装Python 3.9以上版本;
  • 一个大模型API密钥(如DeepSeek、通义千问、OpenAI等),本文以通用HTTP接口为例,不绑定具体厂商;
  • 两份示例文件:bank.csv(银行流水)和ledger.csv(账务记录),至少包含日期、金额、摘要三个字段。

注意:不要把真实客户名称、账号等敏感信息直接发给第三方API。
建议先用脱敏后的数据测试,正式使用时在本地做字段替换。

搭建运行环境并安装依赖

打开终端(Windows用PowerShell或CMD),依次执行以下命令创建虚拟环境并安装库:

python -m venv finance-ai
# Windows激活
finance-ai\Scripts\activate
# macOS/Linux激活
source finance-ai/bin/activate
pip install pandas requests python-dotenv

安装完成后,在项目目录新建.env文件,写入你的API密钥和接口地址(以实际服务商为准):

API_KEY=你的密钥
API_URL=https://api.example.com/v1/chat/completions

验证环境是否正常:

python -c "import pandas, requests; print('ok')"

终端输出ok即表示依赖安装成功。

编写对账脚本的核心步骤

新建reconcile.py,按以下顺序实现。

第一步:读取并清洗数据。
用pandas加载两个CSV,统一金额为两位小数,日期转为字符串:

import pandas as pd
bank = pd.read_csv('bank.csv', dtype=str)
ledger = pd.read_csv('ledger.csv', dtype=str)
bank['金额'] = bank['金额'].astype(float).round(2)
ledger['金额'] = ledger['金额'].astype(float).round(2)

第二步:构造比对提示词。
将每一行流水和账务记录拼成一段文本,要求模型判断是否匹配并输出JSON:

prompt = f"""对比以下两条记录,判断是否为同一笔交易。
银行流水:日期{bank_date},金额{bank_amt},摘要{bank_memo}
账务记录:日期{ledger_date},金额{ledger_amt},摘要{ledger_memo}
只返回JSON:{{"match": true/false, "reason": "简短理由"}}"""

第三步:调用API并解析结果。
用requests发送POST请求,注意设置超时和异常捕获:

import requests, json, os
from dotenv import load_dotenv
load_dotenv()
headers = {"Authorization": f"Bearer {os.getenv('API_KEY')}"}
data = {"model": "你的模型名", "messages": [{"role": "user", "content": prompt}], "temperature": 0}
resp = requests.post(os.getenv('API_URL'), headers=headers, json=data, timeout=30)
result = json.loads(resp.json()['choices'][0]['message']['content'])

第四步:批量循环并输出差异表。
将不匹配的记录写入diff.csv,方便人工复核。
循环时建议每处理50条暂停1秒,避免触发接口限流。

容易踩坑的几个地方

  • 金额格式不一致:银行流水可能带千分位逗号或货币符号,读取后先用str.replace清理再转float,否则比对全部失败。
  • 日期格式差异:一方是2025/01/01,另一方是2025-01-01,建议统一用pd.to_datetime转换后再格式化。
  • 模型返回非JSON:提示词中明确“只返回JSON”,并在代码里用try...except包裹解析,解析失败时记录原始返回内容,不要直接中断整个脚本。
  • API超时或限流:设置timeout=30并增加重试逻辑(如requests.adapters.HTTPAdapter配合Retry),不要无限重试。
  • 敏感数据泄露:测试阶段用假数据,正式环境考虑本地部署开源模型或对字段做哈希替换。

验证对账结果是否可信

脚本运行结束后,打开diff.csv,人工抽查10条标记为“不匹配”的记录,确认模型给出的理由是否合理。
同时统计匹配率:如果匹配率低于70%,优先检查数据清洗步骤,而不是怀疑模型能力。

另一个验证方法是构造已知答案的测试集:手动准备5对完全相同的记录和5对明显不同的记录,运行脚本看模型是否全部判断正确。
全部通过后再处理真实数据。

最后,将每次运行的匹配率、耗时和差异条数记录到日志文件,方便后续对比不同提示词或模型版本的效果。

常见疑问

没有编程基础,能用现成工具吗?
可以。部分财务软件已内置智能对账功能,但通常需要付费或绑定特定银行接口。本文的脚本方式更适合想自定义规则、控制成本的场景。

API调用费用大概多少?
费用取决于服务商定价和调用次数,无法给出统一数字。建议先用少量数据测试,在服务商控制台查看每次调用的token消耗,再估算全量成本。

对账结果需要人工复核吗?
需要。AI适合做初步筛选和差异标记,最终确认仍应由财务人员完成,尤其是涉及大额或跨期交易时。

如果你在运行脚本时遇到报错,先检查.env文件是否被正确加载、API地址是否完整、以及返回内容是否被意外截断。
按本文步骤完整执行一遍,再根据自己的数据格式微调字段名即可。

分享到:
上一篇
AI离职预测配置:从零搭建员工流失预警系统
下一篇
用 Python 和 AI 做财务报表分析:从环境搭建到自动出结论
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意