Files
autogen/config/llm_config.py
2026-03-12 13:27:03 +08:00

145 lines
4.2 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.

"""
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/ 目录
- 生成最终的项目总结报告
"""