Files

50 lines
1.6 KiB
Python

"""用例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