当前位置: 首页 > news >正文

手把手带你做:轻量本地智能对账 Agent

自然语言指令 + 本地 Excel/PDF 读取 + 关联比对 + 直连数据库 + 自动计算金额技术栈极简、全开源、本地运行、数据不外泄。

先上简略图:

整体架构(超简单)

  1. 工具层:Python 写固定工具(读 Excel、解析 PDF、查数据库、金额计算)
  2. 智能层:大模型做「任务拆解 + 字段关联 + 规则理解」
  3. 调度层:简单 Agent 逻辑,让 AI 自动按步骤调用工具
  4. 界面:Streamlit 网页

目录结构:

├── tools.py

├── ai_deepseek.py

├── app.py

tool.py

import pandas as pd import pdfplumber import oracledb # 读取 Excel def read_excel(file_path): try: df = pd.read_excel(file_path) return df.to_string() except: return "Excel读取失败" # 读取 PDF def read_pdf(file_path): try: text = "" with pdfplumber.open(file_path) as pdf: for page in pdf.pages: t = page.extract_text() if t: text += t + "\n" return text except: return "PDF读取失败" # 查询 Oracle(安全只读) def query_db(user, pwd, dsn, sql): try: if not sql.strip().upper().startswith("SELECT"): return "仅允许SELECT" conn = oracledb.connect(user=user, password=pwd, dsn=dsn) cursor = conn.cursor() cursor.execute(sql) cols = [d[0] for d in cursor.description] rows = cursor.fetchall() df = pd.DataFrame(rows, columns=cols) cursor.close() conn.close() return df.to_string() except Exception as e: return f"数据库错误:{str(e)}"

ai_deepseek.py

import requests import os from dotenv import load_dotenv load_dotenv() DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") DEEPSEEK_API_URL = os.getenv("DEEPSEEK_API_URL") API_KEY = DEEPSEEK_API_KEY # 你自己填 URL = "https://api.deepseek.com/chat/completions" def ai_think(prompt): headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } data = { "model": "deepseek-chat", "temperature": 0.1, "messages": [ {"role": "system", "content": "你是对账专家,读取数据、关联、计算金额、输出结果。不要解释,直接输出结果。"}, {"role": "user", "content": prompt} ] } resp = requests.post(URL, headers=headers, json=data) return resp.json()["choices"][0]["message"]["content"]

app.py

import streamlit as st from tools import read_excel, read_pdf, query_db from ai_deepseek import ai_think st.title("✅ 无LangChain 智能对账工具(稳定版)") # Oracle 配置 with st.sidebar: user = st.text_input("Oracle 用户") #xcat_test_01 pwd = st.text_input("密码", type="password") #Aa123456 dsn = st.text_input("DSN", "192.168.5.127:1521/ORCL") # 指令 st.subheader("输入对账指令") req = st.text_area("指令", """ 读取 D:\\workarea\\ai\\OfficeAgent\\docs\\订单明细.xlsx 读取 D:\\workarea\\ai\\OfficeAgent\\docs\\月度对账单据.pdf 查询 CUSTOMER 表 查询 FIN_BALANCE 表 根据客户编号关联所有数据,计算总金额、扣款、最终应付金额 """) if st.button("开始执行"): with st.spinner("读取文件...查询数据库...AI分析..."): # 1. 读取文件 excel = read_excel("D:\\workarea\\ai\\OfficeAgent\\docs\\订单明细.xlsx") pdf = read_pdf("D:\\workarea\\ai\\OfficeAgent\\docs\\月度对账单据.pdf") # 2. 查询数据库 customer = query_db(user, pwd, dsn, "SELECT * FROM HLTEST7") finance = query_db(user, pwd, dsn, "SELECT * FROM HLTEST8") # 3. 交给AI汇总计算 prompt = f""" 以下是全部数据,请关联分析,输出最终金额汇总: 【Excel订单】 {excel} 【PDF对账】 {pdf} 【客户表】 {customer} 【结算表】 {finance} 需求: {req} """ result = ai_think(prompt) st.success("完成") st.markdown("### 结果") st.write(result)

终端运行:

streamlit run app.py

浏览器自动打开网页:

  • 填数据库账号密码
  • 输入自然语言:文件路径 + 关联要求 + 计算规则
  • 点击按钮,AI 自动:读 Excel → 读 PDF → 找字段关联 → 查库 → 算金额 → 出结果

模拟结构和数据

订单明细.xlsx

客户编号客户名称物料编码下单数量单价订单金额对账状态
C001甲工业有限公司M001105005000未对账
C002乙科技有限公司M002203206400未对账
C003丙制造工厂M003151802700未对账

