好的,根据你现在的项目,我来写一个完整的 README: --- ## README.md ```markdown # SDK Generator - AI 驱动的 SDK 代码生成器 一款基于 AI 大模型的 SDK 代码生成工具,通过上传 API 文档自动生成 Go 语言的 SDK 客户端或服务端骨架代码。 ## ✨ 核心功能 - 📄 **文档精炼**:上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf),自动提取接口信息 - 🚀 **代码生成**:支持两种生成模式 - **客户端 SDK**:根据接口文档生成 Go SDK 客户端代码 - **服务端骨架**:根据对接文档生成 Go HTTP 服务端骨架(Fiber 框架) - 🔐 **加密算法**:集成常用加密算法(SM2/SM3/SM4、RSA、AES 等) - 📋 **任务管理**:异步任务队列,实时查看生成进度和状态 - 📊 **用量统计**:记录每次生成的 Token 用量,支持按步骤查看详情 - 🔗 **代码仓库**:生成完成后自动推送到 Git 仓库(Gitea 等) ## 🏗️ 技术架构 ### 后端 - **语言**:Go 1.26 - **Web 框架**:Fiber v2 - **AI 集成**:OpenAI 兼容 API(支持豆包、DeepSeek 等) - **数据库**:SQLite(可扩展) - **文件存储**:本地文件系统 ### 前端 - **技术栈**:原生 HTML + CSS + JavaScript - **交互**:Modal 弹窗、实时进度轮询、Markdown 渲染 ## 📁 项目结构 ``` sdk-generator/ ├── cmd/ │ └── server/ │ └── main.go # 服务启动入口 ├── internal/ │ ├── call/ │ │ └── call.go # LLM 调用封装 │ ├── config/ │ │ └── config.go # 配置管理 │ ├── extractor/ │ │ └── extractor.go # 代码块提取 │ ├── handler/ │ │ ├── api_handler.go # API 路由处理 │ │ └── page_handler.go # 页面渲染 │ ├── models/ │ │ └── task.go # 数据模型 │ ├── postprocess/ │ │ └── postprocess.go # 代码后处理(格式化、编译检查) │ ├── prompts/ │ │ ├── generate.go # 生成 Prompt 模板 │ │ └── validate.go # 验证 Prompt 模板 │ ├── refiner/ │ │ └── refiner.go # 文档精炼 │ ├── service/ │ │ └── generator.go # 核心业务逻辑 │ └── validator/ │ └── validator.go # 代码验证 ├── web/ │ ├── static/ │ │ ├── css/ │ │ │ └── style.css # 样式文件 │ │ └── js/ │ │ └── app.js # 前端逻辑 │ └── templates/ │ └── index.html # 主页面 ├── outputs/ # 生成的 SDK 输出目录 ├── uploads/ # 临时上传目录 ├── Dockerfile ├── docker-compose.yml ├── go.mod ├── go.sum └── README.md ``` ## 🚀 快速开始 ### 前置依赖 - Go 1.26+ - Docker(可选) - 大模型 API Key(豆包/DeepSeek/OpenAI 等) ### 本地运行 ```bash # 1. 克隆项目 git clone cd sdk-generator # 2. 下载依赖 go mod download # 3. 配置环境变量 export DOUBAO_API_KEY=your_api_key export DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 export DOUBAO_MODEL=doubao-seed-evolving # 4. 启动服务 go run cmd/server/main.go # 5. 访问 # 浏览器打开 http://localhost:8080 ``` ### Docker 运行 ```bash # 1. 构建镜像 docker build -t sdk-generator . # 2. 运行容器 docker run -d \ -p 8080:8080 \ -e DOUBAO_API_KEY=your_api_key \ -e DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 \ -e DOUBAO_MODEL=doubao-seed-evolving \ -v $(pwd)/outputs:/app/outputs \ --name sdk-generator \ sdk-generator # 或使用 docker-compose docker-compose up -d ``` ## 📖 使用指南 ### 1. 添加文档实例 1. 点击「添加文档实例」 2. 上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf) 3. 填写 API Key、Base URL、大模型名称 4. 点击「精炼并保存」,系统会自动提取接口信息 ### 2. 生成代码 1. 在文档列表中找到目标文档 2. 点击「生成」按钮 3. 选择需要实现的接口(可多选) 4. 填写: - 仓库名称(如 `marketing-sdk`) - 生成类型(客户端 SDK / 服务端骨架) - API Key、Base URL、大模型名称 5. 点击「生成代码」提交任务 ### 3. 查看进度 - 页面会实时显示生成进度(百分比 + 状态文字) - 日志区域显示详细的执行步骤 - 生成完成后可通过「下载 SDK」或「查看代码仓库」获取结果 ### 4. 历史任务 - 点击文档的「历史」按钮查看所有生成任务 - 点击任务可查看详情(接口列表、Token 用量等) ## 🔌 API 接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/refine` | POST | 精炼文档(上传 + AI 提取) | | `/api/v1/refine/list` | POST | 获取文档实例列表 | | `/api/v1/refine/update` | POST | 更新文档内容 | | `/api/v1/generate` | POST | 提交代码生成任务 | | `/api/v1/tasks/{task_id}` | GET | 查询任务状态和进度 | | `/api/v1/tasks/{task_id}/download` | GET | 下载生成的代码包 | | `/api/v1/tasks/list` | POST | 获取历史任务列表 | | `/api/v1/tasks/{task_id}/detail` | GET | 获取任务详情 | ### 生成任务请求示例 ```bash curl -X POST /api/v1/generate \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "instance_id=xxx" \ -d "llm_api_key=xxx" \ -d "llm_base_url=https://ark.cn-beijing.volces.com/api/v3" \ -d "llm_model=doubao-seed-evolving" \ -d "desc=my-sdk" \ -d "code_type=go" \ -d "generate_type=1" \ -d "interfaces=[{\"method\":\"POST\",\"summary\":\"创建订单\"}]" ``` ### 查询任务状态响应示例 ```json { "code": 200, "data": { "Task": { "task_id": "xxx", "task_status": "generateCode", "desc": "my-sdk", "repo_url": "https://gitea.example.com/ai_sdk/my-sdk" }, "percent": 60, "status_desc": "生成代码中..." }, "message": "成功" } ``` ## 🔐 支持的加密算法 | 算法 | 类型 | 说明 | |------|------|------| | **SM2** | 非对称加密 | 国密签名/加密 | | **SM3** | 哈希算法 | 国密摘要计算 | | **SM4** | 对称加密 | 国密 CBC/ECB 模式 | | **RSA** | 非对称加密 | 签名/PKCS1/PKCS8 | | **AES** | 对称加密 | CBC/ECB 模式 | | **HMAC-SHA256** | 哈希算法 | 签名验证 | ## 🛠️ 配置说明 ### 环境变量 | 变量 | 说明 | 默认值 | |------|------|--------| | `PORT` | 服务端口 | `8080` | | `DOUBAO_API_KEY` | 大模型 API Key | - | | `DOUBAO_BASE_URL` | API 地址 | `https://ark.cn-beijing.volces.com/api/v3` | | `DOUBAO_MODEL` | 模型名称 | `doubao-seed-evolving` | | `OUTPUT_DIR` | 输出目录 | `./outputs` | | `UPLOAD_DIR` | 上传目录 | `./uploads` | | `MAX_TOKENS` | 最大输出 Token | `65536` | ## 📦 依赖库 | 库 | 用途 | |----|------| | `github.com/gofiber/fiber/v2` | Web 框架 | | `github.com/sashabaranov/go-openai` | OpenAI API 客户端 | | `github.com/gofiber/template/html/v2` | HTML 模板引擎 | | `github.com/google/uuid` | UUID 生成 | | `github.com/yuin/goldmark` | Markdown 解析 | | `github.com/tjfoc/gmsm` | 国密算法(SM2/SM3/SM4) | ## 🤝 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request ## 📝 License MIT License ## 📧 联系方式 如有问题,请提交 Issue 或联系项目维护者。 --- **Made with ❤️ by AI SDK Generator Team** ```