Skip to content

AshlynYang-dev/project_specAi

Repository files navigation

技术规格说明书生成系统

作者: 杨英樱
版本: 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/       # 生成的技术规格说明书

🚀 快速开始

1. 环境准备

# 克隆项目
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

2. 模型准备

方案1:下载本地模型(推荐)

# 下载BGE嵌入模型和重排序模型到models目录
python download_models_offline.py

# 或手动下载到models目录:
# - models/bge-base-zh/
# - models/bge-reranker-base/

方案2:使用在线模型

如果网络环境良好,系统会自动从Hugging Face下载模型。

3. 配置API密钥

编辑 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"

4. 构建知识库

# 将PDF技术文档放入data目录,然后运行:
python build_knowledge_base.py

# 检查知识库是否构建成功
ls -la database/global/

5. 启动系统

快速启动(推荐)

# 一键启动Web服务
python start_web.py

手动启动Web服务

cd web_app
python run_web.py

命令行模式

python main.py

6. 访问系统

🌐 Web界面使用指南

主要功能区域

  1. 输入区域(左侧)

    • 产品名称:必填,如"接地装置"、"办公桌"等
    • 详细需求:可选,描述具体技术要求
    • 产品图片:可选,支持拖拽上传或点击选择
  2. 结果区域(右侧)

    • 视觉分析:显示图片分析结果
    • 技术规格:显示生成的完整技术规格说明书
    • 下载功能:一键下载生成的文档

操作流程

  1. 准备输入

    产品名称: 接地装置
    详细需求: 请生成10kV配电系统接地装置的技术规格说明书
    产品图片: 上传接地装置设计图
    
  2. 生成文档

    • 点击"🚀 生成技术规格说明书"按钮
    • 系统自动进行:
      • 图片上传和分析
      • 知识库检索
      • 文档生成和格式化
  3. 查看结果

    • 切换标签页查看不同内容
    • 实时预览生成的文档
    • 下载最终的技术规格说明书

支持的文件格式

  • 输入图片: JPG, JPEG, PNG, GIF, BMP, WebP
  • 输出文档: TXT格式,包含完整的技术规格说明书

🔧 服务器部署指南

开发环境部署

# 启动开发服务器
python start_web.py

# 或手动启动
cd web_app
python run_web.py

生产环境部署

方案1:使用nohup后台运行

# 后台启动服务
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"

方案2:使用systemd服务(推荐)

创建服务文件 /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

方案3:使用Gunicorn(高并发)

# 安装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反向代理(可选)

创建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

🔍 配置说明

API配置 (src/config/api_config.py)

# 豆包视觉模型配置
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 = 4096

检索器配置 (src/config/retriever_config.py)

class 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

常见问题排查

  1. 模型加载失败

    # 检查模型文件是否存在
    ls -la models/
    
    # 检查路径配置
    python -c "from src.config.retriever_config import EmbeddingConfig; print(EmbeddingConfig().model_name)"
  2. 知识库加载失败

    # 检查知识库文件
    ls -la database/global/
    
    # 重新构建知识库
    python build_knowledge_base.py
  3. API调用失败

    # 测试API连接
    python test_apis.py
    
    # 检查API密钥配置
    grep -r "api_key" src/config/
  4. 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来改进项目:

  1. Fork本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

📞 联系方式

  • 作者: 杨英樱
  • 项目地址: [GitHub Repository]
  • 问题反馈: [Issues页面]

🔄 更新日志

v1.0.0 (2025-05-28)

  • ✨ 初始版本发布
  • 🎯 支持图片分析和技术规格生成
  • 🌐 Web界面和命令行双模式
  • 📦 完整的部署和配置文档
  • 🔧 动态模型路径解析
  • 🛡️ 离线模式支持

感谢使用技术规格说明书生成系统!

About

基于AI的智能技术规格说明书生成系统,结合FAISS知识库、豆包视觉大模型和DeepSeek大模型,为用户提供专业的技术文档生成服务。系统支持图片分析、知识库检索和智能文档生成,可通过Web界面或命令行方式使用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors