python调用gemini实现中大型项目源码按照待办事项一步一步完成开发测试代码
代码语言:python
所属分类:其他
代码描述:python调用gemini实现中大型项目源码按照待办事项一步一步完成开发测试代码,根据需求先生成sql,然后后端api编码开发,然后使用html5调用api接口交互开发,最后美化html前端ui,最后再查查前后端代码是否有问题,有问题继续修改,经过这几个步骤,一个完整的中大型项目源码就生成了。
代码标签: python 调用 gemini 中大型 项目 源码 按照 待办 事项 一步 完成 开发 测试 代
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* #!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* from google import genai from google.genai import types import os import json import re import sys import subprocess from pathlib import Path from typing import List, Dict from datetime import datetime import shutil # 导入并初始化 colorama try: import colorama from colorama import Fore, Style, init init(autoreset=True) # 关键:让每次print后自动重置颜色 except ImportError: print("错误: 请先安装 colorama 库 (pip install colorama)", file=sys.stderr) sys.exit(1) # --- 颜色定义类 --- class C: """集中管理颜色代码,方便统一修改风格""" PROMPT = Fore.CYAN + Style.BRIGHT INFO = Fore.GREEN AI_DECISION = Fore.YELLOW ACTION = Fore.BLUE + Style.BRIGHT SUCCESS = Fore.GREEN + Style.BRIGHT WARN = Fore.YELLOW + Style.BRIGHT ERROR = Fore.RED + Style.BRIGHT AI_OUTPUT = Fore.WHITE + Style.BRIGHT CMD = Fore.YELLOW DESC = Fore.CYAN TODO = Fore.MAGENTA RESET = Style.RESET_ALL # --- Gemini API 配置 --- # 请将 "" 替换为您的真实 API 密钥 try: # 替换为您的 API 密钥 gemini_client = genai.Client( api_key="AIzaSyCREIY8yXSjo8hNGcLPru8_FGgP5YdD2rs", # <-- 在此处填入你的API Key ) print(C.SUCCESS + "Gemini 客户端初始化成功。") except Exception as e: # 隐藏了具体的密钥错误,使其更通用 if "API key is invalid" in str(e): print(C.ERROR + "Gemini 客户端初始化失败: API密钥无效。请检查您的密钥。", file=sys.stderr) else: print(C.ERROR + f"Gemini 客户端初始化失败: {e}", file=sys.stderr) sys.exit(1) class CodeAssistant: def __init__(self, project_dir: str): """初始化代码助手""" self.project_dir = Path(project_dir).resolve() self.project_dir.mkdir(parents=True, exist_ok=True) self.versions_dir = self.project_dir / ".versions" self.versions_dir.mkdir(exist_ok=True) self.custom_prompt = "" self._load_custom_prompt() # 为不同任务选择不同模型 self.planning_model = 'gemini-2.5-pro' self.decision_model = 'gemini-2.5-flash' self.generation_model = 'gemini-2.5-pro' # 新增:待办事项列表和当前任务索引 self.todo_list: List[Dict[str, str]] = [] self.current_task_index: int = -1 def _load_custom_prompt(self): """加载项目根目录下的 ai.rule 自定义提示词""" rule_file = self.project_dir / "ai.rule" self.custom_prompt = "" if rule_file.is_file(): try: with open(rule_file, 'r', encoding='utf-8') as f: self.custom_prompt = f.read().strip() if self.custom_prompt: print(C.SUCCESS + "已成功加载自定义提示词 ai.rule。") except Exception as e: print(C.ERROR + f"读取 ai.rule 文件时出错: {e}", file=sys.stderr) def _get_text_file_extensions(self) -> set: return { '.php', '.sql', '.js', '.html', '.css', '.json', '.py', '.java', '.cpp', '.c', '.cs', '.rb', '.go', '.rs', '.ts', '.swift', '.kt', '.m', '.sh', '.xml', '.yml', '.yaml', '.r', '.pl', '.lua', '.scala', '.vb', '.hs', '.erl', '.ex', '.exs', '.dart', '.jl', '.f90', '.f95', '.f03', '.f08', '.txt', '.md', '.ini', '.cfg', '.rule', '.env' } def _get_file_context(self) -> str: """获取项目目录中所有代码文件的内容作为上下文""" context = [] code_suffixes = self._get_text_file_extensions() for file_path in self.project_dir.rglob("*"): if self.versions_dir.resolve() in file_path.resolve().parents or file_path.........完整代码请登录后点击上方下载按钮下载查看
网友评论0