AIDeveloper-PC/requirements_generator/config.py

123 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# config.py - 全局配置
import os
from dotenv import load_dotenv
load_dotenv()
# ── LLM ──────────────────────────────────────────────
LLM_API_KEY = os.getenv("OPENAI_API_KEY", "")
LLM_API_BASE = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
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"))
# ── 数据库 ────────────────────────────────────────────
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")
DEFAULT_MODULE = os.getenv("DEFAULT_MODULE", "default")
# ── Prompt 模板 ───────────────────────────────────────
DECOMPOSE_PROMPT_TEMPLATE = """\
你是一名资深软件架构师,请将以下原始需求分解为独立的功能需求列表。
【原始需求】
{raw_requirement}
{knowledge_section}
【输出要求】
以 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"
}}
]
只输出 JSON 数组,不要有任何额外说明。
"""
FUNC_SIGNATURE_PROMPT_TEMPLATE = """\
你是一名资深软件工程师,请根据以下功能需求生成标准函数签名信息。
【功能需求】
- 需求编号: {requirement_id}
- 标题: {title}
- 描述: {description}
- 函数名: {function_name}
- 所属模块: {module}
{knowledge_section}
【输出要求】
以 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 对象,不要有任何额外说明。
"""
CODE_GEN_PROMPT_TEMPLATE = """\
你是一名资深 {language} 工程师,请根据以下函数签名和功能描述生成完整的函数实现代码。
【函数签名】
{signature_json}
【功能描述】
{description}
{knowledge_section}
【输出要求】
1. 只输出 {language} 代码,不要有任何 Markdown 标记(不要 ```
2. 包含完整的函数实现(含必要的 import
3. 包含函数文档注释docstring / JSDoc 等)
4. 包含基本的参数校验与错误处理
5. 代码风格遵循 {language} 最佳实践
"""
MODULE_CLASSIFY_PROMPT_TEMPLATE = """\
你是一名资深软件架构师,请将以下功能需求列表分类到合适的功能模块中。
【功能需求列表】
{requirements_json}
【输出要求】
以 JSON 数组格式输出,每个元素包含:
- function_name: 函数名(与输入一致)
- module: 所属模块名称snake_case如 user_auth / order_service / payment
模块划分原则:
1. 功能相近的需求归入同一模块
2. 模块名使用英文 snake_case
3. 模块数量控制在 2~8 个之间
4. 若某需求确实无法归类,使用 "default" 模块
只输出 JSON 数组,不要有任何额外说明。
"""