-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreateAgent.txt
More file actions
115 lines (81 loc) · 8.12 KB
/
createAgent.txt
File metadata and controls
115 lines (81 loc) · 8.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
有一个邮件消费的系统:系统的workflow如下:
# 邮件处理系统业务说明文档
## 一、邮箱文件夹结构
- inbox:这个是网易邮箱默认收件箱
- working:要被解析的邮件。这个文件夹里的邮件应该被及时消费,并移动到其他文件夹。不应该长时间卡在这个文件夹。
- ignore:根据业务推断,邮件直接从working移动到这里,这个里面的邮件不需要下一步解析。
- create:根据业务推断,邮件要对应创建一个ticket,创建之后邮件 移动到这里
- update: 根据业务推断,邮件要对应更新一个ticket,更新之后邮件 移动到这里
- error:整个程序运行过程中出现问题,则将邮件移动到error。
## 二、核心业务流程
1. emailservice读取inbox或者working文件夹里面的邮件,并根据相关逻辑创建或者更新ticket,之后再将邮件移动到相应的文件夹。
2. 根据业务逻辑进行处理:
- 创建ticket:调用API创建 -> 更新email表 -> 邮件移至create文件夹
- 更新ticket:调用API更新 -> 更新email表 -> 邮件移至update文件夹
- 忽略处理:更新email表 -> 邮件移至ignore文件夹
- 处理失败:处理解析邮件的环节出现错误并且被程序catch -> 更新email表 -> 邮件移至error文件夹
## 三、数据库表结构
### 1. email表
- id INT AUTO_INCREMENT PRIMARY KEY:主键
- emailId VARCHAR(255) NOT NULL:邮箱每个邮件的唯一ID
- subject VARCHAR(255):邮件主题
- sender VARCHAR(255):发送者的邮箱
- receiver VARCHAR(255):接收者的邮箱
- emailBody TEXT:邮件正文内容 和 附件的名字
- receiveTime DATETIME:邮件接收时间
- processed VARCHAR(255):处理状态描述。如果为F,表示该邮件未被处理,有两种情况 1.邮件处理过程出现错误。2.邮件可忽略,无需处理。
如果为Y,该邮件被处理成功,更新或者创建ticket成功。如果ticket_id为空,即使processed为Y,也说明邮件处理失败
如果为F,且ticket_id为空,说明邮件处理失败。若为F,但ticket_id存在有效值,也认为邮件处理成功,邮件移动到update或create即可。
- processed_state VARCHAR(255):处理状态。如果为I,表示该邮件根据业务逻辑判断,不需处理,可忽略,邮件应该移动到ignore文件夹(此时processed为F)。
如果为Y,该邮件被处理成功,更新或者创建ticket成功(此时processed为Y)。该邮件应该被移动到update或者create文件夹
如果为F,该邮件被处理失败,更新或者创建ticket失败(此时processed为N),且ticket_id不存在有效值。该邮件应该被移动到error文件夹。
- error_message VARCHAR(5000):错误信息,在处理解析邮件的过程中出现的错误会记录在这个字段,这个字段对分析邮件处理失败的原因至关重要。
- create_ticket VARCHAR(255):如果create_ticket = Y 并且 ticket_id存在值,那么说明该邮件创建ticket成功;
如果create_ticket = N 或者为空,那么说明该邮件创建ticket失败;但是如果ticket_id有类似"X34 update!"的值,说明这是更新ticket的操作。
- ticket_id VARCHAR(255):工单ID,如果该邮件对应创建工单,则该字段会填充类似"XM202503171535"的值;
如果是更新工单则类似"XM202503171535 update!";该字段有值代表ticket创建或更新已经成功。
- update_time DATETIME DEFAULT CURRENT_TIMESTAMP:更新时间
目前存在的问题:
inbox或者working文件夹里面的邮件正常情况下应该被及时消费,然后移动到相关的其他文件夹,不应该滞留在这。但是由于各种原因邮件会被stuck在inbox或者working。
开发人员需要分析改邮件相关的系统消费log,以及数据库email表的内容,分析原因,并进行相关的操作。
你的任务是:
你需要帮我构建一个监控系统agent,具备提取相关log、查询数据库表信息,综合分析最终问题的能力。你可以根据任务自动编排任务,查找相关的信息,分析原因。
我会给你两个文件 background.txt actionGuidance.txt
你可以参照background.txt 学习怎么分析问题,这对你编排任务 调用工具有帮助。
你可以参照actionGuidance.txt 给出期望的输出内容和格式。
注意你要通过agent的方式帮我构建系统,不用只采用llm,一次输出结果的方式。 应该构建不同的工具,agent根据情况 自行调用解决问题
查询log, 查询数据库,两个工具可以写家的,可以直接return字符串,但是要仿照真实数据,要像log 像数据库查询结果。
帮我增加一个sql查询的tool,他的输入是 sql语句,返回是查询结果。
下面是我的数据库配置,你通过帮我做好数据库配置。
spring.datasource.url=jdbc:mysql://localhost:3306/pir?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=zznewQQ031578
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
帮我做一个email表记录查询的sql语句构造工具,输入是emailID 返回的是sql语句。
我的email表完整信息如下:
id int 0 0 False False True 0 0 False False False True False False
emailId varchar 255 0 False False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
subject varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
sender varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
receiver varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
emailBody text 0 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
receiveTime datetime 0 0 True False False 0 0 False False False False False False
processed varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
processed_state varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
error_message varchar 5000 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
create_ticket varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
ticket_id varchar 255 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
update_time datetime 0 0 True False False 0 CURRENT_TIMESTAMP 0 False True False False False False
帮我做一个ticket表记录查询的sql语句构造工具,输入是ticketID 返回的是sql语句。
我的ticket表完整信息如下:
id int 0 0 False False True 0 0 False False False True False False
ticket_id varchar 255 0 False False False 0 XM开头的工单号 utf8mb3 utf8mb3_general_ci 0 False False False False False False
subject varchar 500 0 False False False 0 邮件主题 utf8mb3 utf8mb3_general_ci 0 False False False False False False
note longtext 0 0 True False False 0 utf8mb3 utf8mb3_general_ci 0 False False False False False False
update_count int 0 0 True False False 0 0 更新次数,首次创建为1 0 False False False False False False
update_time datetime 0 0 True False False 0 CURRENT_TIMESTAMP 更新时间 0 False True False False False False
attachments varchar 1000 0 True False False 0 附件ID列表,多个ID用逗号分隔 utf8mb3 utf8mb3_general_ci 0 False False False False False False
帮我做一个log记录查询的sql语句构造工具,输入是log文件名 和关键词, 返回的是相关的log信息。(log路径C:\Users\Jay\Desktop\PIR\Service\LLM-backup\logs)
针对上面几个工具写单独的测试文件,来测试tool的可用性。tool写在tools.py里面。
测试文件采用大模型测试,你的输入指令是“帮我查询emailid=123,ticketid为156,log名为 ttt 关键词为 你好的log” 让大模型意图识别 自动调用工具。
不要修改emailmonitoragent文件