Files
autogen/config/llm_config.py

145 lines
4.2 KiB
Python
Raw Normal View History

2026-03-12 13:27:03 +08:00
"""
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/ 目录
- 生成最终的项目总结报告
"""