diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/README.md" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..0b44a54d316218ab2f884be30824950eeb22f506 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/README.md" @@ -0,0 +1,140 @@ +# 智构文档 - 技术文档自动生成智能体 + +智构文档是一款专为应对复杂技术场景而生的长篇技术文档智能生成Agent。它凭借智能架构能力,自动生成结构清晰、内容准确、术语规范的系统设计文档、技术架构文档、部署指南等长篇核心资料。将工程师从繁重的文档编写中解放,让知识沉淀变得自动化、系统化,助力团队打造坚实的技术知识底座。 + +## 功能特点 + +- 📝 **多类型文档支持**:系统设计文档、技术架构文档、部署指南等 +- 🧠 **智能生成**:基于LLM技术,根据用户需求自动生成高质量文档 +- 📋 **结构化模板**:内置规范的文档结构模板,确保文档专业性 +- 🎨 **用户友好界面**:直观的Web界面,操作简单易用 +- ⬇️ **文档下载**:支持将生成的文档下载为Markdown格式 + +## 技术栈 + +- Python 3.7+ +- lazyllm:语言模型接口封装 +- markdown:Markdown转HTML +- http.server:Web服务器 + +## 安装与运行 + +### 1. 安装依赖 + +```bash +# 安装项目依赖 +pip install -r requirements.txt +``` + +### 2. 启动智能体 + +```bash +# 运行智能体 +python main.py + +# 或指定参数运行 +python main.py --host 0.0.0.0 --port 7861 --model_path /path/to/your/model +``` + +### 3. 访问Web界面 + +启动后,在浏览器中访问: +``` +http://localhost:7861 +``` + +## 项目结构 + +``` +智构文档/ +├── main.py # 主程序入口 +├── doc_generator_assistant.py # 文档生成智能体核心模块 +├── doc_generator_web.py # Web界面模块 +├── index.html # 前端页面 +├── README.md # 项目说明文档 +├── requirements.txt # 依赖文件 +├── 技术文档.md # 技术文档 +├── show.png # 项目截图 +└── .gitignore # Git忽略文件 +``` + +## 使用方法 + +1. **选择文档类型**:在下拉菜单中选择需要生成的文档类型(系统设计文档、技术架构文档、部署指南) +2. **输入文档需求**:详细描述您的文档需求,包括系统功能、技术栈、业务场景等 +3. **生成文档**:点击"生成文档"按钮,等待文档生成完成 +4. **查看与下载**:查看生成的文档内容,或点击"下载Markdown"按钮将文档保存到本地 + +## 示例需求 + +### 系统设计文档示例需求 +``` +我需要一个电商平台的系统设计文档,主要包含以下功能模块: +1. 用户管理:注册、登录、个人信息管理 +2. 商品管理:商品发布、分类、搜索、详情 +3. 订单管理:下单、支付、物流跟踪 +4. 购物车:添加商品、修改数量、结算 +5. 支付系统:支持微信支付、支付宝支付 +6. 后台管理:商品管理、订单管理、用户管理、数据统计 + +技术栈要求: +- 前端:React + Ant Design +- 后端:Spring Boot + MySQL +- 中间件:Redis(缓存)、RabbitMQ(消息队列) +- 部署:Docker + Kubernetes +``` + +### 技术架构文档示例需求 +``` +我需要一个微服务架构的技术架构文档,系统包含以下服务: +1. 用户服务:负责用户认证与授权 +2. 产品服务:管理产品信息 +3. 订单服务:处理订单流程 +4. 支付服务:处理支付请求 +5. 通知服务:发送系统通知 + +技术栈: +- 服务框架:Spring Cloud +- 注册中心:Eureka +- 配置中心:Spring Cloud Config +- 网关:Spring Cloud Gateway +- 断路器:Hystrix +- 追踪:Sleuth + Zipkin +- 数据库:MySQL(关系型)、MongoDB(非关系型) +- 缓存:Redis +``` + +### 部署指南示例需求 +``` +我需要一个基于Docker和Kubernetes的部署指南,系统包含以下组件: +1. 前端应用:使用Nginx部署React应用 +2. 后端服务:Spring Boot微服务 +3. 数据库:MySQL 8.0 +4. 缓存:Redis 6.0 +5. 消息队列:RabbitMQ 3.9 + +部署环境: +- Kubernetes集群:3个节点(1个master,2个worker) +- 操作系统:Ubuntu 20.04 +- Docker版本:20.10+ +``` + +## 项目结构 + +``` +doc_generator_agent/ +├── assistant.py # 核心文档生成逻辑 +├── web_ui.py # Web界面实现 +├── main.py # 主程序入口 +├── index.html # 自动生成的HTML页面 +└── README.md # 项目说明文档 +``` + +## 注意事项 + +1. 首次运行时,系统会自动生成`index.html`文件 +2. 如果使用本地模型,请确保模型路径正确且模型文件完整 +3. 如果使用在线模型,请确保网络连接正常且已配置好API密钥 +4. 生成文档的质量取决于用户提供的需求描述详细程度,建议尽可能详细地描述需求 + + diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_assistant.py" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_assistant.py" new file mode 100644 index 0000000000000000000000000000000000000000..202864ab74320750bf007a6c7442bf8c6c02a7fa --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_assistant.py" @@ -0,0 +1,318 @@ +""" +智构文档智能体核心模块 +提供技术文档自动生成功能,支持系统设计文档、技术架构文档、部署指南等 +""" + +import os +from typing import Dict, List +from lazyllm import TrainableModule, OnlineChatModule + + +class DocGeneratorAssistant: + """智构文档智能体类""" + + def __init__(self, model_path: str = None): + """ + 初始化智构文档智能体 + + Args: + model_path: 本地模型路径,如果为None则使用在线模型 + """ + self.model_path = model_path + self._init_model() + self._init_templates() + + def _init_model(self): + """初始化语言模型""" + self.model_available = True + try: + if self.model_path and os.path.exists(self.model_path): + # 使用本地模型 + self.llm = TrainableModule(self.model_path) + else: + # 使用在线模型 + self.llm = OnlineChatModule() + except Exception as e: + print(f"模型初始化失败: {e}") + print("将使用模拟模式运行,请后续配置正确的模型或API密钥") + self.model_available = False + self.llm = None + + def _init_templates(self): + """初始化文档模板""" + # 加载文档结构模板 + self.document_templates = self._load_document_templates() + + # 加载文档生成提示词模板 + self.generation_prompts = self._load_generation_prompts() + + def _load_document_templates(self) -> Dict[str, List[str]]: + """加载文档结构模板""" + return { + "通用文档": [ + "1. 文档概述", + "2. 主要内容", + "3. 详细说明", + "4. 总结与结论" + ], + "系统设计文档": [ + "1. 文档概述", + "2. 系统架构", + "3. 核心功能模块", + "4. 数据模型设计", + "5. API接口设计", + "6. 系统安全性设计", + "7. 性能优化策略", + "8. 部署与运维方案", + "9. 测试策略", + "10. 总结与展望" + ], + "技术架构文档": [ + "1. 架构概述", + "2. 技术栈选型", + "3. 系统分层设计", + "4. 核心组件设计", + "5. 集成与接口设计", + "6. 技术风险与应对", + "7. 扩展与演进计划" + ], + "部署指南": [ + "1. 部署环境准备", + "2. 安装依赖", + "3. 配置文件说明", + "4. 部署步骤", + "5. 验证部署", + "6. 常见问题与解决方案" + ] + } + + def _load_generation_prompts(self) -> Dict[str, str]: + """加载文档生成提示词模板""" + return { + "通用文档": """ + 你是一位专业的文档撰写专家,请根据用户提供的需求,生成一份结构清晰、内容详细的通用文档。 + + 用户需求:{requirements} + + 文档结构请遵循以下大纲,确保每个部分都有详细的描述: + 1. 文档概述 + - 文档目的:详细说明文档的用途和目标读者 + - 背景介绍:提供相关的背景信息和上下文 + - 文档范围:明确文档涵盖的内容和不包含的内容 + 2. 主要内容 + - 核心主题:文档的主要内容和讨论点 + - 关键信息:重要的事实、数据或结论 + - 结构组织:内容的逻辑组织和分类 + 3. 详细说明 + - 深入分析:对主要内容的详细分析和解释 + - 具体细节:必要的细节信息和示例 + - 支持材料:图表、表格或其他支持材料 + 4. 总结与结论 + - 主要结论:文档的核心结论和发现 + - 建议:相关的建议或行动方案 + - 后续步骤:可能的后续步骤或进一步研究 + + 请确保文档内容详细、准确,语言流畅,符合专业文档的规范。根据用户需求调整内容的深度和广度,确保文档满足用户的实际需求。 + """, + "系统设计文档": """ + 你是一位专业的系统架构师,请根据用户提供的系统需求,生成一份结构清晰、内容详细的系统设计文档。 + + 用户需求:{requirements} + + 文档结构请遵循以下大纲,确保每个部分都有详细的描述: + 1. 文档概述 + - 文档目的:详细说明文档的用途和目标读者 + - 术语定义:列出所有相关技术术语及其解释 + - 文档范围:明确文档涵盖的内容和不包含的内容 + 2. 系统架构 + - 整体架构图:描述系统的整体结构和主要组件 + - 架构风格说明:解释选择的架构风格及其优势 + - 各层职责:详细描述系统各层的功能和职责 + 3. 核心功能模块 + 对每个核心模块进行详细描述,包括: + - 模块概述:模块的功能定位和核心价值 + - 功能列表:列出模块包含的所有具体功能点 + - 处理流程:描述模块的主要业务流程和数据流转 + - 关键接口:列出模块对外提供的主要接口 + - 依赖关系:说明模块与其他模块的依赖关系 + 4. 数据模型设计 + - 实体关系图:描述系统的主要实体及其关系 + - 核心数据表结构:详细列出每个表的字段名、数据类型、约束和描述 + - 数据流转:说明数据在系统各模块之间的流动路径 + 5. API接口设计 + 对每个主要API接口进行详细描述: + - 接口名称和URL + - 请求方法(GET/POST等) + - 请求参数:名称、类型、必填项、描述 + - 响应格式:成功和失败的响应结构和示例 + - 错误码:常见错误码及其说明 + 6. 系统安全性设计 + - 认证与授权:详细说明用户认证和权限控制机制 + - 数据安全:说明数据加密、存储和传输的安全措施 + - 访问控制:描述系统的访问控制策略和实现方式 + - 安全审计:说明安全日志和审计机制 + 7. 性能优化策略 + - 缓存策略:详细说明使用的缓存技术和缓存策略 + - 数据库优化:索引设计、查询优化等 + - 并发处理:系统的并发控制和负载均衡策略 + - 资源管理:内存、CPU等资源的管理策略 + 8. 部署与运维方案 + - 部署架构:详细描述系统的部署结构 + - 环境配置:列出所有环境变量和配置项 + - 监控与告警:监控指标、告警规则和处理流程 + - 日志管理:日志的收集、存储和分析方案 + 9. 测试策略 + - 测试类型:单元测试、集成测试、系统测试等 + - 测试重点:关键功能和流程的测试策略 + - 测试工具:使用的测试工具和框架 + - 测试环境:测试环境的配置和管理 + 10. 总结与展望 + - 系统亮点:总结系统的主要优势和特点 + - 后续优化方向:列出系统可以进一步改进的地方 + + 请确保文档内容详细、准确,符合技术文档的专业规范,便于开发团队理解和执行。每个模块的描述应足够具体,包含可操作的信息。 + """, + "技术架构文档": """ + 你是一位资深的技术架构师,请根据用户提供的系统信息,生成一份全面、详细的技术架构文档。 + + 系统信息:{requirements} + + 文档结构请遵循以下大纲,确保每个部分都有详细的描述: + 1. 架构概述 + - 架构目标:详细说明架构设计的目标和原则 + - 设计原则:列出架构设计遵循的核心原则 + - 架构决策记录:记录所有重要的架构决策及其原因 + 2. 技术栈选型 + 详细说明每个技术组件的选型理由和版本: + - 前端技术:框架、库、构建工具等 + - 后端技术:语言、框架、中间件等 + - 数据库:主数据库、缓存、搜索引擎等 + - 云服务:使用的云平台和服务 + 3. 系统分层设计 + 详细描述系统的分层结构: + - 表示层:负责用户界面和交互 + - 业务逻辑层:处理核心业务逻辑 + - 数据访问层:负责数据持久化 + - 基础设施层:提供底层服务支持 + 4. 核心组件设计 + 对每个核心组件进行详细描述: + - 组件概述:组件的功能和定位 + - 设计细节:组件的内部结构和实现方式 + - 关键算法:组件使用的核心算法和技术 + - 接口定义:组件提供的接口和协议 + - 性能特性:组件的性能要求和优化措施 + 5. 集成与接口设计 + - 内部接口:系统内部组件之间的接口设计 + - 外部系统集成:与第三方系统的集成方式和接口 + - 消息队列设计:消息的格式、路由和处理机制 + - API网关:API的统一管理和保护 + 6. 技术风险与应对 + - 潜在风险:详细列出所有潜在的技术风险 + - 应对措施:针对每个风险的具体应对策略 + - 容错机制:系统的容错设计和故障恢复机制 + - 灾难恢复:系统的备份和恢复方案 + 7. 扩展与演进计划 + - 横向扩展:系统的水平扩展能力设计 + - 功能演进:系统功能的迭代和扩展计划 + - 技术债务管理:技术债务的识别和管理策略 + - 架构演进:架构的长期演进路线图 + + 请确保文档内容专业、深入,能够指导技术团队的开发和维护工作。每个组件的描述应包含足够的技术细节。 + """, + "部署指南": """ + 你是一位专业的DevOps工程师,请根据用户提供的系统信息,生成一份详细、可操作的部署指南。 + + 系统信息:{requirements} + + 文档结构请遵循以下大纲,确保每个步骤都有详细的说明: + 1. 部署环境准备 + - 硬件要求:详细列出服务器的硬件配置要求 + - 操作系统要求:支持的操作系统版本和配置 + - 依赖软件:列出所有需要预先安装的软件及其版本 + - 网络要求:网络配置和端口开放要求 + 2. 安装依赖 + - 依赖列表:详细列出所有依赖项及其版本 + - 安装步骤:每个依赖项的具体安装命令和配置 + - 验证安装:如何验证依赖是否正确安装 + 3. 配置文件说明 + - 配置文件路径:所有配置文件的位置 + - 关键配置项:每个重要配置项的含义和取值范围 + - 环境变量:所有环境变量的说明和默认值 + - 安全配置:与安全相关的配置项 + 4. 部署步骤 + 提供详细的、可复制的部署步骤: + - 步骤1:[步骤名称] - 详细说明每个步骤的操作和命令 + - 步骤2:[步骤名称] - 包含所有必要的命令和参数 + - ... + - 确保步骤顺序正确,每个步骤都有明确的目标 + 5. 验证部署 + - 服务状态检查:如何检查服务是否正常运行 + - 功能验证:测试系统的主要功能是否正常 + - 性能测试:基本的性能测试方法和指标 + - 日志检查:如何查看和分析系统日志 + 6. 常见问题与解决方案 + 列出所有可能遇到的问题和详细解决方案: + - 问题1:[问题描述] - 包含错误信息和可能的原因 + 解决方案:详细的解决步骤和命令 + - 问题2:[问题描述] + 解决方案:详细的解决步骤和命令 + - ... + 7. 运维与监控 + - 日常运维:系统日常维护的任务和操作 + - 监控配置:监控工具的配置和使用 + - 告警规则:告警的配置和处理流程 + - 性能优化:日常性能优化的方法和建议 + + 请确保文档步骤清晰、可操作性强,便于运维人员快速部署和维护系统。所有命令和配置都应详细准确。 + """ + } + + def generate_document(self, doc_type: str, requirements: str) -> str: + """ + 生成技术文档 + + Args: + doc_type: 文档类型(系统设计文档、技术架构文档、部署指南等) + requirements: 用户提供的文档需求 + + Returns: + 生成的文档内容 + """ + if not self.model_available: + return "模型未配置,无法生成文档。请配置有效的模型路径或API密钥后重试。" + + # 获取对应的生成提示词 + prompt_template = self.generation_prompts.get(doc_type, self.generation_prompts["通用文档"]) + prompt = prompt_template.format(requirements=requirements) + + try: + # 使用LLM生成文档 + response = self.llm(prompt) + return response + except Exception as e: + return f"文档生成失败:{str(e)}" + + def get_document_templates(self) -> Dict[str, List[str]]: + """ + 获取支持的文档模板 + + Returns: + 文档模板字典,键为文档类型,值为文档结构大纲 + """ + return self.document_templates + + def validate_doc_type(self, doc_type: str) -> bool: + """ + 验证文档类型是否支持 + + Args: + doc_type: 文档类型 + + Returns: + 布尔值,表示文档类型是否支持 + """ + return doc_type in self.document_templates + + + + diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_web.py" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_web.py" new file mode 100644 index 0000000000000000000000000000000000000000..9f1f049fb9ace2bae9ce8e751e8f0dc18855b989 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/doc_generator_web.py" @@ -0,0 +1,602 @@ +""" +智构文档智能体Web界面模块 +提供用户友好的界面,用于输入文档需求并生成技术文档 +""" + +import http.server +import socketserver +import json +from http import HTTPStatus +import markdown + + +class DocGeneratorWebUI: + def __init__(self, model_path: str = None): + from doc_generator_assistant import DocGeneratorAssistant + self.agent = DocGeneratorAssistant(model_path) + self.port = 7861 + + def create_ui(self): + # 创建HTTP服务器 + class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + def __init__(self, *args, agent=None, **kwargs): + self.agent = agent + super().__init__(*args, **kwargs) + + def do_GET(self): + if self.path == '/': + self.path = '/index.html' + elif self.path == '/api/get_templates': + # 处理获取文档模板请求 + try: + templates = self.agent.get_document_templates() + self.send_response(HTTPStatus.OK) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(json.dumps({'templates': templates}).encode('utf-8')) + return + except Exception as e: + self.send_response(HTTPStatus.INTERNAL_SERVER_ERROR) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(json.dumps({'error': str(e)}).encode('utf-8')) + return + return super().do_GET() + + def do_POST(self): + if self.path == '/api/generate_doc': + # 处理文档生成请求 + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length) + data = json.loads(post_data.decode('utf-8')) + doc_type = data.get('doc_type', '') + requirements = data.get('requirements', '') + + try: + # 使用智能体生成文档 + response = self.agent.generate_document(doc_type, requirements) + # 将Markdown转换为HTML + html_response = markdown.markdown(response, extensions=['extra', 'codehilite']) + self.send_response(HTTPStatus.OK) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(json.dumps({'response': html_response, 'markdown': response}).encode('utf-8')) + except Exception as e: + self.send_response(HTTPStatus.INTERNAL_SERVER_ERROR) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(json.dumps({'error': str(e)}).encode('utf-8')) + else: + self.send_response(HTTPStatus.NOT_FOUND) + self.end_headers() + + return MyHTTPRequestHandler + + def generate_html(self): + # 生成HTML页面内容 + html_content = ''' + + + + + + 智构文档 - 技术文档自动生成助手 + + + +
+
+

