AI智能交易数据分析系统

项目概述

这是一个基于LangGraph和LangChain构建的AI代理系统,专门用于处理公共资源交易数据。系统具有以下核心功能:

  1. 数据查询:根据关键词、领域、类型等条件查询交易数据

  2. 数据统计:获取数据集的统计信息和分组统计

  3. 专项分析:对招标人、投标人、代理机构、专家进行专项分析

  4. 报告生成:生成半年度数据分析报告

项目架构

复制代码
public_resource_agent/
├── config/
│   └── agent_llm_config.json          # LLM配置文件
├── scripts/
│   ├── local_run.sh                   # 本地运行脚本
│   ├── http_run.sh                    # HTTP服务启动脚本
│   └── ...                            # 其他脚本
├── src/
│   ├── agents/
│   │   └── agent.py                   # AI代理定义
│   ├── storage/
│   │   ├── database/
│   │   │   ├── shared/model.py        # 数据模型
│   │   │   ├── db.py                  # 数据库连接
│   │   │   └── public_resource_manager.py # 数据管理器
│   │   └── s3/
│   │       └── s3_storage.py          # S3存储
│   ├── tools/
│   │   ├── data_import_tool.py        # 数据导入工具
│   │   ├── data_query_tool.py         # 数据查询工具
│   │   ├── data_statistics_tool.py    # 数据统计工具
│   │   ├── report_generation_tool.py  # 报告生成工具
│   │   └── special_analysis_tool.py   # 专项分析工具
│   ├── utils/
│   │   ├── file/file.py               # 文件操作
│   │   ├── helper/
│   │   │   ├── agent_helper.py        # 代理助手
│   │   │   └── graph_helper.py        # 图助手
│   │   └── log/                       # 日志相关
│   └── main.py                        # 主入口文件

核心技术栈

  • AI框架:LangGraph、LangChain

  • Web框架:FastAPI

  • 数据库:SQLAlchemy(支持多种数据库)

  • 模型:使用doubao-seed-1-6-251015模型

  • 异步处理:asyncio

主要功能模块

  1. AI代理:根据用户意图调用相应工具处理请求

  2. 数据存储:管理公共资源交易数据的增删改查

  3. 工具系统:提供数据导入、查询、统计、分析、报告生成等功能

  4. Web服务:提供HTTP API接口,支持同步和流式响应

  5. 日志系统:完整的日志记录和追踪功能

这个系统通过AI代理的方式,让用户可以用自然语言查询和分析公共资源交易数据,大大降低了数据分析的门槛。

让我继续解释其他模块的具体实现。

核心模块 main.py 详解

main.py 是整个系统的核心入口文件,主要负责以下几个方面:

1. GraphService 类

这是系统的核心服务类,提供以下功能:

  • 流式运行stream() 方法提供本地调用的流式响应

  • 同步运行run() 方法提供同步执行

  • 流式SSEstream_sse() 方法提供HTTP服务的Server-Sent Events响应

  • 节点运行run_node() 方法运行指定节点

  • 任务取消cancel_run() 方法取消正在执行的任务

2. HTTP API 接口

系统提供了丰富的HTTP接口:

  • POST /run:同步执行请求

  • POST /stream_run:流式执行请求(SSE格式)

  • POST /cancel/{run_id}:取消指定任务

  • POST /node_run/{node_id}:运行指定节点

  • GET /health:健康检查

  • GET /graph_parameter:获取图参数

3. 任务管理和取消机制

系统实现了完善的任务管理和取消机制:

  • 使用 running_tasks 字典跟踪正在运行的任务

  • 通过 asyncio.Task.cancel() 实现优雅的任务取消

  • 在节点之间检查 CancelledError,实现优雅的取消

4. 超时处理

系统设置了900秒(15分钟)的超时限制,并在超时时自动取消任务。

5. 日志和上下文管理

  • 集成了完整的日志系统

  • 使用上下文变量管理请求上下文

  • 支持分布式追踪

6. 启动模式

支持多种启动模式:

  • http:启动HTTP服务

  • flow:运行完整流程

  • node:运行指定节点

  • agent:运行代理模式

AI代理实现 (agent.py)

agent.py 是AI代理的核心实现,主要包含以下几个部分:

1. 模型配置

  • 使用 doubao-seed-1-6-251015 模型

  • 配置温度参数(temperature=0.7)控制输出随机性

  • 设置最大完成令牌数(10000)和超时时间(600秒)

  • 启用流式响应(streaming=True)

