【AI-Coze工作流】利用Coze平台搭建自定义工作流完成特定任务

写在前面 / 链接存档

利用Coze(国内版叫扣子)搭建的部分工作流完成自定义的任务

问题提取和意图识别工作流Intent_Recognition

我靠突然发现跟着教程做的示例工作流比我做的好。。自闭了

那我不做了。。。就用教程做的8

  • Intent_Recognition工作流总体概览

Intent_Recognition工作流总体概览


以下都是我自己的尝试了,虽然出来的效果没那么好

1. 意图识别

因为搭建之前没看到插件栏有专门的【意图识别】插件,所以想用【大模型】插件自己搭一个,遂有了以下的prompt

写(改之前的)完prompt才发现已经有【意图识别】的崩溃谁懂。。我好傻。。。。

  • 一种方法:使用大模型组件搭配提示词进行意图识别
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
DEFINE ROLE AS "NLP专家":
知识领域 = ["语言学", "文旅", "人工智能"]
技能 = ["自然语言理解", "信息提取", "情感分析", "意图识别", "知识推理", "上下文关联学习", "实体识别"]
经验 = "资深"
任务 = "对文本进行意图识别,提取用户输入的关键部分,将其用精炼的语言进行总结"


# 进行意图分类和这个意图对应的调用内容
intention_category_infos = [
{
"category": "景区信息",
"description": "景区信息详细介绍,包括景区简介、地理位置、景区评级、交通指南、购票信息、服务设施、安全措施、营业时间、景区特色、游玩须知和退改规则。",
"sentiment_category_infos": [
{
"category": "景区简介",
"description": "对景区的总体介绍,包括历史背景、文化价值、主要景点等,帮助游客快速了解景区的基本情况。必须丰富详细,文字不得少于500字。"
},
{
"category": "地理位置",
"description": "描述景区所在的地理位置,通常包含城市、县区、具体地址等信息,以便游客规划行程。该信息必须准确和详细。"
},
{
"category": "景区评级",
"description": "根据国家或地方旅游局评定的等级,如AAAAA级、AAAA级等,反映景区的服务质量和管理水平。该评级信息必须包含景区评级时间、服务质量评价等。"
},
{
"category": "交通指南",
"description": "提供到达景区的各种交通方式的信息(外地游客和本地游客),包括自驾路线、公共交通线路(公交、地铁)、出租车及网约车建议等。其中线路必须保证准确性,公共交通线路需要包含路程大致时间。"
},
{
"category": "购票信息",
"description": "详细列出购票渠道、票价种类(成人票、学生票、老人票等)、优惠信息等,方便游客提前准备。不要只是简单的回答票的价格,用大模型将回答内容丰富。"
},
{
"category": "服务设施",
"description": "列举景区内提供的各项服务设施,如停车场、餐饮服务、休息区、卫生间、行李寄存处等,提升游客体验。不要只是简单的回答服务设施,请将服务设施的使用提示加上,用大模型将回答内容丰富。"
},
{
"category": "安全措施",
"description": "介绍景区采取的安全管理措施,例如监控系统、急救站点、消防设备等,确保游客的人身财产安全。内容丰富详实。"
},
{
"category": "营业时间",
"description": "公布景区对外开放的具体时间段,包括旺季和淡季可能存在的不同开放时间,以及特殊日期是否闭馆等信息。不要只是简单的时间安排,需要加入客服一样的温馨提示。"
},
{
"category": "景区特色",
"description": "突出展示景区独有的自然景观、人文景观、活动项目等特色,吸引不同兴趣爱好的游客。着重描述景区特色,要求文字丰富,可以加入景区小故事。"
},
{
"category": "游玩须知",
"description": "向游客传达在游览过程中需要注意的事项,比如禁止携带物品、行为规范、环境保护要求等。按照每个点进行介绍,内容丰富详实。"
},
{
"category": "退改规则",
"description": "明确票务的退换政策,包括退票截止时间、手续费、改签条件等,保障消费者的权益。按照每个点进行介绍,内容丰富详实。"
}
]
}
]


# 判断文本表达的情感是否符合给定的情感类别描述
def match_description(context, description):
"""
Step1: 一步步思考,仔细分析并理解${context}的特征和含义,判断是否和${description}的描述具有较高的相似度和重合度。
Step2: 给出你判断的思考路径${thought},在思考路径下给出你将${context}分类为${category}的理由。
Step3:根据你Step1的判断结果和Step2的分类理由,给出每个{category}对应的置信度${confidence},置信度的取值范围为:0 <= confidence <= 1。
"""
return confidence


