第一次提交
This commit is contained in:
144
config/llm_config.py
Normal file
144
config/llm_config.py
Normal file
@@ -0,0 +1,144 @@
|
||||
"""
|
||||
LLM 配置文件 - 支持 Qwen3.5-flash 和阿里云 DashScope API
|
||||
"""
|
||||
import os
|
||||
from typing import Dict, List, Any
|
||||
|
||||
# 模型配置
|
||||
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY", "")
|
||||
DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
||||
|
||||
def get_llm_config(
|
||||
model: str = "qwen3.5-flash",
|
||||
api_key: str = None,
|
||||
base_url: str = None,
|
||||
temperature: float = 0.7,
|
||||
max_tokens: int = 4096
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
获取 LLM 配置
|
||||
|
||||
Args:
|
||||
model: 模型名称
|
||||
api_key: API Key,默认为环境变量
|
||||
base_url: API Base URL
|
||||
temperature: 温度参数
|
||||
max_tokens: 最大 token 数
|
||||
|
||||
Returns:
|
||||
LLM 配置字典
|
||||
"""
|
||||
config = {
|
||||
"config_list": [
|
||||
{
|
||||
"model": model,
|
||||
"api_key": api_key or DASHSCOPE_API_KEY,
|
||||
"base_url": base_url or DASHSCOPE_BASE_URL,
|
||||
"api_type": "openai",
|
||||
"temperature": temperature,
|
||||
"max_tokens": max_tokens,
|
||||
}
|
||||
],
|
||||
"cache_seed": None, # 禁用缓存以确保每次都是最新结果
|
||||
"timeout": 120, # 2 分钟超时
|
||||
}
|
||||
return config
|
||||
|
||||
|
||||
def get_agent_llm_config(
|
||||
agent_name: str = "default",
|
||||
**kwargs
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
获取特定 Agent 的 LLM 配置
|
||||
|
||||
Args:
|
||||
agent_name: Agent 名称(可用于不同 Agent 使用不同模型)
|
||||
**kwargs: 额外参数
|
||||
|
||||
Returns:
|
||||
LLM 配置字典
|
||||
"""
|
||||
# 可以为不同 Agent 配置不同的模型
|
||||
model_mapping = {
|
||||
"PM_Agent": "qwen3.5-flash",
|
||||
"QA_Agent": "qwen3.5-flash",
|
||||
"Dev_Agent": "qwen3.5-flash",
|
||||
"Orchestrator": "qwen3.5-flash",
|
||||
}
|
||||
|
||||
model = kwargs.get("model", model_mapping.get(agent_name, "qwen3.5-flash"))
|
||||
return get_llm_config(model=model, **kwargs)
|
||||
|
||||
|
||||
# 系统提示词模板
|
||||
PM_PROMPT = """你是一名资深软件产品经理,专注于汽车嵌入式系统领域。
|
||||
你的任务是将用户模糊的需求转化为结构化的《软件需求规格说明书 (SRS)》。
|
||||
|
||||
输出必须包含:
|
||||
1. 功能性需求列表(Functional Requirements)
|
||||
2. 非功能性需求(性能、安全、合规)
|
||||
3. 验收标准(Acceptance Criteria)
|
||||
4. 潜在风险与边缘情况
|
||||
|
||||
请遵循博世研发规范,确保需求清晰、可测试、可追溯。
|
||||
|
||||
输出格式要求:
|
||||
- 使用 Markdown 格式
|
||||
- 每个需求都有唯一 ID(如 FR-001, NFR-001, AC-001)
|
||||
- 包含版本号和日期
|
||||
- 保存为 workspace/SRS.md 文件
|
||||
"""
|
||||
|
||||
QA_PROMPT = """你是一名资深测试工程师,专注于自动化测试和 TDD 实践。
|
||||
你的任务是根据 SRS 文档生成:
|
||||
|
||||
1. Pytest 测试框架脚本(test_*.py)
|
||||
2. BDD 风格的测试场景描述(Given-When-Then)
|
||||
3. 测试覆盖率要求(目标:>80%)
|
||||
|
||||
确保测试先于代码存在,为开发设定明确的质量护栏。
|
||||
|
||||
输出格式要求:
|
||||
- 测试文件命名为 test_<feature>.py
|
||||
- 包含完整的测试夹具(fixtures)
|
||||
- 使用断言清晰的测试用例
|
||||
- 保存为 workspace/test_*.py 文件
|
||||
"""
|
||||
|
||||
DEV_PROMPT = """你是一名资深软件工程师,专注于汽车嵌入式 C++/Python 开发。
|
||||
你的任务是根据 SRS 和测试用例编写:
|
||||
|
||||
1. 核心业务逻辑代码
|
||||
2. 符合 MISRA-C 规范的代码(如果是 C++)
|
||||
3. 完整的文档字符串和类型注解
|
||||
4. 遵循 PEP 8 风格指南(Python)
|
||||
|
||||
严格遵守测试驱动开发原则:
|
||||
- 确保所有测试用例通过
|
||||
- 如果测试失败,分析原因并修复代码
|
||||
- 保持代码简洁、可读、可维护
|
||||
|
||||
输出格式要求:
|
||||
- 源文件命名为 src_<feature>.py 或 <feature>.cpp
|
||||
- 包含完整的 docstring
|
||||
- 添加类型注解
|
||||
- 保存为 workspace/ 目录下的相应文件
|
||||
"""
|
||||
|
||||
ORCH_PROMPT = """你是多智能体系统的协调器,负责:
|
||||
|
||||
1. 调度各 Agent 的工作顺序(PM → QA → Dev → Test → Verify)
|
||||
2. 收集并汇总各 Agent 的输出
|
||||
3. 检测测试失败时触发修复循环(Dev → Test → Dev...)
|
||||
4. 在关键节点请求人工确认
|
||||
5. 最终验证所有产出物的完整性
|
||||
|
||||
确保整个 SDLC 流程自动化且可控。
|
||||
|
||||
关键职责:
|
||||
- 监控流程进度
|
||||
- 识别并解决冲突
|
||||
- 确保所有文件正确生成在 workspace/ 目录
|
||||
- 生成最终的项目总结报告
|
||||
"""
|
||||
Reference in New Issue
Block a user