2. 系统提示词(System Prompt)

系统提示词定义了AI代理的角色和能力:

  • 角色定义:公共资源交易中心AI助手

  • 任务目标:帮助用户查询和分析公共资源交易数据

  • 核心能力

    1. 数据导入:从Excel文件导入数据

    2. 数据查询:根据条件查询交易数据

    3. 数据统计:获取统计信息

    4. 专项分析:招标人、投标人、代理机构、专家分析

    5. 报告生成:生成半年度报告

3. 工具集成

AI代理集成了以下工具:

  • import_excel_data:数据导入工具

  • query_public_resource_data:数据查询工具

  • get_public_resource_statistics:数据统计工具

  • analyze_tender_owner:招标人分析

  • analyze_bidder:投标人分析

  • analyze_agency:代理机构分析

  • analyze_expert:专家分析

  • generate_semiannual_report:报告生成

4. 记忆机制

  • 开发环境使用内存记忆(MemorySaver)

  • 生产环境默认无记忆

  • 支持检查点功能以保持对话状态

5. 构建流程

build_agent() 函数负责:

  • 从配置文件加载模型参数

  • 创建ChatOpenAI实例

  • 集成所有工具

  • 创建并返回AI代理实例

数据存储和管理模块

数据存储模块位于 src/storage/database/ 目录下,主要包含以下几个部分:

1. 数据模型 (model.py)

PublicResourceTransaction 是核心数据模型,包含以下字段:

  • 项目基本信息

    • project_id:项目编号(唯一)

    • project_name:项目名称

    • publish_time:发布时间

  • 交易双方信息

    • tender_unit:招标单位

    • winning_unit:中标单位

    • bidder_total:投标企业总数

  • 金额和类型信息

    • winning_amount:中标金额(万元)

    • project_type:项目类型

    • project_field:项目所属领域

  • 企业相关信息

    • qualification_level:资质等级

    • enterprise_nature:企业性质

    • enterprise_scale:企业规模

    • enterprise_register_location:企业注册地

  • 项目实施信息

    • project_implementation_location:项目实施地

    • project_budget_range:项目预算区间

    • project_cycle:项目周期

  • 合作历史信息

    • is_past_cooperative_supplier:是否为过往合作供应商

    • past_cooperation_count:过往合作次数

  • 分析相关信息

    • core_service_type:核心服务类型

    • anomaly_type:异常类型

    • anomaly_reason:异常原因

2. 数据管理器 (public_resource_manager.py)

PublicResourceManager 提供了丰富的数据操作方法:

  • 基本CRUD操作

    • create_transaction():创建交易记录

    • get_transactions():获取交易记录列表

    • get_transaction_by_id():根据ID获取记录

    • update_transaction():更新记录

    • delete_transaction():删除记录

  • 高级功能

    • bulk_create():批量创建记录

    • search_transactions():高级搜索功能,支持关键词、领域、类型、时间范围等多种条件

    • get_statistics():获取统计数据,包括总数、唯一招标单位数、唯一中标单位数等

3. 数据库连接 (db.py)

虽然我没有看到具体的 db.py 文件内容,但根据代码引用可以推断它提供了数据库会话管理功能,使用SQLAlchemy ORM进行数据库操作。

4. Pydantic模型

代码中定义了用于数据验证的Pydantic模型:

  • PublicResourceTransactionCreate:创建时的数据验证模型

  • PublicResourceTransactionUpdate:更新时的数据验证模型

这些模型确保了输入数据的格式正确性,并提供了日期时间格式的自动解析功能。

整个数据存储模块设计合理,支持复杂查询和统计分析,为AI代理提供了强大的数据支持。

工具功能详解

系统提供了多种工具来支持AI代理完成不同任务,所有工具都位于 src/tools/ 目录下:

1. 数据查询工具 (data_query_tool.py)

query_public_resource_data 工具提供灵活的数据查询功能:

  • 参数

    • keyword:关键词搜索(项目名称、招标单位、中标单位、项目编号)

    • project_field:项目所属领域

    • project_type:项目类型

    • tender_unit:招标单位

    • winning_unit:中标单位

    • start_date/end_date:时间范围

    • limit:返回结果数量限制

  • 功能:根据多个条件组合查询公共资源交易数据,返回结构化的JSON结果

