from dataclasses import dataclass


@dataclass
class LLMMessage:
    role: str
    content: str


class OfflineLLMClient:
    """A deterministic teaching client with the same shape as a chat LLM."""

    def __init__(self) -> None:
        self.calls = 0

    def complete(self, messages: list[LLMMessage]) -> str:
        self.calls += 1
        prompt = "\n".join(message.content for message in messages)
        if "Plan-and-Solve" in prompt or "规划" in prompt:
            return "1. 收集事实\n2. 计算关键数值\n3. 汇总答案"
        if "Reflection" in prompt or "审查" in prompt:
            return "反馈：答案需要补充验证步骤，并说明工具结果来自哪里。"
        if "Action:" in prompt and "calculator" not in prompt:
            return "Thought: 需要先计算。\nAction: calculator\nAction Input: 18 * 7 + 6"
        if "Observation:" in prompt:
            return "Thought: 已获得观察结果。\nFinal Answer: 结果是 132。"
        return "这是离线模型回复。"


if __name__ == "__main__":
    client = OfflineLLMClient()
    print(client.complete([LLMMessage("user", "Plan-and-Solve：分析一个任务")]))
