50 lines
1.6 KiB
Python
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
|