# 根据文本表达的意图分类,并返回对应的意图类别
def classify(context, intention_category_infos):
# 初始化最高置信度
max_confidence = 0

# 遍历所有的类别及其描述
for intention_category_info in intention_category_infos:
# 获取当前类别的置信度
confidence = match_description(context, sentiment_category_info["description"])

# 如果当前置信度高于之前的最高置信度,更新分类结果
if confidence > max_confidence:
max_confidence = confidence
category = sentiment_category_info["category"]

return {"classify_result": category}

MAIN PROCESS:
# 初始化文本变量,作为输入数据
context = 读取("""{ {input} }""")

# 执行分类任务,输出分类结果
classify(context, intention_category_infos)

执行工作流程,严格按照json格式输出MAIN PROCESS的分类结果,禁止附加任何的解释和文字描述:

在classify步骤的额外想法:

​ ()Step4:根据Step3运行结果,生成{category}:{confidence}键值对,然后根据{confidence}从高到低的排序,返回对应的{category},取前五个{category}生成数组{categories}并返回

想法原因:当游客问一个问题,除了匹配和回答问题本身,还可以根据大量的关联可能性为用户提供其可能提问的其他问题,提供思维辐射链,减少游客的思考成本和提问成本,轻松达成“一次提问,一站解决”的问答效果。

  • 另一种方法:使用【意图识别】组件

意图识别插件的内部结构和所需参数

以下为【意图识别】插件内部结构中【意图匹配】部分需要的意图分类

1
2
3
4
5
6
7
8
9
10
11
景区简介
地理位置
景区评级
交通指南
购票信息
服务设施
安全措施
营业时间
景区特色
游玩须知
退改规则

以下为【意图识别】插件中【高级设置】的预设文本内容

也就是对于意图匹配类型的具体说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1.景区简介
- 对景区的总体介绍,包括历史背景、文化价值、主要景点等,帮助游客快速了解景区的基本情况。(必须丰富详细,文字不得少于 500 字)
2.地理位置
- 描述景区所在的地理位置,通常包含城市、县区、具体地址等信息,以便游客规划行程。(该信息必须准确和详细)
3.景区评级
- 根据国家或地方旅游局评定的等级,如 AAAAA 级、AAAA 级等,反映景区的服务质量和管理水平。(该评级信息必须包含景区评级时间、服务质量评价等)
4.交通指南
- 提供到达景区的各种交通方式的信息(外地游客和本地游客),包括自驾路线、公共交通线路(公交、地铁)、出租车及网约车建议等。(其中线路必须保证准确性,公共交通线路需要包含路程大致时间)
5.购票信息
- 详细列出购票渠道、票价种类(成人票、学生票、老人票等)、优惠信息等,方便游客提前准备。(不要只是简单的回答票的价格,用大模型将回答内容丰富)
6.服务设施
- 列举景区内提供的各项服务设施,如停车场、餐饮服务、休息区、卫生间、行李寄存处等,提升游客体验。(不要只是简单的回答服务设施,请将服务设施的使用提示加上,用大模型将回答内容丰富)
7.安全措施
- 介绍景区采取的安全管理措施,例如监控系统、急救站点、消防设备等,确保游客的人身财产安全。(内容丰富详实)
8.营业时间
- 公布景区对外开放的具体时间段,包括旺季和淡季可能存在的不同开放时间,以及特殊日期是否闭馆等信息。(不要只是简单的时间安排,需要加入客服一样
的温馨提示)
9.景区特色
- 突出展示景区独有的自然景观、人文景观、活动项目等特色,吸引不同兴趣爱好的游客。(着重描述景区特色,要求文字丰富,可以加入景区小故事)
10.游玩须知
- 向游客传达在游览过程中需要注意的事项,比如禁止携带物品、行为规范、环境保护要求等。(按照每个点进行介绍,内容丰富详实)
11.退改规则
- 明确票务的退换政策,包括退票截止时间、手续费、改签条件等,保障消费者的权益。(按照每个点进行介绍,内容丰富详实)

2.提取和总结用户输入内容

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
# 进行用户输入内容的提取和总结
category_infos = [
{
"category": "景区信息",
"description": "景区信息提取,包括景区的基本情况、地理位置、交通方式、票务信息等。",
"key_points": [
{
"category": "景区简介",
"description": "提取景区的总体介绍,包括历史背景、文化价值、主要景点等,简洁概括景区的基本情况。"
},
{
"category": "地理位置",
"description": "提取景区所在的地理位置,包含城市、县区、具体地址等信息,简要说明。"
},
{
"category": "景区评级",
"description": "提取景区的服务评级,如AAAAA级等,概括评级信息并附上时间和评价。"
},
{
"category": "交通指南",
"description": "提取到达景区的交通方式信息,包括自驾路线、公共交通等,简要概述交通方式。"
},
{
"category": "购票信息",
"description": "提取购票渠道、票价种类、优惠信息等,简洁说明购票情况。"
},
{
"category": "服务设施",
"description": "提取景区内提供的服务设施,如停车场、餐饮、卫生间等,并给出使用提示。"
},
{
"category": "安全措施",
"description": "提取景区的安全管理措施,包括监控、急救站点、消防设备等,概括安全保障措施。"
},
{
"category": "营业时间",
"description": "提取景区的开放时间,并提供相关的温馨提示。"
},
{
"category": "景区特色",
"description": "提取景区的独特特色,包括自然景观、人文景观、活动项目等,简要总结景区的亮点。"
},
{
"category": "游玩须知",
"description": "提取景区游玩过程中需要注意的事项,如禁带物品、行为规范等,简要总结。"
},
{
"category": "退改规则",
"description": "提取景区票务的退换政策,包括退票截止时间、手续费等,简洁概述退改规则。"
}
]
}
]

# 提取文本中的关键内容并进行总结
def extract_and_summarize(context, category_infos):
"""
Step1: 分析并提取用户输入文本中的关键信息,将每个类别的关键信息提炼出来。
Step2: 根据每个类别的描述和内容,进行总结,确保简洁和重点突出。
Step3: 输出提炼后的结果。
"""
extracted_info = {}

# 遍历所有类别及其描述
for category_info in category_infos:
category = category_info["category"]
key_points = category_info["key_points"]

# 对每个关键点进行提取和总结
for key_point in key_points:
key_point_category = key_point["category"]
key_point_description = key_point["description"]
# 提取并总结关键信息
summarized_info = summarize_text(context, key_point_description)
extracted_info[key_point_category] = summarized_info

return extracted_info

# 进行文本总结的辅助函数
def summarize_text(context, description):
"""
Step1: 根据描述,提取用户文本中的关键信息。
Step2: 将关键信息进行总结,简洁表达。
"""
# 此处根据具体需求进行摘要提取逻辑的实现
summarized_text = "总结后的信息"
return summarized_text

MAIN PROCESS:
# 初始化文本变量,作为输入数据
context = 读取("""{ {input} }""")

# 执行提取和总结任务,输出结果
extracted_info = extract_and_summarize(context, category_infos)
输出总结结果:{extracted_info}

网页内容搜索+提取工作流search_test

核心骨架部分(我自己的)

  • 核心功能插件:LinkReaderPlugin

    Coze官方出品的插件,在多个通过链接读取网页内容的类似插件中成功率最高

网页内容提取工作流-核心骨架部分

可优化部分(我自己的)

  • 感觉跟着教程做的search_test比我自己的好。。我退下了

核心骨架部分(跟着教程做的search_test)

核心骨架部分(跟着教程做的search_test)

关键模块1:必应搜索插件

  • 插件详情界面与参数展示

关键模块1:必应搜索插件

  • 试运行结果

必应搜索插件-试运行结果

关键模块2:代码模块

  • 代码模块嵌入代码一览
1
2
3
4
5
6
7
8
9
10
11
import json
import re

async def main(args: dict) -> Output:
parsed_data = json.loads(args.params['input'])
for item in parsed_data:
regex = r"link:(http[s]?://[^\s]+)"
match = re.search(regex, item)
if match:
return {"url": match.group(1).replace('\n','')}
return {"url": ""}
  • 代码作用(代码解释来自:腾讯元宝)
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
这段代码定义了一个异步函数 `main`,它接受一个字典类型的参数 `args` 并返回一个字典类型的结果。这个函数的主要作用是从输入的 JSON 数据中提取出包含链接(URL)的信息。

以下是对代码的详细解释:

### 导入模块
​```python
import json
import re
​```
- `json` 模块用于解析和处理 JSON 格式的数据。
- `re` 模块用于处理正则表达式。

### 定义异步函数 `main`
​```python
async def main(args: dict) -> Output:
​```
- `async def` 定义了一个异步函数。
- `args: dict` 表示函数的参数是一个字典。
- `-> Output` 表示函数的返回类型是 `Output`(假设 `Output` 是一个已定义的类型)。

### 解析 JSON 数据
​```python
parsed_data = json.loads(args.params['input'])
​```
- `args.params['input']` 假设是从外部传入的 JSON 字符串。
- `json.loads` 将 JSON 字符串解析为 Python 对象(在这个例子中是一个列表)。

### 遍历解析后的数据
​```python
for item in parsed_data:
​```
- 遍历解析后的数据列表中的每一个元素。

### 使用正则表达式查找链接
​```python
regex = r"link:(http[s]?://[^\s]+)"
match = re.search(regex, item)
​```
- `regex` 是一个正则表达式字符串,用于匹配形如 `link:http://example.com` 或 `link:https://example.com` 的文本。
- `re.search` 在当前元素 `item` 中查找匹配正则表达式的子串。

### 提取并返回链接
​```python
if match:
return {"url": match.group(1).replace('\n','')}
​```
- 如果找到了匹配的链接,则使用 `match.group(1)` 提取出链接部分。
- `replace('\n','')` 用于去除链接中的换行符(如果有)。
- 返回一个包含提取出的链接的字典 `{"url": ...}`。

### 如果没有找到链接
​```python
return {"url": ""}
​```
- 如果遍历完所有元素都没有找到匹配的链接,则返回一个包含空字符串的字典 `{"url": ""}`。

### 总结
这段代码的主要作用是从输入的 JSON 数据中提取出第一个符合特定格式(`link:...`)的链接,并将其作为结果返回。如果没有找到任何链接,则返回一个包含空字符串的结果。
  • 代码模块输出内容:一个url

image-20241130210422503

关键模块3:链接读取插件

  • 链接读取插件返回结果:

链接读取插件返回结果

返回结果

  • 输入内容【秦始皇陵博物院 兵马俑】,返回的结果如下
  • 输出的内容比起之前【必应搜索】和【链接读取】插件运行的json格式内容,最后输出的内容格式更工整

image-20241130210820511

小红书内容搜索+批量提取工作流

根据前辈指导,还可以加大模型模块进行优化

而按照教程,也可以使用代码模块,优化输出格式

核心骨架部分

小红书内容搜索+批量提取工作流-核心骨架部分

可优化部分

1. 大模型优化提取内容并重新输出(尝试中)

  • 在通过循环,输出output字典后,将循环块的输出接入到大模型模块
  • 通过设置好系统提示词内容,过滤和筛选上一步爬取到的小红书文章,挑选出质量高的内容进行输出,减少人工筛选成本

2. (想法阶段)结合知识库检索功能筛选出需要方面的知识

  • 想法还只有一个标题hhhhh
  • 粗略想法:在知识库存储之前提取的原始数据(一次次提取就一次次存储到知识库,并提取和存储关键词高频词作为知识库的另一个模块
  • 从xhs新提取的内容→的关键词→如果在知识库的出现频率高(可以设置一个

微信公众号1:文章批量提取文章内容(通过爬取的链接)

(非普适方案)方案一

参考知识链接

  • 自己摸索的土办法。。。

大致操作模块步骤

  • 使用微信公众号的个人文章创作页的【超链接】,输入想要提取内容的公众号的名称后,底下会出现该公众号的文章链接

  • 通过使用pyautogui库,模拟人工cv操作,提前进行人工操作试验,打点获取操作点坐标

  • 使用python代码,运行,看鼠标自己移动+复制+黏贴内容到后台txt文件中

  • 目前进展:爬取了公众号文章链接,后面打算用Coze工作流的链接读取插件进行内容的提取

    • 存在问题:不知道怎么从外部大量地导入链接文本/文件,链接量大概400多个

image-20241130210055656

(目前还不存在的想法hhh)方案二

  • 寻找资料→分析可行性→考虑方案
  • 失败尝试:通过注册了微信公众号,获取了Id、Secret、access_token、Cookie等值,尝试了开源在CSDN的微信公众号爬取脚本,脚本成功运行,但是爬取内容失败
  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信