2. 数据统计工具 (data_statistics_tool.py)

get_public_resource_statistics 工具提供数据集的统计信息:

  • 总交易数量

  • 唯一招标单位数量

  • 唯一中标单位数量

  • 按领域统计

  • 按类型统计

3. 数据导入工具 (data_import_tool.py)

import_excel_data 工具支持从Excel文件导入数据:

  • 从URL或本地路径读取Excel文件

  • 解析Excel中的数据

  • 将数据转换为系统支持的格式

  • 批量导入到数据库中

4. 专项分析工具 (special_analysis_tool.py)

包含四个专门的分析工具:

  • analyze_tender_owner:分析招标人行为,包括同一领域不同类型招标需求、中标信息等

  • analyze_bidder:分析投标人行为,包括参与投标、中标及执行情况

  • analyze_agency:分析代理机构运营情况

  • analyze_expert:分析专家评标情况

5. 报告生成工具 (report_generation_tool.py)

generate_semiannual_report 工具生成完整的半年度数据分析报告:

  • 报告内容

    • 总体概况

    • 领域分布分析

    • 类型分布分析

    • 排名分析

    • 异常分析

    • 趋势分析

  • 输出格式:完整的Markdown格式报告

工具特点

  1. 统一接口 :所有工具都使用 @tool 装饰器定义,便于AI代理调用

  2. 参数验证:使用Pydantic模型进行参数验证

  3. 错误处理:完善的异常处理机制

  4. 数据转换:自动将数据库记录转换为JSON格式

  5. 灵活性:支持多种查询条件和参数组合

这些工具共同构成了AI代理的"能力集",使其能够根据用户需求执行各种数据分析任务。

我已经详细解释了整个公共资源交易AI代理系统。这个系统是一个功能完整的AI数据分析平台,具有以下主要特点:

系统总结

  1. 整体架构:基于LangGraph和LangChain构建的AI代理系统,使用FastAPI提供HTTP服务

  2. 核心功能

    • 数据查询和统计

    • 专项分析(招标人、投标人、代理机构、专家)

    • 报告生成

    • Excel数据导入

  3. 技术特点

    • 支持同步和流式响应

    • 完善的任务管理和取消机制

    • 15分钟超时保护

    • 分布式追踪和日志系统

  4. 数据模型:设计了完整的公共资源交易数据模型,包含项目、交易、企业等多维度信息

  5. 工具系统:提供了丰富的工具集,支持复杂的数据分析和报告生成任务

补充版本迭代

招投标

第一版 可以问数等

第二版 可以读飞书中数据,但是不好用,因为数据库没数据。只是一个思路

第三版 使用混合rag

公告爬虫

第一版 没有导入到feishu的版本

第二版 导出excel,导入到飞书


关于部署:

一开始通过coze平台部署,提供了服务端接口,可以用postman测试,但是是以sse流式返回,可读性差。后面写了前后端,后端访问接口,前端处理返回。最后写了个脚本,可以打包zip导出。

相关推荐
哥布林学者8 小时前
吴恩达深度学习课程五:自然语言处理 第一周:循环神经网络 (三)语言模型
深度学习·ai
bohejia8 小时前
Agent Demo——生成报告
agent
营销操盘手阿泽10 小时前
从流量红利到构建长期AI数据资产的深度共建指南
ai
企业智能研究11 小时前
什么是数据治理?数据治理对企业有什么用?
大数据·人工智能·数据分析·agent
AI Echoes11 小时前
LangChain 非分割类型的文档转换器使用技巧
人工智能·python·langchain·prompt·agent
熊猫钓鱼>_>13 小时前
AI 加 CloudBase 帮我从零快速打造儿童英语故事学习乐园
ide·人工智能·ai·mcp·codebuddy·cloudbase·ai toolkit
向量引擎14 小时前
[架构师级] 压榨GPT-5.2与Sora 2的极限性能:从单体调用到高并发多模态Agent集群的演进之路(附全套Python源码与性能调优方案)
开发语言·人工智能·python·gpt·ai·ai写作·api调用
CoderJia程序员甲14 小时前
GitHub 热榜项目 - 日榜(2026-1-6)
ai·开源·大模型·github·ai教程
MicrosoftReactor16 小时前
技术速递|利用 SLM 创建多智能体的 Podcast 解决方案
microsoft·ai·agent·slm
ba_pi16 小时前
每天写点什么2026-01-06-agent概念
agent