分析任务是单阶段还是多阶段 Args: task_description: 任务描述 planner_client: Planner客户端 planner_model: Planner模型名称 experience_results: 经验检索结果(可选) temperature: 采样温度 Returns: (is_multi_stage, reason): (是否多阶段, 原因说明)
(
task_description: str,
planner_client: OpenAI,
planner_model: str,
experience_results: str = "",
temperature: float = 0.0
)
| 213 | |
| 214 | |
| 215 | def analyze_task( |
| 216 | task_description: str, |
| 217 | planner_client: OpenAI, |
| 218 | planner_model: str, |
| 219 | experience_results: str = "", |
| 220 | temperature: float = 0.0 |
| 221 | ) -> Tuple[bool, Optional[str]]: |
| 222 | """ |
| 223 | 分析任务是单阶段还是多阶段 |
| 224 | |
| 225 | Args: |
| 226 | task_description: 任务描述 |
| 227 | planner_client: Planner客户端 |
| 228 | planner_model: Planner模型名称 |
| 229 | experience_results: 经验检索结果(可选) |
| 230 | temperature: 采样温度 |
| 231 | |
| 232 | Returns: |
| 233 | (is_multi_stage, reason): (是否多阶段, 原因说明) |
| 234 | """ |
| 235 | |
| 236 | # 判断多任务、单任务较简单,不使用经验 |
| 237 | prompt = PLANNER_TASK_ANALYSIS_PROMPT.format( |
| 238 | task_description=task_description |
| 239 | ) |
| 240 | |
| 241 | logging.info(f"任务分析prompt: \n{prompt}") |
| 242 | |
| 243 | response = planner_client.chat.completions.create( |
| 244 | model=planner_model, |
| 245 | messages=[{"role": "user", "content": prompt}], |
| 246 | temperature=temperature |
| 247 | ) |
| 248 | |
| 249 | response_str = response.choices[0].message.content |
| 250 | logging.info(f"任务分析响应: \n{response_str}") |
| 251 | |
| 252 | try: |
| 253 | result = parse_planner_response(response_str) |
| 254 | |
| 255 | # 解析task_type字段 |
| 256 | task_type = result.get("task_type", "single") |
| 257 | is_multi = (task_type == "multi") |
| 258 | reason = result.get("reasoning", "") |
| 259 | |
| 260 | return is_multi, reason |
| 261 | except Exception as e: |
| 262 | logging.error(f"解析任务分析响应失败: {e}") |
| 263 | # 默认返回单阶段 |
| 264 | return False, None |
| 265 | |
| 266 | |
| 267 | def generate_plan( |
no test coverage detected