智构文档

+

技术文档自动生成助手 - 让文档编写更高效

+
+ +
+
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+

生成结果

+ +
+ +
+
点击"生成文档"按钮开始生成技术文档...
+
+
+
+ + +
+ + + + + ''' + + # 保存HTML到文件 + with open('index.html', 'w', encoding='utf-8') as f: + f.write(html_content) + + def launch(self, server_name="0.0.0.0", server_port=7861, share=False): + """启动Web界面""" + # 生成HTML文件 + self.generate_html() + + # 创建HTTP服务器 + handler_class = self.create_ui() + + with socketserver.TCPServer((server_name, server_port), + lambda *args, **kwargs: handler_class(*args, agent=self.agent, **kwargs)) as httpd: + print(f"正在启动智构文档Web界面...") + print(f"访问地址: http://{server_name}:{server_port}") + print(f"* Running on local URL: http://{server_name}:{server_port}") + + try: + # 启动服务器 + httpd.serve_forever() + except KeyboardInterrupt: + print("\n服务器已停止") + httpd.shutdown() \ No newline at end of file diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/index.html" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/index.html" new file mode 100644 index 0000000000000000000000000000000000000000..200f8b60634501b8e155cfded7d6be9195b8e8c5 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/index.html" @@ -0,0 +1,501 @@ + + + + + + + 智构文档 - 技术文档自动生成助手 + + + +
+
+

智构文档

+

技术文档自动生成助手 - 让文档编写更高效

+
+ +
+
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+

生成结果

+ +
+ +
+
点击"生成文档"按钮开始生成技术文档...
+
+
+
+ + +
+ + + + + \ No newline at end of file diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/main.py" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/main.py" new file mode 100644 index 0000000000000000000000000000000000000000..d1d82e7fb5776c643b3e72a906cee30953bb3b26 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/main.py" @@ -0,0 +1,86 @@ +""" +智构文档智能体主程序 +整合所有功能模块,提供完整的技术文档生成服务 +""" + +import os +import sys +import argparse +from doc_generator_web import DocGeneratorWebUI + +# 添加当前目录到Python路径 +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + + +def parse_args(): + """解析命令行参数""" + parser = argparse.ArgumentParser(description="智构文档 - 技术文档自动生成助手") + + parser.add_argument( + "--model_path", + type=str, + default=None, + help="本地模型路径,如果为None则使用在线模型" + ) + + parser.add_argument( + "--host", + type=str, + default="0.0.0.0", + help="服务器主机地址" + ) + + parser.add_argument( + "--port", + type=int, + default=7861, + help="服务器端口" + ) + + parser.add_argument( + "--share", + action="store_true", + help="是否创建公共分享链接" + ) + + parser.add_argument( + "--data_dir", + type=str, + default="data", + help="数据目录路径" + ) + + return parser.parse_args() + + +def main(): + """主函数""" + # 解析命令行参数 + args = parse_args() + + # 创建数据目录 + os.makedirs(args.data_dir, exist_ok=True) + + # 初始化Web界面 + print("正在初始化智构文档智能体...") + web_ui = DocGeneratorWebUI(model_path=args.model_path) + + # 启动Web界面 + print("正在启动Web界面...") + print(f"访问地址: http://{args.host}:{args.port}") + + try: + web_ui.launch( + server_name=args.host, + server_port=args.port, + share=args.share + ) + except KeyboardInterrupt: + print("\n程序已停止") + except Exception as e: + print(f"启动失败: {e}") + sys.exit(1) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/requirements.txt" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/requirements.txt" new file mode 100644 index 0000000000000000000000000000000000000000..7cce7b12d647974af1da650895b9423717790932 --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/requirements.txt" @@ -0,0 +1,36 @@ +toml +fastapi>=0.111.0 +loguru>=0.7.2 +pydantic +requests>=2.32.2 +uvicorn +cloudpickle>=3.0.0 +gradio==5.49.1 +gradio-client>=0.6.1 +protobuf>=3.20.1 +docstring-parser +json5 +tiktoken +spacy<=3.7.5 +bm25s +pystemmer +nltk +jieba>=0.42.1 +pyjwt>=2.8.0 +sentencepiece +psycopg2-binary +sqlalchemy +psutil +pypdf +numpy==1.26.4 +async-timeout +httpx<0.28.0 +docx2txt +ebooklib +html2text +olefile +openpyxl +python-pptx +tenacity +beautifulsoup4 +deepdiff>=8.6.1 diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/show.png" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/show.png" new file mode 100644 index 0000000000000000000000000000000000000000..5bd18c5e3033d5ebdaff7fe10971e54d900759f5 Binary files /dev/null and "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/show.png" differ diff --git "a/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/\346\212\200\346\234\257\346\226\207\346\241\243.md" "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/\346\212\200\346\234\257\346\226\207\346\241\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..990d8c365912ea7482db18efc619674dddce32fd --- /dev/null +++ "b/\344\275\234\345\223\201\346\217\220\344\272\244/\346\231\272\346\236\204\346\226\207\346\241\243/\346\212\200\346\234\257\346\226\207\346\241\243.md" @@ -0,0 +1,228 @@ +# 智构文档智能体 - 技术文档 + +## 项目简介 + +智构文档智能体是一个基于AI技术的文档自动生成系统,专为技术文档的自动生成提供服务。该系统能够根据用户需求,自动生成系统设计文档、技术架构文档、部署指南等多种技术文档。 + +### 主要功能 +- **文档自动生成**:根据用户需求自动生成系统设计文档、技术架构文档、部署指南等 +- **文档模板支持**:提供多种文档结构模板,满足不同类型文档的需求 +- **智能对话**:支持自然语言交互,提供个性化的文档生成服务 +- **Web界面**:提供友好的Web界面,方便用户输入需求和查看生成的文档 + +## 成员贡献清单 + +| 成员 | 贡献内容 | +|------|----------| +| 王贝贝 | 项目负责人,整体架构设计,核心功能实现 | + +## 技术栈 + +### 后端技术 +- **Python 3.10+**:主要开发语言 +- **LazyLLM**:AI大模型开发框架,用于构建智能文档生成系统 +- **Markdown**:用于将AI返回的Markdown格式内容转换为HTML +- **HTTP Server**:用于构建Web服务器,提供API接口 + +### 前端技术 +- **HTML5**:Web界面开发 +- **CSS3**:样式设计 +- **JavaScript**:前端交互逻辑 + +### 开发工具 +- **Python**:开发环境 +- **VS Code**:代码编辑器 +- **Git**:版本控制 + +## 架构设计 + +### 核心组件设计 + +#### 1. 文档生成智能体核心 (doc_generator_assistant.py) +```python +class DocGeneratorAssistant: + def __init__(self, model_path: str = None): + # 初始化模型和文档模板 + pass + + def _init_model(self): + # 初始化语言模型 + pass + + def _init_templates(self): + # 初始化文档模板 + pass + + def generate_document(self, doc_type: str, requirements: str) -> str: + # 根据需求生成文档 + pass + + def get_document_templates(self) -> Dict[str, List[str]]: + # 获取文档模板列表 + pass + + def validate_doc_type(self, doc_type: str) -> bool: + # 验证文档类型是否有效 + pass +``` + +#### 2. Web界面模块 (doc_generator_web.py) +```python +class DocGeneratorWebUI: + def __init__(self, model_path: str = None): + # 初始化智能助手和Web服务器 + pass + + def create_ui(self): + # 创建HTTP服务器和请求处理器 + pass + + def generate_html(self): + # 生成HTML页面内容 + pass + + def launch(self, server_name="0.0.0.0", server_port=7861, share=False): + # 启动Web界面 + pass +``` + +### 数据流程 + +1. **用户输入**:用户在Web界面选择文档类型并输入文档需求 +2. **前端处理**:前端JavaScript将用户输入发送到后端API +3. **后端处理**:后端API接收到请求后,调用DocGeneratorAssistant处理用户输入 +4. **AI模型调用**:DocGeneratorAssistant根据用户输入的文档类型和需求,调用LazyLLM框架的模型接口生成文档 +5. **结果返回**:DocGeneratorAssistant将生成的文档返回给后端API +6. **Markdown转HTML**:后端API将AI返回的Markdown格式内容转换为HTML +7. **前端显示**:前端JavaScript接收到后端返回的HTML内容,将其显示在Web界面中 + +## 部署说明 + +### 环境要求 +- **Python 3.10+**:需要安装Python 3.10或更高版本 +- **LazyLLM**:需要安装LazyLLM框架 +- **Markdown**:需要安装Markdown库 + +### 安装步骤 + +1. **安装Python**:从Python官方网站下载并安装Python 3.10或更高版本 + +2. **安装依赖库**: +```bash +pip install lazyllm markdown +``` + +### 运行步骤 + +1. **进入项目目录**: + +2. **运行主程序**: +```bash +python main.py +``` + +3. **访问Web界面**:在浏览器中输入以下地址访问Web界面: +``` +http://localhost:7861 +``` + +### 配置选项 + +**命令行参数**: +- `--model_path`:本地模型路径,如果为None则使用在线模型 +- `--host`:服务器主机地址,默认为"0.0.0.0" +- `--port`:服务器端口,默认为7861 +- `--share`:是否创建公共分享链接,默认为False +- `--data_dir`:数据目录路径,默认为"data" + +**示例**: +```bash +python main.py --port 7862 --model_path /path/to/local/model +``` + +### 项目结构 + +``` +智构文档/ # 项目主目录 +├── main.py # 主程序入口 +├── doc_generator_assistant.py # 文档生成智能体核心模块 +├── doc_generator_web.py # Web界面模块 +├── index.html # 前端页面 +├── README.md # 项目说明文档 +├── requirements.txt # 依赖文件 +├── 技术文档.md # 技术文档 +├── show.png # 项目截图 +└── .gitignore # Git忽略文件 +``` + +## 系统功能实现 + +### 1. 文档生成功能 + +文档生成功能是系统的核心功能,通过以下步骤实现: + +1. **需求分析**:系统接收用户输入的文档类型和需求描述 +2. **模板选择**:根据文档类型选择相应的文档结构模板 +3. **内容生成**:调用LazyLLM模型根据需求和模板生成文档内容 +4. **格式处理**:将生成的内容转换为Markdown格式 +5. **结果返回**:将处理后的文档返回给用户 + +### 2. 文档模板系统 + +系统内置了多种文档结构模板,包括: + +- **系统设计文档**:包含系统概述、功能需求、非功能需求、架构设计等章节 +- **技术架构文档**:包含技术选型、系统架构、核心组件、数据流程等章节 +- **部署指南**:包含环境要求、安装步骤、配置说明、运行步骤等章节 + +### 3. Web界面实现 + +Web界面采用HTTP Server实现,主要功能包括: + +- **用户输入界面**:提供文档类型选择和需求输入框 +- **文档生成按钮**:触发文档生成过程 +- **生成结果显示**:显示生成的文档内容,支持Markdown格式 +- **交互功能**:支持刷新、复制等操作 + +## 技术难点与解决方案 + +### 1. 文档内容质量控制 + +**难点**:如何确保生成的文档内容准确、完整、符合技术文档的规范要求 + +**解决方案**: +- 使用高质量的文档模板,确保文档结构完整 +- 对用户需求进行细化分析,提取关键信息 +- 对生成的文档内容进行格式检查和优化 + +### 2. 系统性能优化 + +**难点**:如何提高文档生成速度,提升用户体验 + +**解决方案**: +- 优化模型调用流程,减少不必要的计算 +- 使用缓存机制,存储常用文档模板和生成结果 +- 采用异步处理方式,提高系统并发处理能力 + +### 3. 用户体验优化 + +**难点**:如何提供友好的用户界面,方便用户使用系统功能 + +**解决方案**: +- 设计简洁直观的Web界面,减少用户操作步骤 +- 提供实时的生成进度反馈 +- 支持生成结果的复制和下载功能 + +## 未来发展方向 + +1. **文档类型扩展**:增加更多类型的技术文档支持,如API文档、测试文档等 +2. **文档质量提升**:引入文档质量评估机制,进一步提高生成文档的质量 +3. **个性化定制**:支持用户自定义文档模板和生成规则 +4. **多语言支持**:增加多语言文档生成功能 +5. **集成开发工具**:与常见的开发工具(如VS Code、GitLab)集成,提供更便捷的文档生成服务 + +## 总结 + +智构文档智能体是一个功能强大的技术文档自动生成系统,基于LazyLLM框架构建,提供了友好的Web界面和丰富的文档生成功能。该系统能够帮助用户快速生成高质量的技术文档,提高文档编写效率,减少人工工作量。 + +系统采用模块化设计,具有良好的扩展性和可维护性。未来,系统将继续扩展文档类型、提升文档质量、增加个性化定制功能,为用户提供更优质的文档生成服务。 \ No newline at end of file