Eliot0110 commited on
Commit
303c885
·
1 Parent(s): 2c6e1d9

improve: classifier prompt

Browse files
Files changed (1) hide show
  1. modules/intent_classifier.py +31 -7
modules/intent_classifier.py CHANGED
@@ -14,20 +14,44 @@ class IntentClassifier:
14
  def _build_prompt(self, message: str) -> str:
15
  """构建用于意图分类的、轻量级的Prompt。"""
16
  return f"""
17
- 你的任务是分析用户的单条消息,并判断其意图。
18
- 请从以下几个意图中选择一个最匹配的,并且只返回这个意图的字符串,不要添加任何其他解释或标点符号。
19
 
20
- 可用意图:
21
- - PROVIDING_TRAVEL_INFO: 用户明确提到了旅行相关的具体信息,如目的地、时间、预算、人数等。例如:"我想去巴黎玩一周" 或 "预算5000块钱"。
22
- - GREETING: 用户只是在打招呼或进行简单的问候。例如:"你好", "hi", "在吗?"。
23
- - OTHER: 不属于以上任何一种的通用查询或闲聊。例如:"法国有什么好玩的?" 或 "帮我订票"。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  用户消息:
26
  ---
27
  {message}
28
  ---
29
 
30
- 你的判断结果 (请只返回一个意图字符串):
31
  """
32
 
33
  def classify(self, message: str) -> str:
 
14
  def _build_prompt(self, message: str) -> str:
15
  """构建用于意图分类的、轻量级的Prompt。"""
16
  return f"""
17
+ # 角色
18
+ 你是一个专业的旅行助手对话意图分类器。
19
 
20
+ # 任务
21
+ 你的任务是分析用户的单条消息,并从以下类别中选择最符合用户核心意图的一个类别。你必须严格遵循“意图优先级”规则。
22
+
23
+ # 意图类别定义
24
+ - PROVIDING_TRAVEL_INFO: 用户明确提供了关于旅行计划的具体信息,如目的地、预算、时长、旅行同伴、兴趣点等。这是需要提取信息的最高优先级意图。
25
+ - INQUIRY: 用户在主动询问旅行建议、信息或请求帮助,但没有提供具体计划信息。例如:"法国有什么好玩的?" 或 "帮我规划一下行程"。
26
+ - GREETING: 用户主要在表达问候、打招呼或进行简单的寒暄。例如:"你好", "hi", "在吗?"。
27
+ - OTHER: 不属于以上任何一种的通用查询、闲聊或无法识别的意图。
28
+
29
+ # 核心规则:意图优先级
30
+ 当用户输入包含多种意图时,必须遵循以下优先级顺序进行分类:
31
+ PROVIDING_TRAVEL_INFO > INQUIRY > GREETING > OTHER
32
+
33
+ 这意味着:
34
+ 1. 只要用户提到了任何具体的旅行计划信息(地点、时间、预算等),意图就必须是 PROVIDING_TRAVEL_INFO。
35
+ 2. 如果没有提供具体信息,但有提问,意图就是 INQUIRY。
36
+ 3. 只有在几乎纯粹是打招呼时,意图才是 GREETING。
37
+
38
+ # 示例
39
+ - 用户输入: "你好,我想去东京玩" -> 分类: PROVIDING_TRAVEL_INFO
40
+ - 用户输入: "Hi, 巴黎有什么推荐的吗?" -> 分类: INQUIRY
41
+ - 用户输入: "周末愉快!" -> 分类: GREETING
42
+ - 用户输入: "我们预算不多,大概3000元,目的地是成都。" -> 分类: PROVIDING_TRAVEL_INFO
43
+ - 用户输入: "你好在吗" -> 分类: GREETING
44
+ - 用户输入: "随便聊聊" -> 分类: OTHER
45
+
46
+ # 分析与决策
47
+ 请分析以下用户消息,并根据上述规则做出唯一的意图判断。
48
 
49
  用户消息:
50
  ---
51
  {message}
52
  ---
53
 
54
+ 你的判断结果 (请只返回一个意图字符串: PROVIDING_TRAVEL_INFO, INQUIRY, GREETING, 或 OTHER):
55
  """
56
 
57
  def classify(self, message: str) -> str: