python+qwen3-coder+vue实现类似solo对话生成需求文档和完整前后端项目源码的ai助手代码
代码语言:python
所属分类:人工智能
代码描述:python+qwen3-coder+vue实现类似solo对话生成需求文档和完整前后端项目源码的ai助手代码,左侧通过聊天告诉ai需求,ai生成一个需求文档让你确认,不满意可修改,修改完整后,ai直接生成完整的前后端项目源代码目录,你可以查看或运行,不满意继续聊天对话让ai修改,可接入兼容openai的所有的ai大模型,我接入了的qwen3-coder,生成的项目源码还可以。
代码标签: python qwen3 coder vue 类似 solo 对话 生成 需求 文档 完整 前 后
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import json import re import sys from pathlib import Path from typing import List, Dict # 检查并安装必要的库 try: import openai import uvicorn from fastapi import FastAPI, HTTPException from fastapi.responses import HTMLResponse from pydantic import BaseModel except ImportError: print("错误: 缺少必要的库。请运行: pip install 'fastapi[all]' openai uvicorn python-multipart", file=sys.stderr) sys.exit(1) # --- OpenAI API 配置 --- try: openai_client = openai.Client( api_key=os.environ.get("OPENAI_API_KEY", "sk-"), base_url=os.environ.get("OPENAI_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1"), ) openai_client.models.list() print("OpenAI 客户端初始化成功。") except openai.AuthenticationError: print("错误: OpenAI API 密钥无效或未设置。请设置 OPENAI_API_KEY 环境变量。", file=sys.stderr) sys.exit(1) except Exception as e: print(f"OpenAI 客户端初始化失败: {e}", file=sys.stderr) sys.exit(1) # --- FastAPI 应用定义 --- app = FastAPI() BASE_PROJECT_DIR = Path("ai_projects").resolve() BASE_PROJECT_DIR.mkdir(exist_ok=True) class CodeAssistant: def __init__(self, project_name: str): if not project_name or ".." in project_name or "/" in project_name: raise ValueError("无效的项目名称") self.project_dir = (BASE_PROJECT_DIR / project_name).resolve() self.project_dir.mkdir(parents=True, exist_ok=True) self.decision_model = 'qwen-max' self.generation_model = 'qwen-coder-plus' def _get_file_context(self) -> str: context = [] ignore_dirs = {".history", ".versions", "__pycache__"} for file_path in self.project_dir.rglob("*"): if any(d in file_path.parts for d in ignore_dirs): continue if file_path.is_file(): try: relative_path = file_path.relative_to(self.project_dir) with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: content = f.read() context.append(f"File: {relative_path}\n```\n{content}\n```\n") except Exception as e: print(f"读取文件 {file_path} 时出错: {e}", file=sys.stderr) return "\n".join(context) def _save_files(self, files: List[Dict[str, str]]): for file_info in files: file_path = self.project_dir / file_info['name'] action = file_info.get('action', 'unknown').lower() if action == "del": if file_path.exists(): file_path.unlink() continue file_path.parent.mkdir(parents=True, exist_ok=True) with open(file_path, 'w', encoding='utf-8') as f: f.write(file_info['content']) def _parse_ai_response(self, response_text: str) -> List[Dict[str, str]]: markdown_code_blocks = re.findall(r"```([^\n]+)\n([\s\S]+?)```", response_text) code_blocks = [] for file_header, code_text in markdown_code_blocks: if '--' in file_header: action, path = file_header.split('--', 1) code_blocks.append({"action": action.strip().lower(), "name": path.strip(), "content": code_text.strip()}) return code_blocks def generate_requirements(self, prompt: str) -> str: system_prompt = """你是一个顶级的项目经理。根据用户的初步想法,生成一份详细、清晰、结构化的项目需求文档。 - 使用 Markdown 格式。 - 包括项目概述、核心功能、技术栈建议和文件结构建议等部分。 - **不要生成任何代码**,只生成需求描述文本。 - 你的输出将直接展示给用户进行确认和修改。""" response = openai_client.chat.completions.create( model=self.decision_model, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": f"我的项目想法是:{prompt}"} ], temperature=0.5, ) return response.choices[0].message.content def generate_initial_code(self, requirements_text: str) -> str: requirements_file = self.project_dir / "README.md" with open(requirements_file, 'w', encoding='utf-8') as f: f.write(requirements_text) system_prompt = """你是一个专业的全栈开发工程师。根据项目根目录下的 `README.md` 需求文档,生成完整的初始项目文件。 - 严格按照 `README.md` 的要求来实现。 - 返回格式必须是代码块,每个代码块代表一个文件的操作。 - 新增文件格式: ```add--path/to/file.py\n...code...``` - 请一次性生成所有必要的文件。""" context = f"File: README.md\n```\n{requirements_text}\n```\n" user_message = f"这是我们确认的需求文档(README.md),请开始搭建项目框架和基础代码:\n\n{context}" response = openai_client.chat.completions.create( model=self.generation_model, messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": user_message}], temperature=0.7, ) full_response_text = response.choices[0].message.content code_blocks = self._parse_ai_response(full_response_text) if code_blocks: self._save_files(code_blocks) return f"项目初始代码已生成!共创建了 {len(code_blocks)} 个文件。" else: return "AI 分析了需求,但没有生成任何文件。可能需求不够明确。" def modify_code(self, user_prompt: str) -> str: system_prompt = """你是一个资深的全栈开发工程师。当前你正在维护一个已有的项目。 - 根据用户的修改要求和现有的项目文件上下文,生成或修改项目文件。 - 用户的要求是最高优先级。 - 仔细分析文件上下文,确保修改的准确性和一致性。 - 返回格式必须是代码块,每个代码块代表一个文件的操作。 .........完整代码请登录后点击上方下载按钮下载查看
网友评论0