"""用例7:多轮对话累积 —— 追踪连续多轮对话中延迟随上下文累积的变化""" from ..ollama_client import OllamaClient from .base import case_meta, make_result DEBUG_SCENARIOS = [ "修复Python中的索引越界错误", "修复JavaScript闭包变量捕获问题", "修复SQL注入漏洞", "修复多线程竞态条件", "修复递归栈溢出", "修复正则表达式灾难回溯", ] def run_test(client: OllamaClient, repeats: int = 1, stop_event=None) -> dict: """执行多轮对话累积测试(使用 /api/chat 累积上下文) repeats 控制总轮次数,每轮切换不同调试场景。 """ results = [] messages = [] for i in range(repeats): if stop_event and stop_event.is_set(): break scenario = DEBUG_SCENARIOS[i % len(DEBUG_SCENARIOS)] user_msg = f"(对话第{i + 1}轮)请协助:{scenario}。请简要给出你的分析。" messages.append({"role": "user", "content": user_msg}) infer = client.chat(messages, options={"temperature": 0.3, "num_predict": 120}) assistant_reply = infer.response messages.append({"role": "assistant", "content": assistant_reply}) results.append(make_result( infer, i + 1, round=i + 1, scenario=scenario, messages_in_context=len(messages), )) meta = case_meta( "case_07_multiturn", "多轮对话累积", "追踪连续多轮对话中延迟随上下文累积的变化", "耗时", 10, ) meta["results"] = results meta["total_rounds"] = len(results) return meta