AIDeveloper-PC/requirements_generator/config.py

125 lines
4.4 KiB
Python
Raw Permalink Normal View History

2026-03-05 05:38:26 +00:00
# config.py - 全局配置
2026-03-04 18:09:45 +00:00
import os
from dotenv import load_dotenv
load_dotenv()
2026-03-05 05:38:26 +00:00
# ── LLM ──────────────────────────────────────────────
2026-03-05 09:24:49 +00:00
LLM_API_KEY = os.getenv("OPENAI_API_KEY", "")
LLM_API_BASE = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
2026-03-05 05:38:26 +00:00
LLM_MODEL = os.getenv("LLM_MODEL", "gpt-4o")
LLM_TIMEOUT = int(os.getenv("LLM_TIMEOUT", "60"))
LLM_MAX_RETRY = int(os.getenv("LLM_MAX_RETRY", "3"))
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
# ── 数据库 ────────────────────────────────────────────
DB_PATH = os.getenv("DB_PATH", "data/requirement_analyzer.db")
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
# ── 输出目录 ──────────────────────────────────────────
2026-03-04 18:09:45 +00:00
OUTPUT_BASE_DIR = os.getenv("OUTPUT_BASE_DIR", "output")
DEFAULT_LANGUAGE = os.getenv("DEFAULT_LANGUAGE", "python")
2026-03-05 05:38:26 +00:00
DEFAULT_MODULE = os.getenv("DEFAULT_MODULE", "default")
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
# ── Prompt 模板 ───────────────────────────────────────
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
DECOMPOSE_PROMPT_TEMPLATE = """\
你是一名资深软件架构师请将以下原始需求分解为独立的功能需求列表
原始需求
{raw_requirement}
2026-03-04 18:09:45 +00:00
{knowledge_section}
2026-03-05 05:38:26 +00:00
输出要求
JSON 数组格式输出每个元素包含以下字段
- title: 功能标题简短10字以内
- description: 功能描述详细说明该功能的职责与边界50字以内
- function_name: 对应的函数名snake_case动词开头
- priority: 优先级high / medium / low
- module: 所属功能模块名称snake_case user_auth / order_service
示例输出
[
{{
"title": "用户注册",
"description": "接收用户名、密码、邮箱校验合法性后创建用户账号并返回用户ID",
"function_name": "register_user",
"priority": "high",
"module": "user_auth"
}}
]
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
只输出 JSON 数组不要有任何额外说明
2026-03-04 18:09:45 +00:00
"""
2026-03-05 05:38:26 +00:00
FUNC_SIGNATURE_PROMPT_TEMPLATE = """\
你是一名资深软件工程师请根据以下功能需求生成标准函数签名信息
功能需求
- 需求编号: {requirement_id}
- 标题: {title}
- 描述: {description}
- 函数名: {function_name}
- 所属模块: {module}
2026-03-04 18:09:45 +00:00
{knowledge_section}
2026-03-05 05:38:26 +00:00
输出要求
JSON 对象格式输出包含以下字段
- name: 函数名与上方一致
- requirement_id: 需求编号
- description: 函数功能描述英文一句话
- type: 固定为 "function"
- module: 所属模块名称
- parameters: 参数字典key 为参数名value 包含
- type: 数据类型integer/string/boolean/float/list/dict/object/void/any
- inout: in / out / inout
- required: true / false
- description: 参数说明
- return:
- type: 返回类型
- on_success: {{ "value": "...", "description": "..." }} nullvoid
- on_failure: {{ "value": "...", "description": "..." }} nullvoid
只输出 JSON 对象不要有任何额外说明
2026-03-04 18:09:45 +00:00
"""
2026-03-05 05:38:26 +00:00
CODE_GEN_PROMPT_TEMPLATE = """\
你是一名资深 {language} 工程师请根据以下函数签名和功能描述生成完整的函数实现代码
函数签名
{signature_json}
功能描述
{description}
2026-03-04 18:09:45 +00:00
{knowledge_section}
2026-03-05 05:38:26 +00:00
输出要求
1. 只输出 {language} 代码不要有任何 Markdown 标记不要 ```
2. 包含完整的函数实现含必要的 import
3. 包含函数文档注释docstring / JSDoc
4. 包含基本的参数校验与错误处理
5. 代码风格遵循 {language} 最佳实践
"""
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
MODULE_CLASSIFY_PROMPT_TEMPLATE = """\
你是一名资深软件架构师请将以下功能需求列表分类到合适的功能模块中
2026-03-04 18:09:45 +00:00
2026-03-05 05:38:26 +00:00
功能需求列表
{requirements_json}
输出要求
JSON 数组格式输出每个元素包含
- function_name: 函数名与输入一致
- module: 所属模块名称snake_case user_auth / order_service / payment
模块划分原则
1. 功能相近的需求归入同一模块
2. 模块名使用英文 snake_case
3. 模块数量控制在 2~8 个之间
4. 若某需求确实无法归类使用 "default" 模块
只输出 JSON 数组不要有任何额外说明
2026-03-05 09:24:49 +00:00
"""
CHANGE_HISTORY_FILE = "change_history.json"