BidMaster-Pro
Health Gecti
- License — License: AGPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 15 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
全流程 智能招投标 Agent:标书生成 · 招投标解读 · 标书检查 · 标书文档ai排版 · 商机发现 一键完成。 21 项合规检查 · 多模型切换 · RAG 知识库 · OCR 抽取。 从招标公告到可交付 docx 文档,全流程 AI 自动化。
BidMaster Pro - 全流程智能招投标平台
🚀 全流程智能招投标 Agent:4 阶段流水线(招标解读 / 投标生成 / 投标检查 / 文档排版),多 Agent 协同 + 可编排工作流,21 项专业合规检查规则、多 LLM 供应商灵活切换(DeepSeek / 硅基流动 / OpenAI / 通义等),轻量级 Skill 引擎 + 可插拔能力,RAG 知识库(支持语义重排与公司画像过滤),MinerU 扫描件 OCR 抽取,商机监控 + 今日热点聚合,桌面客户端 / 服务端 / Docker 一键部署。喜欢给个 ⭐ Star!
📋 项目简介
BidMaster Pro 是基于 AI Agent 架构的全流程智能招投标平台。通过 LLM(大语言模型)、RAG(检索增强生成)和 Skill Engine(技能引擎)三大核心引擎,实现从招标文件解读、投标书自动生成、合规性检查到文档排版输出的完整工作流自动化。
- 智能标书生成: 自动理解招标文件,一键生成高质量投标书
- 投标流程自动化: 大纲生成、内容填充、格式排版一键完成
- 21 项合规检查: 保证金 / 签字盖章 / 有效期 / 一致性 / 重复率 / 价格合理性等全方位审核
- 多 LLM 灵活切换: DeepSeek / 硅基流动 / OpenAI / 通义千问 / Ollama 本地模型,可热切换
- RAG 知识库: 企业资料 / 历史标书向量化存储 + 语义重排 + 公司画像过滤
- 商机监控: 招投标公告自动抓取 + 今日热点聚合 + 关键词精准匹配
📸 界面预览
| 页面 | 预览 |
|---|---|
| 工作台 | ![]() |
| 招标解读 | ![]() |
| 投标生成 - 结构模板 | ![]() |
| 投标生成 - 正文生成 | ![]() |
| 投标检查 - 项目模式 | ![]() |
| 投标检查 - 上传文件模式 | ![]() |
| 文档输出 | ![]() |
| 文档输出(无正文) | ![]() |
| 咨询中心 | ![]() |
✨ 功能特性
🎯 核心工作流
1. 招标解读 (Interpret)
- 智能文档解析: 支持 PDF/DOCX/TXT 等多格式招标文件解析
- 关键信息提取: 自动识别评分标准、资质要求、技术参数等核心要素
- 风险预警: 多维度风险评估,标记潜在废标风险点
- 评分矩阵: 自动生成评分细则对照表
2. 投标生成 (Generate)
- 大纲生成: 基于招标文件智能生成投标文件大纲
- 内容创作: AI 辅助撰写各章节内容,支持扩写和优化
- 知识检索: RAG 引擎提供企业知识库和历史案例参考
- AI 配图: 智能生成配套图表和示意图
3. 投标检查 (Check)
- 合规性检查: 检查是否符合招标文件强制性要求
- 资格审查: 验证企业资质、业绩、人员等资格条件
- 一致性校验: 确保前后文数据、金额、日期等信息一致
- 重复率检测: 避免内容过度重复或抄袭
- 价格合理性: 分析报价逻辑和竞争性
- 21 项专业检查: 涵盖保证金、签字盖章、有效期等全方位审核
4. 文档输出 (Format)
- 智能排版: 自动调整格式、字体、段落样式
- 模板配置: 支持自定义投标文件模板
- 多格式导出: docx (源) / doc / PDF 三种格式一键导出,docx 为唯一中间格式
- 格式检查 / 差异对比: 与期望模板逐项对比,可自动修正
- 修订模式: 支持多人协作审阅和批注
5. MinerU OCR 集成
- 扫描件抽取: 接入 MinerU 云端 SaaS 或自部署 OpenAPI 服务,从扫描件 PDF / 图片中抽取结构化文字与版面
- 平台化配置:
平台设置 → MinerU OCRTab 统一管理(云端 / 自部署、API Key、endpoint、超时、轮询策略) - API 调用:
POST /api/mineru/ocr上传任意文档即可获得 markdown 结果,可被解读/检查流程复用
🚀 辅助功能
咨询中心
- AI 智能问答: 基于知识库与招标文件,提供项目相关的政策、流程、规则问答
- 多轮对话: 支持上下文记忆,可逐步细化问题
- 资料引用: 回答中自动附带来源片段,便于追溯
- 角色化回复: 根据当前用户的角色给出不同视角的建议
资讯中心
- 商机监控: 定时抓取招投标网站最新公告
- 关键词过滤: 精准匹配关注的行业和地区
- 热度分析: AI 评估项目价值和竞争程度
知识库管理
- 向量检索: 基于 ChromaDB 的语义搜索
- 文档管理: 企业资料、历史标书、产品手册集中管理
- 智能问答: 基于知识库的 Q&A 助手
权限管理 (RBAC)
- 角色定义: 管理员、项目经理、编写员、审核员
- 细粒度权限: 菜单级和操作级权限控制
- 团队协作: 多用户协同编辑和审核
🏗️ 技术架构
系统架构图
┌─────────────────────────────────────────────────────┐
│ Desktop Client │
│ React + Electron + TypeScript │
└──────────────────┬──────────────────────────────────┘
│ REST API
┌──────────────────▼──────────────────────────────────┐
│ FastAPI Server │
│ (Python 3.12+) │
├─────────────────────────────────────────────────────┤
│ Router Layer │
│ ├── Projects ├── Interpret ├── Generate │
│ ├── Check ├── Format ├── Skills │
│ ├── News ├── Knowledge ├── RBAC │
│ └── AI-Image │
├─────────────────────────────────────────────────────┤
│ Core Engines │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐│
│ │ Agent Engine │ │ Skill Engine │ │ RAG Engine ││
│ │ LangGraph │ │ Plugin Sys │ │ ChromaDB ││
│ └──────────────┘ └──────────────┘ └──────────────┘│
│ ┌──────────────┐ ┌──────────────┐ │
│ │ LLM Gateway │ │ Doc Engine │ │
│ │ LiteLLM │ │ Multi-Parser │ │
│ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────┤
│ Infrastructure │
│ ├── PostgreSQL (AsyncPG) │
│ ├── Redis (Celery Broker) │
│ ├── MinIO (Object Storage) │
│ └── Celery Worker (Async Tasks) │
└─────────────────────────────────────────────────────┘
核心技术栈
后端 (Backend)
| 技术 | 用途 | 版本 |
|---|---|---|
| FastAPI | Web 框架 | >=0.115 |
| Python | 编程语言 | >=3.12 |
| SQLAlchemy | ORM 框架 | >=2.0 |
| PostgreSQL | 关系数据库 | 16 |
| AsyncPG | 异步数据库驱动 | >=0.30 |
| Redis | 缓存/消息队列 | 7 |
| Celery | 异步任务队列 | >=5.3 |
| MinIO | 对象存储 | Latest |
AI & LLM
| 技术 | 用途 | 版本 |
|---|---|---|
| LiteLLM | LLM 统一接口 | >=1.0 |
| LangGraph | Agent 工作流编排 | >=0.2 |
| LangChain-Core | LLM 基础组件 | >=0.3 |
| ChromaDB | 向量数据库 | >=0.5 |
| Sentence-Transformers | 文本嵌入 | >=3.0 |
| ONNX Runtime | 文档分类模型 | >=1.17 |
前端 (Frontend)
| 技术 | 用途 | 版本 |
|---|---|---|
| React | UI 框架 | ^19.0.0 |
| Electron | 桌面应用容器 | ^41.0.0 |
| TypeScript | 类型系统 | ^5.5.0 |
| Vite | 构建工具 | ^7.0.0 |
| Zustand | 状态管理 | ^5.0.0 |
| React Router | 路由管理 | ^7.0.0 |
| TanStack Query | 数据请求 | ^5.0.0 |
| Radix UI | 无头组件库 | ^1.1.0 |
| TailwindCSS | 样式框架 | ^4.0.0 |
文档处理
| 技术 | 用途 | 版本 |
|---|---|---|
| python-docx | Word 文档处理 | >=1.1 |
| pdfplumber | PDF 文本提取 | >=0.11 |
| PyMuPDF | PDF 高级处理 | >=1.24 |
| Mammoth | DOCX 转 HTML | >=1.8 |
| WeasyPrint | HTML 转 PDF | >=61 |
| BeautifulSoup4 | HTML 解析 | >=4.12 |
🚀 快速开始
环境要求
- Python: 3.12+
- Node.js: 18+
- PostgreSQL: 16+
- Redis: 7+
- Docker & Docker Compose (推荐)
方式一:Docker 部署(推荐)
# 1. 克隆项目
git clone <repository-url>
cd BidMaster-Pro
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填写 LLM API Key 等配置
# 3. 启动服务
docker-compose up -d
启动后自动运行:PostgreSQL (5432) / Redis (6379) / MinIO (9000) / FastAPI (8000) / Celery Worker
- API 文档: http://localhost:8000/docs
- MinIO 控制台: http://localhost:9001
方式二:本地开发
# 后端
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .
# 前端
cd packages/desktop
npm install
# 启动基础设施
docker-compose up -d postgres redis minio
# 配置环境变量
cp .env.example .env
# 编辑 .env,至少配置 BMP_LLM_API_KEY / BMP_DATABASE_URL / BMP_REDIS_URL
# 初始化数据库
alembic upgrade head
# 启动后端
uvicorn services.main:app --reload --host 0.0.0.0 --port 8000
# 启动 Celery Worker
celery -A services.celery_app worker --loglevel=info
# 启动前端桌面应用
cd packages/desktop
npm run electron:dev
⚙️ 配置说明
核心环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
BMP_DEBUG |
调试模式 | true |
BMP_PORT |
服务端口 | 8000 |
BMP_DATABASE_URL |
PostgreSQL 连接串 | postgresql+asyncpg://... |
BMP_REDIS_URL |
Redis 连接串 | redis://localhost:6379/0 |
BMP_CHROMA_DIR |
ChromaDB 存储路径 | ./chroma_db |
BMP_LLM_DEFAULT_MODEL |
默认 LLM 模型 | deepseek/deepseek-chat |
BMP_LLM_API_KEY |
LLM API Key | - |
BMP_LLM_API_BASE |
LLM API 地址 | https://api.deepseek.com |
BMP_LLM_FALLBACK_MODES |
降级模型列表 | ollama/qwen2.5 |
BMP_EMBEDDING_MODE |
嵌入模式 (api/local) | api |
BMP_EMBEDDING_MODEL |
嵌入模型 | text-embedding-v3 |
MinerU OCR 配置
| 变量 | 说明 | 默认值 |
|---|---|---|
BMP_MINERU_MODE |
cloud (云端) 或 self_hosted (自部署) |
cloud |
BMP_MINERU_API_KEY |
云端 API Key / 自部署 Token | - |
BMP_MINERU_ENDPOINT |
服务端点 | https://mineru.net/api/v4 |
BMP_MINERU_TIMEOUT |
单次请求超时 (秒) | 180 |
也可在 平台设置 → MinerU OCR Tab 页面化配置(自动写入 .env)。
LLM 提供商支持
通过 LiteLLM 支持多种 LLM 提供商,可在平台设置中灵活切换:
- DeepSeek:
deepseek/deepseek-chat - 硅基流动:
siliconflow/* - OpenAI:
gpt-4,gpt-3.5-turbo - 阿里云通义千问:
qwen-max,qwen-plus - Ollama (本地):
ollama/qwen2.5,ollama/llama3
🔧 核心概念
Skill (技能)
Skill 是核心扩展机制,每个 Skill 代表一个独立的业务能力单元:
from core.skill_engine.base import Skill, SkillContext, SkillResult
class MyCustomSkill(Skill):
name = "my_custom_skill"
description = "我的自定义技能"
category = "generate"
version = "1.0.0"
async def execute(self, ctx: SkillContext) -> SkillResult:
param1 = ctx.parameters.get("param1")
response = await ctx.llm.chat(messages=[...])
return SkillResult(success=True, data={"result": response}, tokens_consumed=100)
Agent Pipeline (Agent 流水线)
使用 LangGraph 编排多个 Skill 的执行流程:
pipeline_dsl = {
"entry": "parse_tender",
"nodes": [
{"id": "parse_tender", "skill": "tender_parser", "require_gate": True},
{"id": "extract_requirements", "skill": "requirement_extractor"},
{"id": "generate_outline", "skill": "outline_generator"},
],
"edges": [
{"from": "parse_tender", "to": "extract_requirements"},
{"from": "extract_requirements", "to": "generate_outline"},
]
}
Gate Keeper (闸门控制器)
确保工作流按顺序执行,前一阶段未完成则不能进入下一阶段:
gate_keeper.mark_passed(project_id, "interpret")
if not gate_keeper.is_passed(project_id, "interpret"):
raise GateNotPassedException("请先完成招标解读")
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
Made with ❤️ by BidMaster Team
🚀 全流程智能招投标 Agent · 4 阶段流水线 · 21 项合规检查 · 多 LLM 切换 · Skill 引擎 · RAG 知识库 · MinerU OCR · 商机监控
⭐ 如果这个项目对你有帮助,请给我们一个 Star! ✨
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi








