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