# config.py - 全局配置管理 import os from dotenv import load_dotenv load_dotenv() # ── LLM 配置 ────────────────────────────────────────── LLM_API_KEY = os.getenv("OPENAI_API_KEY", "") LLM_BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1") LLM_MODEL = os.getenv("LLM_MODEL", "gpt-4o") LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0.3")) # ── 数据库配置 ───────────────────────────────────────── DB_PATH = os.getenv("DB_PATH", "data/requirement_analyzer.db") # ── 输出配置 ─────────────────────────────────────────── OUTPUT_BASE_DIR = os.getenv("OUTPUT_BASE_DIR", "output") DEFAULT_LANGUAGE = os.getenv("DEFAULT_LANGUAGE", "python") # ══════════════════════════════════════════════════════ # Prompt 模板 # ══════════════════════════════════════════════════════ DECOMPOSE_PROMPT_TEMPLATE = """ 你是一位资深软件架构师和产品经理。请根据以下信息,将原始需求分解为若干个可独立实现的功能需求。 {knowledge_section} ## 原始需求 {raw_requirement} ## 输出要求 请严格按照以下 JSON 格式输出,不要包含任何额外说明: {{ "functional_requirements": [ {{ "index": 1, "title": "功能需求标题(简洁,10字以内)", "description": "功能需求详细描述(包含输入、处理逻辑、输出)", "function_name": "snake_case函数名", "priority": "high|medium|low" }} ] }} 要求: 1. 每个功能需求必须是独立可实现的最小单元 2. function_name 使用 snake_case 命名,清晰表达函数用途 3. 分解粒度适中,通常 5-15 个功能需求 4. 优先级根据业务重要性判断 """ # ── 函数签名 JSON 生成 Prompt ────────────────────────── FUNC_SIGNATURE_PROMPT_TEMPLATE = """ 你是一位资深软件架构师。请根据以下功能需求描述,设计该函数的完整接口签名,并以 JSON 格式输出。 {knowledge_section} ## 功能需求 需求编号:{requirement_id} 标题:{title} 函数名:{function_name} 详细描述:{description} ## 输出格式 请严格按照以下 JSON 结构输出,不要包含任何额外说明或 markdown 标记: {{ "name": "{function_name}", "requirement_id": "{requirement_id}", "description": "简洁的一句话功能描述(英文)", "type": "function", "parameters": {{ "": {{ "type": "integer|string|boolean|float|list|dict|object", "inout": "in|out|inout", "description": "参数说明(英文)", "required": true }} }}, "return": {{ "type": "integer|string|boolean|float|list|dict|object|void", "description": "整体返回值说明(英文,一句话概括)", "on_success": {{ "value": "具体成功返回值或范围,如 0、true、user object、list of items 等", "description": "成功时的返回值含义(英文)" }}, "on_failure": {{ "value": "具体失败返回值或范围,如 nonzero、false、null、empty list、raises Exception 等", "description": "失败时的返回值含义,或抛出的异常类型(英文)" }} }} }} ## 设计规范 1. 参数名使用 snake_case,类型使用通用类型(不绑定具体语言) 2. inout 字段含义: - in = 仅输入参数 - out = 仅输出参数(通过参数传出结果,如指针/引用) - inout = 既作输入又作输出 3. 所有描述字段使用英文 4. return 字段规则: - 若函数无返回值(void),type 填 "void",on_success/on_failure 均填 null - 若返回值只有成功场景(如纯查询),on_failure 可描述为 "null or empty" - on_success.value / on_failure.value 填写具体值或值域描述,不要填写空字符串 5. 若函数无参数,parameters 填 {{}} 6. required 字段为布尔值 true 或 false """ # ── 代码生成 Prompt(含签名约束)───────────────────────── CODE_GEN_PROMPT_TEMPLATE = """ 你是一位资深 {language} 工程师。请根据以下功能需求和【函数签名规范】,生成完整的 {language} 函数代码。 {knowledge_section} ## 功能需求 标题:{title} 描述:{description} ## 【必须严格遵守】函数签名规范 以下 JSON 定义了函数的精确接口,生成的代码必须与之完全一致,不得擅自增减或改名参数: ```json {signature_json} ``` ### 签名字段说明 - `name`:函数名,必须完全一致 - `parameters`:每个 key 即为参数名,`type` 为数据类型,`inout` 含义: - `in` = 普通输入参数 - `out` = 输出参数(Python 中通过返回值或可变容器传出) - `inout` = 既作输入又作输出 - `return.type`:返回值类型 - `return.on_success`:成功时的返回值,代码实现必须与此一致 - `return.on_failure`:失败时的返回值或异常,代码实现必须与此一致 ## 输出要求 1. 只输出纯代码,不要包含 markdown 代码块标记 2. 函数签名(名称、参数列表、返回类型)必须与上方 JSON 规范完全一致 3. 成功/失败的返回值必须严格遵守 return.on_success / return.on_failure 的定义 4. 包含完整的类型注解(Python 使用 type hints) 5. 包含详细的 docstring,其中 Returns 段须注明成功值与失败值 6. 包含必要的异常处理 7. 代码风格遵循 PEP8(Python)或对应语言规范 8. 在文件顶部用注释注明:需求编号、功能标题、函数签名摘要 9. 如需导入第三方库,请在顶部统一导入 """