目前已实现的功能:
目前还没有公开使用的网站,我怕我的账单爆掉。构建语料库比较消耗 token ,大家可以用 5M 以下的文档试试看。
所以需要大家本地启动,使用起来比较简单,下载仓库,然后修改环境变量,docker compose up
即可!!
目前项目还在初期,大家可以多多提提 bug 。项目地址: https://github.com/guangzhengli/ChatFiles
附:不要再聊鸭头的事了....
1
LavaC 2023-04-06 09:38:27 +08:00
第一个想到的用途是把某群友的黑历史记录输进去然后给群机器人自由发挥
|
2
perfectlife 2023-04-06 09:39:34 +08:00 via Android
@LavaC 那这个就很强了
|
3
LavaC 2023-04-06 09:42:01 +08:00
@perfectlife 上一个注册的账号免费额度 4 月 1 就到期了,想升级 plus 发现不支持澳村的信用卡和借记卡,搞得有点没兴致。
|
4
ligz OP @LavaC 能干的还是比较多的,例如上传书籍和文档,让它帮你总结或者你向它提问一些文档的内容。后续打算再加上多个文件构建同一个语料库的功能,看看能不能按照套路写作之类的。
|
5
bkmi 2023-04-06 09:45:54 +08:00 via Android
与文件对话是什么意思,是不是我把某个项目的使用文档喂给它,就可以问他项目相关的问题了
|
6
huyujievip 2023-04-06 09:48:10 +08:00 via iPhone
鸭头很好看,拿走了。手动狗头🐶
|
7
d873139022 2023-04-06 09:49:15 +08:00
上次看到这个鸭头就觉得很有意思,一眼认出楼主
|
9
wenjie0032 2023-04-06 10:01:40 +08:00 via iPhone 1
借楼贴一下,也搞了个
https://github.com/daodao97/chatdoc |
10
Waverly 2023-04-06 10:16:00 +08:00
反馈一下两个问题:
1. 命令应该是 docker-compose up 不是 docker-compose up 2. 平台好像有点不兼容:有以下报错 [+] Running 3/2 ⠿ Network chatfiles_default Created 0.1s ⠿ Container chatfiles Created 0.2s ⠋ chatfiles The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 0.0s ⠿ Container chatfiles-ui Created 0.1s ⠋ chatfiles-ui The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 0.0s Attaching to chatfiles, chatfiles-ui chatfiles | standard_init_linux.go:228: exec user process caused: exec format error chatfiles exited with code 1 chatfiles-ui | standard_init_linux.go:228: exec user process caused: exec format error chatfiles-ui exited with code 1 |
11
learningman 2023-04-06 10:41:43 +08:00
@Waverly
docker compose up 是 docker-compose v2 的格式,v2 是 go 构建的,作为 docker 的插件。1 是 python 写的。该升级了。 不过 docker 镜像确实只有 linux/arm64/v8 的格式,op 是在树莓派上写代码吗。。。 |
12
ligz OP @learningman 我用的是 MBP m1 pro....晚点我看看镜像格式问题,大家先直接用 npm run dev 起前端,用 python3 server.py 起后端...
|
13
Clash 2023-04-06 11:03:21 +08:00
能不能支持上传 markdown 文件?
能不能支持上传 文件夹?(文件夹下多个 md 、txt……文件) 这样就可以方便建自己的智能助理了 |
14
changdig 2023-04-06 11:05:21 +08:00
手动 build 一个 x64 镜像就行了
|
16
FishBoneEK 2023-04-06 11:14:42 +08:00 via Android
Op 可以试试把后端抽出来啊,方便用户自己部署到自己的网站上,和前端适配
如果把文档和接口弄好点的话,应该会有很多人使用的 |
17
coderunI 2023-04-06 11:16:09 +08:00
输入小说模板啥的, 是不是就可以写小说了
|
18
falcon05 2023-04-06 11:17:03 +08:00
能上传代码文件分析 bug 吗?或者叫它重构
|
19
ligz OP @FishBoneEK 后端是独立的,目前是用 flask 暴露了两个接口。可以直接用 docker 打包部署。
|
20
ligz OP @falcon05 这种场景已经有专业队伍跑步进场了,github copilot x 或者 cursor: https://www.cursor.so/
|
22
NicholasZhan 2023-04-06 12:10:56 +08:00
可以让 chatgpt 基于上传的内容进行二次创作吗?感觉现在基本都是问答的模式
|
23
cheng6563 2023-04-06 12:22:34 +08:00
请问语料库是什么?有什么资料参考吗?
|
24
justin2018 2023-04-06 12:28:37 +08:00
大佬 请教下 同一文档 后期增加内容了 是不是只用投喂新增的内容就行 还是得重新在喂一次
|
25
ligz OP @NicholasZhan 对,因为现在创建出来的 embeddings 还是差点意思,所以大多是问答模式,后续看看怎么优化。
|
27
ligz OP @justin2018 还需要重新投喂,生成新的 embedding 。并且最好换个名字,因为现在是按照文件名创建的 embedding 。后续这个也可以优化。
|
28
metalvest 2023-04-06 12:37:06 +08:00
File: Error: PyPDF2 is required to read PDF files: `pip install PyPDF2`
|
29
metalvest 2023-04-06 12:48:50 +08:00
EPUB 也是要手动安装,是不是都加到 requirements.txt 里比较好?
|
31
zhengxiaowai 2023-04-06 13:21:58 +08:00
支持下代理呀!!!!!封号那么严重直接本地跑不是 gg 了
|
32
metalvest 2023-04-06 13:36:15 +08:00
最好加个界面能够加载和管理之前已经上传过的文档
|
33
aapeli 2023-04-06 13:42:13 +08:00
Can it support multiple OPENAIs_ API_ Load balancing between KEY?
能否支持在多个 OPENAI_API_KEY 之间负载均衡? |
34
jZH 2023-04-06 14:16:46 +08:00
出错了~
[root@104 ChatFiles]# docker compose up [+] Running 2/0 ✔ Container chatfiles Created 0.0s ✔ Container chatfiles-ui Created 0.0s Attaching to chatfiles, chatfiles-ui chatfiles | exec /usr/local/bin/python3: exec format error chatfiles exited with code 1 chatfiles-ui | exec /usr/local/bin/docker-entrypoint.sh: exec format error chatfiles-ui exited with code 1 |
35
huguadao 2023-04-06 14:18:07 +08:00 via Android
其实要是这个能在群晖上跑个自己的小 chatgpt 豆号了,没事儿喂点资料给它慢慢吃,逐渐培训成自己的私人助理
|
36
beiwei2008 2023-04-06 16:15:53 +08:00
请教下,这个是什么原理?
|
37
ZSeptember 2023-04-06 16:51:29 +08:00
效果咋样,有朋友试过这个思路,好像效果不行
|
38
cheng6563 2023-04-06 17:36:57 +08:00
> 语料库就是你自己的材料,比如你上传一本书的内容,可以问 ChatGPT 这本书写了什么
主要问题是 API 接口的 Tokens 不是只有 4097 个吗,直接发一个 PDF 过去肯定不够的吧。一直搞不懂这些分析大文件的场景是怎么完成的。 |
39
B1ock 2023-04-06 17:51:07 +08:00
@cheng6563 之前看到的思路:先把大文件分块做 embedding, 查询的时候本地会先在 embedding 向量数据库里检索,相关的分块内容再带到 GPT 的上下文里提问。
|
40
nyakoy 2023-04-06 18:01:42 +08:00
先 start ,公司有需求场景。
|
42
winglight2016 2023-04-06 18:26:56 +08:00
如果只是问答模式,那种在 context 里有答案的可以不使用 chatgpt 的模型,这就省了一笔
另外,lz 能支持一下其他模型吗?现在开源了好多 fine-tuning 的 llama 模型,这就再省一笔了 |
43
zeonll 2023-04-06 18:42:41 +08:00
感谢 很有用
|
44
huwenzhe 2023-04-06 20:11:02 +08:00
之前看到一个 https://www.chatpdf.com/
|
45
B1ock 2023-04-06 20:44:07 +08:00
@Wenbobobo 可能取决于 embedding 匹配到的分块情况吧...毕竟整本书全文代入上下文也不现实。(我猜有可能匹配到书的“序言”部分
|
46
rui2k 2023-04-06 20:45:19 +08:00
今天把 langchain 的 documents 喂了进去,消耗了 209 万个 token 做 embedding (好在是用 ada 模型,比较便宜,花了 0.8 刀)。尝试问答了一下,感觉效果一般。可能还是跟 embedding 的效果有关系。特别是,它居然给不出任何代码。。。
|
47
rui2k 2023-04-06 20:47:58 +08:00
@rui2k
text-embedding-ada-002-v2, 57 requests 1,677,758 prompt + 0 completion = 1,677,758 tokens "name": "langchain 文档", "messages": [ { "role": "user", "content": "langchain 能实现哪些功能?" }, { "role": "assistant", "content": "langchain 可以实现多种功能,包括模型集成、提示管理、记忆、索引、链式调用和代理。它还支持个人助手、问答、聊天机器人、查询表格数据、与 API 交互、信息提取、摘要和评估等多种应用场景。" }, { "role": "user", "content": "使用 langchain 搭建个人助手的方法,请给我一个 demo 代码" }, { "role": "assistant", "content": "很抱歉,我无法提供代码示例,因为您的问题需要更多的上下文和详细信息。请参考 LangChain 的官方文档和示例,以了解如何使用 LangChain 构建个人助手应用程序。" }, |
49
ligz OP @jZH 这个错误应该是我只打包了 arm64 的镜像导致的,目前已经推送了 amd64/arm64 ,你删掉本地镜像重新下载即可。
|
50
ligz OP @beiwei2008
@ZSeptember @B1ock embedding 的方案会将相关度高的文本给 ChatGPT ,而不是整本书的内容,所以现在如果问的是很模糊的问题,其实效果并不算好,但是问题精确的话,效果就还行。 |
52
closedevice 2023-04-06 23:53:38 +08:00
chatgpt 还能直接塞 embedding 之后的数据?不都是在训练阶段,对特征进行 embedding 么?
|
53
Mixwind 2023-04-07 00:39:01 +08:00
请问一个 pdf 上下文超过 4097 token 这个是怎么解决的?前面好像也有人问。
|
54
MarlonFan 2023-04-07 01:07:46 +08:00 1
@Mixwind 通过文章切句, 拿到非常多的小段文本。再把文本调用 openai 的 embedding 接口, 拿到向量。
当用户有问题的时候, 把用户的问题转成 embedding, 通过 cosin 之类的函数计算相似的 embedding 语料。然后把相关语料作为上下文传给 chatgpt-turbo-3.5, 然后用自然语言给你返回答案。 |
55
avenger 2023-04-07 02:20:01 +08:00 via iPhone
想训练一个自己的电商客服机器人,导入过去 5 年的聊天记录,目前用官方的 fine-tuning 测试,几乎不可用,正准备试 gpt-index ,请问您这个项目适用于这个场景吗?谢谢
|
56
lxxxv5 2023-04-07 08:04:34 +08:00 via iPhone
还没细看,想先问问,喂给他的材料是不是都传给了 openai 公司,会有泄漏资料的风险吗,还是说这些资料只是在本地就被消化了
|
57
Wenbobobo 2023-04-07 08:34:54 +08:00 via Android
@lxxxv5 只是在 openai 的模型那里转了两圈,中间环节不出问题就是安全的,embedding 数据的检索是在本地
|
59
davinci21s 2023-04-07 09:24:19 +08:00
和 chatpdf 相比,还是差了一点,不过还是支持,希望越来越好,毕竟 chatpdf 收费的😂 ![img]( https://files.xuanyuanhuangdi.org/api/file/share?hash=A95572872E09ABF62DBDCDB9D6FA9C5EBECFC642B8109C214AC833C2DEBBC3DC&expire=1680852196&path=Screen%2520Shot%25202023-04-07%2520at%252009.15.08.png)
|
60
lhzcl226 2023-04-07 10:47:50 +08:00
为什么用 llama_index ,而不是向量数据库?
|
61
metalvest 2023-04-07 15:16:30 +08:00
能不能加个把某网站的树状文档比如软件指南或者编程参考这种按目录递归遍历下载到本地然后拼接成一个文本文件的功能,就可以当互动指南用了
|
62
guiyun 2023-04-07 15:31:36 +08:00
@learningman 额,arm 的开发平台不应该首先想到是苹果的 m 系芯片吗?
|
63
metalvest 2023-04-07 16:07:04 +08:00 via Android
@metalvest 比如
```python import requests from bs4 import BeautifulSoup import os # 定义已下载的 URL 集合和有序的网页内容列表 downloaded_urls = set() pages = [] # 定义递归函数来遍历整个网站的树状结构并提取文本内容 def scrape_website(root_url, url): # 检查链接是否以根路径开始或者是否与根路径相同 if not url.startswith(root_url) or url == root_url: return # 检查该 URL 是否已经下载过,如果是则跳过下载 if url in downloaded_urls: return # 发送请求获取网页内容 response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # 提取网页标题和正文内容 title = soup.title.text.strip() body = soup.body.text.strip() # 将该网页的标题和正文内容添加到有序的网页内容列表中 pages.append((title, body)) # 将该 URL 添加到已下载的 URL 集合中 downloaded_urls.add(url) # 递归遍历子页面链接 for link in soup.find_all('a'): href = link.get('href') if href.startswith('http'): scrape_website(root_url, href) elif href.startswith('/'): scrape_website(root_url, root_url + href) # 指定网站根路径 root_url = 'https://www.example.com/' # 发送请求获取根路径的网页内容 response = requests.get(root_url) soup = BeautifulSoup(response.content, 'html.parser') # 从根路径的网页标题中提取文件名 root_title = soup.title.text.strip() output_filename = root_title + '.txt' # 调用递归函数来爬取整个网站的树状结构并保存文本内容 scrape_website(root_url, root_url) # 遍历有序的网页内容列表并将内容合并为一个线性的文本文件 with open(output_filename, 'w') as f: for title, body in pages: f.write(title + '\n\n') f.write(body + '\n\n') ``` |
64
learningman 2023-04-07 16:14:30 +08:00
@guiyun 苹果是 darwin ,这是 linux 啊
|
65
edisonzf2022 2023-04-07 22:25:38 +08:00
语料的格式是什么样子的?
有没有现成的语料库测试 |
66
karatsuba 2023-04-11 13:22:05 +08:00
我的一直报 Error fetching models.呀,难搞
|