import random
import re
from dataclasses import dataclass


@dataclass
class Rule:
    pattern: re.Pattern
    responses: list[str]


PRONOUNS = {
    "我": "你",
    "我的": "你的",
    "你": "我",
    "你的": "我的",
}


def swap_pronouns(text: str) -> str:
    for source, target in PRONOUNS.items():
        text = text.replace(source, target)
    return text


class PatternBot:
    def __init__(self) -> None:
        self.rules = [
            Rule(re.compile(r".*我想(.+)"), ["为什么你想{slot}？", "如果真的{slot}，第一步是什么？"]),
            Rule(re.compile(r".*我担心(.+)"), ["你担心{slot}，这个担心来自哪里？", "把{slot}拆小一点，哪部分最需要处理？"]),
            Rule(re.compile(r".*Agent(.+)"), ["这个 Agent{slot}，需要观察什么环境？", "它是否需要调用真实工具？"]),
        ]

    def reply(self, message: str) -> str:
        for rule in self.rules:
            match = rule.pattern.match(message)
            if match:
                slot = swap_pronouns(match.group(1).strip())
                return random.choice(rule.responses).format(slot=slot)
        return random.choice(["继续说说。", "成功标准是什么？", "哪些信息是确定的？"])


if __name__ == "__main__":
    bot = PatternBot()
    for message in ["我想做一个学习 Agent", "我担心它会乱调用工具", "这个 Agent 应该帮我整理资料"]:
        print("用户：", message)
        print("机器人：", bot.reply(message))
