type
status
title
summary
slug
Created
Apr 2, 2024 02:54 PM
category
tags
Date
icon
password
一、背景
相信大家最近应该都听过
Coze
,我之前有一篇文章《字节AI大杀器:Coze》也提到过它,简单来说它是由字节跳动出品,是一款用来开发新一代 AI Chat Bot 的应用编辑平台。Coze
里面有个知识库的功能,它跟目前很火的检索增强生成(RAG)技术类似,主要作用就是提高回答的准确性,我之前也出过几篇文章对其进行系统的讲解,有兴趣的可以看我的主页。之所以有这篇文章,是因为最近在使用知识库这个功能的时候遇到了一些不便
1、TXT格式的文件每次最多上传10个

如果你的语料比较多,每次又只能上传10个,如果有1000份文件,则要上传100次,感觉想想都头皮发麻
2、Excel表格每个单元的字符最大是1024个字符
因为
Coze
支持上传的方式其实还是比较多的,既然上传TXT
有数量限制,那就换个思路,把TXT
的内容整合到一份Excel表格,再进行上传,但是很快就打脸了,如果你每个单元的内容太长,超过1024个字符,则会上传失败
虽然Coze还支持API等方式,但我也不想一个个试,要是其他方式也有限制就太麻烦了,所以就想着能不能自己实现一个自动上传的小工具,先放下最终效果
二、技术选型
由于之前有Python相关经验,而自动化这块Python的
Selenium
比较出名,所以最终敲定的技术栈是Python3 + Selenium
注:系统是Ubuntu
2.1 安装
chromedriver
由于太久没接触有些生疏,当我把
Selenium
启动的代码敲下去之后,发现并没有调起Chrome浏览器,后面才明白是 chromedriver
驱动没安装
注:没安装驱动的时候会一直等待
安装前需要先确定本机Chrome浏览器的版本,两者的版本一定要匹配!
浏览器输入:
chrome://version/

我一开始是安装网上教程去下载安装,但是它提供的网址并没有和我版本一致的驱动,所以我就下了一个低一点的版本,版本号是 114.0.5735.90
下载并解压后,执行下面的命令就行
但随后就栽了跟头了,发现版本不对Chrome浏览器起不来

后面就去了官网看了说明,原来网上博客提供的地址是给老版本使用的

最新的版本
chromedriver
驱动在这里下载:因为上面的地址列举的是最新版本,并没符合我的浏览器版本的驱动,所以抱着试一试的心态,但结果还是不行

后面灵机一动,把最新版本链接中的版本替换为我的版本,结果还真的可以!
再次执行上面的安装命令,随后就能正常启动了
三、项目实战
项目总体的思路还是蛮简单的,就是遍历本地文件,然后找到Coze的各个按钮的xpath路径,然后一路执行就行。
3.1 本地文件读取
首先是读取配置文件里的路径,然后使用Python的文件函数列举出文件夹下面的所有文件(注意这里不会遍历子文件夹,偷懒了),最后再筛选出特定后缀的文件,因为
Coze
目前只支持 TXT、PDF、Doc、Docx 这四种
3.2 调起Chrome浏览器
我们一般使用这行代码调起Chrome浏览器
但这种方式,每次重新调起Chrome浏览器的时候,之前的登录态都会丢失,所以
Coze
每次都得重新登录,非常麻烦,所以这里把登录数据存本地了,这样就不用每次都得登录
3.3 打开Coze的知识库主页
注意是这个页面

代码里面的get方法就是打开这个页面,然后模拟
Add unit
按钮的点击事件
3.4 模拟剩余的上传操作
剩下的这些代码就是模拟点击
Add unit
按钮之后的一些操作,比如上传文件,各种Next按钮的点击等。
这里有个要说明的是,由于Processing阶段Coze是异步处理的,所以你可以不用等进度条完成才点Confirm按钮(所以我代码就是最多等待10秒)

四、一些注意事项
4.1 代码执行
由于我这里并没有提供图形化界面,所以可能对小白不太友好,如果了解过Python的应该就能很快上手,因为需要装各种环境和依赖啥的
4.2 每个知识库最大支持100个unit
这个也是我试出来的,感觉有点低,所以我在代码里面也加了判断,如果超过100个文件,是不会执行的

这个感觉是
Coze
的Bug,明明最大是100个,但是提示是300个
4.3 页面等待时间
因为HTML里面的元素要等页面渲染完才会出现,所以我里面每一步都有一个等待时间,但这个时间不一定是适用全部人的。
Selenium里面有个方法可以等待元素渲染完才执行(WebDriverWait),但是我并没有每一步都使用这个方法(还是偷懒了)
4.4 记录已经上传的文件和失败的文件
由于不能保证代码就一定能执行成功,有时候会由于一些奇奇怪怪的问题导致找不到元素,然后就没办法执行下一步了,所以代码里面也记录失败的文件名,已经增加已经上传文件的过滤
可以抓包 https://www.coze.com/api/memory/knowledge/list_dataset 接口,里面有返回已经上传的文件名

4.5 XPath 路径问题
由于我是根据
XPath
方式定位HTML元素的,所以如果Coze
前端页面改了样式,大概率就会出现找不到对应元素的问题,如果遇到这种问题,大家记得更新XPath
路径4.6 源码获取
关于源代码的获取,在公众号回复“Coze上传”就可以得到全部源码链接!
最后如果这个工具能帮到你的话,还请多多点赞,你的点赞是我不断更新的动力!
我是AI技术巫,欢迎关注我,掌握第一手AI资讯与技巧!

- 作者:AI技术巫
- 链接:https://ilovetech.cn/article/ai_coze_auto_upload
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。