Chatbot 模块说明¶
- class chatbot.ChatbotDSL¶
Bases:
object保存 DSL 解析结果和对话上下文的核心类。
- config¶
全局配置项,如 ‘case_sensitive’ 等。
- Type:
dict
- variables¶
脚本中定义的全局变量,键为变量名,值为对应变量值。
- Type:
dict
- current_state¶
当前处于的状态名称,初始为空或由解析过程设定。
- Type:
str
- class chatbot.Rule(rule_name, match_expression, response_text, next_state=None)¶
Bases:
object代表一个匹配规则,对应 DSL 中的 RULE 块或 DEFAULT 块。
- rule_name¶
规则名称(可选,DEFAULT 块可特殊命名或保持为空)。
- Type:
str
- match_expression¶
用户输入的匹配表达式,可能是字符串或正则。
- Type:
str | None
- response_text¶
响应文本,可包含变量占位符如 ${var_name}。
- Type:
str
- next_state¶
跳转到下一个状态名称,若为空则不跳转。
- Type:
str | None
- chatbot.interpret_input(dsl, user_input) str¶
根据用户输入和 DSL 的当前状态,获取回复并更新状态。
根据 dsl.current_state 找到相应 State,对其所有 Rule 的 match_expression 进行匹配(可根据 dsl.config 中的大小写设置进行处理)。 如果匹配成功,则返回对应的 response_text,并可跳转到下一状态; 若无任何 Rule 命中,则使用 default_rule 的回应文本。
- Parameters:
dsl (ChatbotDSL) – 已解析好的 DSL 对象,内部保存对话当前状态和所有规则。
user_input (str) – 用户的输入文本。
- Returns:
机器人给出的回复。
- Return type:
str
- chatbot.parse_script(script_text) ChatbotDSL¶
解析 DSL 脚本,生成 ChatbotDSL 对象。
该函数会读取脚本中的 CONFIG、VAR、STATE、RULE、DEFAULT 等语法结构, 并将其保存到 ChatbotDSL 内的 config、variables、states 等数据结构中。
- Parameters:
script_text (str) – 完整的 DSL 文本。
- Returns:
包含解析结果的对象。
- Return type:
- Raises:
SyntaxError – 当脚本语法不符合预期时,可抛出此错误。
- chatbot.substitute_variables(response_text, variables_dict) str¶
将文本中的占位符 ${var_name} 替换为全局变量中的值。
如果在文本中找到 ${bankName},则用 variables_dict[‘bankName’] 替换。 若变量不存在,则默认保留原占位符(如返回 ${unknown})。
- Parameters:
response_text (str) – 需要替换占位符的文本。
variables_dict (dict) – 全局变量键值对。
- Returns:
替换变量占位符后的文本。
- Return type:
str