作者: 杨英樱
版本: 1.0.0
更新时间: 2025年5月
基于AI的智能技术规格说明书生成系统,结合FAISS知识库、豆包视觉大模型和DeepSeek大模型,为用户提供专业的技术文档生成服务。系统支持图片分析、知识库检索和智能文档生成,可通过Web界面或命令行方式使用。
- 智能图片分析: 使用豆包视觉大模型分析产品设计图片,提取技术特征
- 知识库检索: 基于FAISS的高效文档检索,支持语义搜索
- 专业文档生成: 使用DeepSeek大模型生成符合工程标准的技术规格说明书
- Web界面: 现代化的响应式前端界面,支持文件上传和实时预览
- 多格式支持: 支持JPG、PNG、GIF、WebP等图片格式,输出标准.txt格式文档
- 离线模式: 支持本地模型部署,确保数据安全
project/
├── README.md # 项目说明文档
├── requirements.txt # 项目依赖清单
├── start_web.py # 快速启动脚本
├── main.py # 命令行入口
├── build_knowledge_base.py # 知识库构建脚本
├── test_apis.py # API测试脚本
├── test_system.py # 系统组件测试脚本
├── download_models_offline.py # 模型下载脚本
├── setup.py # 项目安装配置
├── web_app/ # Web前端应用
│ ├── app.py # Flask应用主文件
│ ├── run_web.py # Web服务启动脚本
│ ├── templates/ # 前端模板
│ │ └── index.html # 主页面模板
│ └── uploads/ # 用户上传文件目录
├── src/ # 核心源码
│ ├── config/ # 配置模块
│ │ ├── api_config.py # API配置(豆包、DeepSeek)
│ │ ├── retriever_config.py # 检索器配置
│ │ └── graphrag_config.py # GraphRAG配置
│ ├── workflows/ # 工作流模块
│ │ ├── specs_workflow.py # 技术规格生成工作流
│ │ └── graphrag_workflow.py # GraphRAG工作流
│ ├── utils/ # 工具模块
│ │ └── model_downloader.py # 模型下载工具
│ └── image/ # 默认图片
│ └── jiedi.jpg # 默认产品图片
├── models/ # 本地模型文件(需要下载)
│ ├── bge-base-zh/ # BGE中文嵌入模型
│ └── bge-reranker-base/ # BGE重排序模型
├── data/ # 知识库原始数据
│ └── *.pdf # PDF技术文档
├── database/ # 构建的知识库
│ └── global/ # FAISS索引文件
└── outputs/ # 输出目录
└── specs/ # 生成的技术规格说明书
# 克隆项目
git clone <repository-url>
cd project
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或 venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt# 下载BGE嵌入模型和重排序模型到models目录
python download_models_offline.py
# 或手动下载到models目录:
# - models/bge-base-zh/
# - models/bge-reranker-base/如果网络环境良好,系统会自动从Hugging Face下载模型。
编辑 src/config/api_config.py,配置您的API密钥:
# 豆包视觉API配置
DOUBAO_API_KEY = "your-doubao-api-key"
DOUBAO_API_BASE = "https://ark.cn-beijing.volces.com/api/v3"
# DeepSeek LLM API配置
class APIConfig(BaseModel):
api_key: str = "your-deepseek-api-key"
api_base: str = "https://api.deepseek.com"
llm_model: str = "deepseek-chat"# 将PDF技术文档放入data目录,然后运行:
python build_knowledge_base.py
# 检查知识库是否构建成功
ls -la database/global/# 一键启动Web服务
python start_web.pycd web_app
python run_web.pypython main.py- 本地访问: http://localhost:5000
- 服务器访问: http://服务器IP:5000
-
输入区域(左侧)
- 产品名称:必填,如"接地装置"、"办公桌"等
- 详细需求:可选,描述具体技术要求
- 产品图片:可选,支持拖拽上传或点击选择
-
结果区域(右侧)
- 视觉分析:显示图片分析结果
- 技术规格:显示生成的完整技术规格说明书
- 下载功能:一键下载生成的文档
-
准备输入
产品名称: 接地装置 详细需求: 请生成10kV配电系统接地装置的技术规格说明书 产品图片: 上传接地装置设计图 -
生成文档
- 点击"🚀 生成技术规格说明书"按钮
- 系统自动进行:
- 图片上传和分析
- 知识库检索
- 文档生成和格式化
-
查看结果
- 切换标签页查看不同内容
- 实时预览生成的文档
- 下载最终的技术规格说明书
- 输入图片: JPG, JPEG, PNG, GIF, BMP, WebP
- 输出文档: TXT格式,包含完整的技术规格说明书
# 启动开发服务器
python start_web.py
# 或手动启动
cd web_app
python run_web.py# 后台启动服务
nohup python start_web.py > web_app.log 2>&1 &
# 查看运行状态
ps aux | grep python
# 查看日志
tail -f web_app.log
# 停止服务
pkill -f "python.*start_web.py"创建服务文件 /etc/systemd/system/specs-generator.service:
[Unit]
Description=Technical Specs Generator Web Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/projectyyy
ExecStart=/root/miniforge3/bin/python start_web.py
Restart=always
RestartSec=10
Environment=PATH=/root/miniforge3/bin
[Install]
WantedBy=multi-user.target启动和管理服务:
# 重载systemd配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable specs-generator
# 启动服务
sudo systemctl start specs-generator
# 查看服务状态
sudo systemctl status specs-generator
# 查看服务日志
sudo journalctl -u specs-generator -f
# 停止服务
sudo systemctl stop specs-generator# 安装Gunicorn
pip install gunicorn
# 启动Gunicorn服务器
cd web_app
gunicorn -w 4 -b 0.0.0.0:5000 --timeout 300 app:app
# 后台运行
nohup gunicorn -w 4 -b 0.0.0.0:5000 --timeout 300 app:app > gunicorn.log 2>&1 &# Ubuntu/Debian
sudo ufw allow 5000
sudo ufw reload
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=5000/tcp
sudo firewall-cmd --reload创建Nginx配置文件 /etc/nginx/sites-available/specs-generator:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
}
client_max_body_size 50M;
}启用配置:
sudo ln -s /etc/nginx/sites-available/specs-generator /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx- Flask 2.3.3: Web框架
- requests 2.31.0: HTTP请求库
- langchain-community 0.0.38: 大模型框架
- langchain-huggingface 0.0.3: Hugging Face集成
- faiss-cpu 1.7.4: 向量数据库
- transformers 4.35.2: 机器学习模型
- sentence-transformers 2.2.2: 文本嵌入
- torch 2.1.0: 深度学习框架
- Pillow 10.0.1: 图像处理
- faiss-gpu: GPU加速版本(替代faiss-cpu)
- gunicorn: 生产环境WSGI服务器
- nginx: 反向代理服务器
完整依赖列表请查看 requirements.txt
# 豆包视觉模型配置
DOUBAO_API_BASE = "https://ark.cn-beijing.volces.com/api/v3"
DOUBAO_API_KEY = "your-api-key"
DOUBAO_MODEL_NAME = "doubao-1.5-vision-pro-250328"
# DeepSeek LLM配置
class APIConfig(BaseModel):
api_key: str = "your-deepseek-api-key"
api_base: str = "https://api.deepseek.com"
llm_model: str = "deepseek-chat"
token_limit: int = 4096class EmbeddingConfig(BaseModel):
model_name: str = "动态路径解析" # 自动查找本地模型
device: str = "cuda" # 或 "cpu"
batch_size: int = 64
normalize_embeddings: bool = True
class BaseRetrieverConfig(BaseModel):
score_threshold: float = 0.3
k: int = 15 # 检索文档数量
fetch_k: int = 50
reranker_model_name: str = "动态路径解析"
use_gpu: bool = True# 运行完整系统测试
python test_system.py
# 测试API连接
python test_apis.py-
模型加载失败
# 检查模型文件是否存在 ls -la models/ # 检查路径配置 python -c "from src.config.retriever_config import EmbeddingConfig; print(EmbeddingConfig().model_name)"
-
知识库加载失败
# 检查知识库文件 ls -la database/global/ # 重新构建知识库 python build_knowledge_base.py
-
API调用失败
# 测试API连接 python test_apis.py # 检查API密钥配置 grep -r "api_key" src/config/
-
Web服务无法访问
# 检查端口占用 netstat -an | grep :5000 # 检查防火墙设置 sudo ufw status
- CPU: 4核心以上
- 内存: 8GB以上(推荐16GB)
- GPU: 支持CUDA的显卡(可选,用于模型加速)
- 存储: SSD硬盘,至少10GB可用空间
- 使用GPU加速模型推理
- 调整batch_size参数
- 使用Gunicorn多进程部署
- 配置Nginx负载均衡
本项目采用MIT许可证,详见LICENSE文件。
欢迎提交Issue和Pull Request来改进项目:
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
- 作者: 杨英樱
- 项目地址: [GitHub Repository]
- 问题反馈: [Issues页面]
- ✨ 初始版本发布
- 🎯 支持图片分析和技术规格生成
- 🌐 Web界面和命令行双模式
- 📦 完整的部署和配置文档
- 🔧 动态模型路径解析
- 🛡️ 离线模式支持
感谢使用技术规格说明书生成系统!