月度对账单据.pdf

# 月度供应商对账凭证
对账月份:2026年04月
------------------------------------
客户编号:C001
结算确认金额:4800
差异说明:扣款200

客户编号:C002
结算确认金额:6400
差异说明:无扣款

客户编号:C003
结算确认金额:2550
差异说明:扣款150
------------------------------------
对账规则:
1. 以订单原始金额为基数
2. 按实际扣款后计算最终应付金额
3. 需同步匹配数据库客户档案与结算记录

CREATE TABLE HLTEST7( CUST_ID VARCHAR2(20) PRIMARY KEY, CUST_NAME VARCHAR2(50), PAY_TYPE VARCHAR2(20), AREA VARCHAR2(30) ); INSERT INTO HLTEST7 VALUES('C001','甲工业有限公司','月结30天','华东区'); INSERT INTO HLTEST7 VALUES('C002','乙科技有限公司','月结60天','华南区'); INSERT INTO HLTEST7 VALUES('C003','丙制造工厂','现结','华北区'); CREATE TABLE HLTEST8( CUST_ID VARCHAR2(20), MONTH VARCHAR2(10), ORIG_AMT NUMBER(10,2), DEDUCT_AMT NUMBER(10,2), REAL_PAY NUMBER(10,2) ); INSERT INTO HLTEST8 VALUES('C001','202604',5000,200,4800); INSERT INTO HLTEST8 VALUES('C002','202604',6400,0,6400); INSERT INTO HLTEST8 VALUES('C003','202604',2700,150,2550); COMMIT;

在打开的网页里输入指令:


读取 D:\workarea\ai\OfficeAgent\docs\订单明细.xlsx
读取 D:\workarea\ai\OfficeAgent\docs\月度对账单据.pdf
查询 HLTEST7表
查询 HLTEST8 表
根据客户编号关联所有数据,计算总金额、扣款、最终应付金额

就能看到结果:

http://www.cnnetsun.cn/news/2124399.html

相关文章:

  • 第38篇:使用Google Colab进行免费AI开发——云端GPU实战指南(操作教程)
  • 小白也能学会!Qwen3-TTS语音合成服务搭建详细步骤
  • Aegis:轻量级应用安全防护与运行时监控框架实战指南
  • ARM架构AMAIR寄存器详解与内存管理实践
  • 5分钟快速上手:XUnity自动翻译器终极使用指南
  • AI智能体主动触发框架Agent-Reach:从响应式到主动式的工程实践
  • 别再只用keyCode了!用event.timeStamp精准区分扫码枪与手动输入(JavaScript避坑指南)
  • LingBot-Depth在AR场景中的应用:解决玻璃、镜面识别难题
  • 5分钟学会LongCat-Image-Edit:上传图片输入提示词,等待生成结果
  • Phi-3.5-mini-instruct惊艳效果展示:128K上下文下整篇论文精准摘要生成
  • 开源SORA机器人架构:从环境配置到模型训练全解析
  • Google Mug库——一个现代的通用工具库
  • 别再只调学习率了!Transformer模型里这个‘mlp_ratio’参数,调好了性能提升一大截
  • ARM浮动许可证管理实战与优化指南
  • AI插件跨平台开发指南:一次编写,多平台分发实战
  • FLUX.1-Krea-Extracted-LoRA入门指南:LoRA权重插值实现风格平滑过渡
  • CRAG-MM基准:多模态RAG技术在可穿戴设备中的挑战与突破
  • Flux2-Klein-9B-True-V2开源镜像部署:免conda环境一键运行方案
  • Flutter for OpenHarmony 渐变色UI设计实战:LinearGradient与RadialGradient深度应用
  • LFM2.5-1.2B-Instruct镜像免配置:预装transformers+gradio+unsloth
  • RPG Maker Decrypter技术深度解析:三版本加密算法实现与架构设计
  • 2.1 链路层发现协议(LLDP)
  • IIC总线的一些基础知识
  • JWT令牌管理终极指南:构建最安全的身份认证系统
  • 【2026最新版|建议收藏】程序员/小白转行大模型全攻略,从入门到实战
  • 如何高效实现Django REST Framework集成测试:端到端API测试完整指南
  • docsify数据迁移终极指南:从其他工具平滑过渡的完整教程
  • FSearch技术解析:构建Linux环境下的高效文件搜索解决方案
  • Rust持久化内存编程:使用persistent-memory库构建崩溃安全的B+树索引
  • SparseConvNet高级特性详解:随机步长卷积与池化的应用场景