wiseflow/README.md
bigbrother666sh 1416ab29c8 add test
2024-12-18 22:45:20 +08:00

229 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 首席情报官Wiseflow
**[English](README_EN.md) | [日本語](README_JP.md) | [한국어](README_KR.md)**
🚀 **首席情报官**Wiseflow是一个敏捷的信息挖掘工具可以从网站、微信公众号、社交平台等各种信息源中按设定的关注点提炼讯息自动做标签归类并上传数据库。
**我们缺的不是信息,而是从海量信息中过滤噪音,从而让有价值的信息显露出来**
🌱看看首席情报官是如何帮您节省时间,过滤无关信息,并整理关注要点的吧!🌱
https://github.com/user-attachments/assets/f6fec29f-2b4b-40f8-8676-8433abb086a7
## 🔥 隆重介绍 V0.3.6 版本
v0.3.6版本已经发布,新增使用视觉大模型作为主模型,大幅提升页面获取能力。
使用视觉大模型通过分析页面截屏信息提取效果 vs 使用文本大模型通过分析页面文本信息提取效果:
![image](https://github.com/user-attachments/assets/f6fec29f-2b4b-40f8-8676-8433abb086a7)
同时本版本改进了 pocketbase 的前期下载以及用户名密码配置方案,感谢 @ourines 贡献了 install_pocketbase.sh 脚本。
(docker运行方案被暂时移除了感觉大家用起来也不是很方便……)
- 更多细节,参考 [CHANGELOG](CHANGELOG.md)
🌟 **V0.3.x 版本介绍**
在充分听取社区反馈意见基础之上,我们重新提炼了 wiseflow 的产品定位新定位更加聚焦自V0.3.5版本开始 wiseflow 使用全新的架构,并引入 [Crawlee](https://github.com/apify/crawlee-python) 作为基础爬虫和任务管理框架大幅提升页面获取能力。后续我们会持续提升wiseflow 的页面获取能力,大家碰到不能很好获取的页面,欢迎在 [issue #136](https://github.com/TeamWiseFlow/wiseflow/issues/136) 中进行反馈;
另外 V0.3.5开始wiseflow 采用全新的信息提取策略——“爬查一体”,放弃文章详细提取,爬取过程中即使用 llm 直接提取用户感兴趣的信息infos同时自动判断值得跟进爬取的链接**你关注的才是你需要的**
**V0.3.x 后续计划**
- 尝试支持微信公众号免wxbot订阅V0.3.7
- 引入对 RSS 信息源的支持V0.3.8;~
- 尝试引入 LLM 驱动的轻量级知识图谱,帮助用户从 infos 中建立洞察V0.3.9)。
## ✋ wiseflow 与传统的爬虫工具、AI搜索、知识库RAG项目有何不同
wiseflow自2024年6月底发布 V0.3.0版本来受到了开源社区的广泛关注,甚至吸引了不少自媒体的主动报道,在此首先表示感谢!
但我们也注意到部分关注者对 wiseflow 的功能定位存在一些理解偏差如下表格通过与传统爬虫工具、AI搜索、知识库RAG类项目的对比代表了我们目前对于 wiseflow 产品最新定位思考。
| | 与 **首席情报官Wiseflow** 的比较说明|
|-------------|-----------------|
| **爬虫类工具** | 首先 wiseflow 是基于爬虫工具的项目(以目前版本而言,我们基于爬虫框架 Crawlee但传统的爬虫工具在信息提取方面需要人工的介入提供明确的 Xpath 等信息……这不仅阻挡了普通用户同时也毫无通用性可言对于不同网站包括已有网站升级后都需要人工重做分析并更新提取代码。wiseflow致力于使用 LLM 自动化网页的分析和提取工作,用户只要告诉程序他的关注点即可,从这个角度来说,可以简单理解 wiseflow 为 “能自动使用爬虫工具的 AI 智能体” |
| **AI搜索** | AI搜索主要的应用场景是**具体问题的即时问答**举例”XX公司的创始人是谁“、“xx品牌下的xx产品哪里有售” ,用户要的是**一个答案**wiseflow主要的应用场景是**某一方面信息的持续采集**比如XX公司的关联信息追踪XX品牌市场行为的持续追踪……在这些场景下用户能提供关注点某公司、某品牌、甚至能提供信源站点 url 等),但无法提出具体搜索问题,用户要的是**一系列相关信息**|
| **知识库RAG类项目** | 知识库RAG类项目一般是基于已有信息的下游任务并且一般面向的是私有知识比如企业内的操作手册、产品手册、政府部门的文件等wiseflow 目前并未整合下游任务同时面向的是互联网上的公开信息如果从“智能体”的角度来看二者属于为不同目的而构建的智能体RAG 类项目是“(内部)知识助理智能体”,而 wiseflow 则是“(外部)信息采集智能体”|
## 📥 安装与使用
### 1. 克隆代码仓库
🌹 点赞、fork是好习惯 🌹
```bash
git clone https://github.com/TeamWiseFlow/wiseflow.git
```
### 2. 执行根目录下的 install_pocketbase.sh 脚本
该脚本会引导下载并配置 pocketbase版本选择0.23.4),同时在 core 下创建 .env 文件。
```bash
chmod +x install_pocketbase.sh
./install_pocketbase.sh
```
wiseflow 0.3.x版本使用 pocketbase 作为数据库,你当然也可以手动下载 pocketbase 客户端 (记得下载0.23.4版本,并放入 [pb](./pb) 目录下) 以及手动完成superuser的创建(记得存入.env文件)
具体可以参考 [pb/README.md](/pb/README.md)
### 3. 继续配置 core/.env 文件
🌟 **这里与之前版本不同**V0.3.5开始需要把 .env 放置在 core文件夹中。
另外 V0.3.5 起env 配置也大幅简化了,必须的配置项目只有三项,具体如下:
- LLM_API_KEY=""
大模型服务key这是必须的
- LLM_API_BASE="https://api.siliconflow.cn/v1"
服务接口地址,任何支持 openai sdk 的服务商都可以如果直接使用openai 的服务,这一项也可以不填
- PB_API_AUTH="test@example.com|1234567890"
pocketbase 数据库的 superuser 用户名和密码,记得用 | 分隔 (如果 install_pocketbase.sh 脚本执行成功,这一项应该已经存在了)
下面的都是可选配置:
- #VERBOSE="true"
是否开启观测模式,开启的话,不仅会把 debug log信息记录在 logger 文件上(默认仅输出在 console 上),同时会开启 playwright 的浏览器窗口,方便观察抓取过程;
- #PRIMARY_MODEL="Qwen/Qwen2.5-7B-Instruct"
主模型选择,在使用 siliconflow 服务的情况下这一项不填就会默认调用Qwen2.5-7B-Instruct实测基本也够用但我更加**推荐 Qwen2.5-14B-Instruct**
- #SECONDARY_MODEL="THUDM/glm-4-9b-chat"
副模型选择,在使用 siliconflow 服务的情况下这一项不填就会默认调用glm-4-9b-chat。
- #PROJECT_DIR="work_dir"
项目运行数据目录,不配置的话,默认在 `core/work_dir` ,注意:目前整个 core 目录是挂载到 container 下的,所以意味着你可以直接访问这里。
- #PB_API_BASE=""
只有当你的 pocketbase 不运行在默认ip 或端口下才需要配置,默认情况下忽略就行。
### 4. 使用python环境运行
✋ V0.3.5版本架构和依赖与之前版本有较大不同请务必重新拉取代码删除或重建pb_data
推荐使用 conda 构建虚拟环境(当然你也可以忽略这一步,或者使用其他 python 虚拟环境方案)
```bash
conda create -n wiseflow python=3.10
conda activate wiseflow
```
之后运行
```bash
cd wiseflow
cd core
pip install -r requirements.txt
chmod +x run.sh
./run_task.sh # if you just want to scan sites one-time (no loop), use ./run.sh
```
🌟 这个脚本会自动判断 pocketbase 是否已经在运行,如果未运行,会自动拉起。但是请注意,当你 ctrl+c 或者 ctrl+z 终止进程时pocketbase 进程不会被终止直到你关闭terminal。
run_task.sh 会周期性执行爬取-提取任务(启动时会立即先执行一次,之后每隔一小时启动一次), 如果仅需执行一次,可以使用 run.sh 脚本。
### 5. 模型推荐 [2024-12-09]
虽然参数量越大的模型意味着更佳的性能,但经过实测,**使用 Qwen2.5-7b-Instruct 和 glm-4-9b-chat 模型,即可以达到基本的效果**。不过综合考虑成本、速度和效果,我更加推荐主模型
**PRIMARY_MODEL使用Qwen2.5-14B-Instruct**。
这里依然强烈推荐使用 siliconflow硅基流动的 MaaS 服务提供多个主流开源模型的服务量大管饱Qwen2.5-7b-Instruct 和 glm-4-9b-chat 目前提供免费服务。主模型使用Qwen2.5-14B-Instruct情况下爬取374个网页有效抽取43条 info总耗费¥3.07
😄 如果您愿意,可以使用我的[siliconflow邀请链接](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92)这样我也可以获得更多token奖励 🌹
**如果您的信源多为非中文页面,且也不要求提取出的 info 为中文,那么更推荐您使用 openai 或者 claude 等海外厂家的模型。**
您可以尝试第三方代理 **AiHubMix**,支持国内网络环境直连、支付宝便捷支付,免去封号风险;
😄 欢迎使用如下邀请链接 [AiHubMix邀请链接](https://aihubmix.com?aff=Gp54) 注册 🌹
🌟 **请注意 wiseflow 本身并不限定任何模型服务,只要服务兼容 openAI SDK 即可,包括本地部署的 ollama、Xinference 等服务**
### 6. **关注点和定时扫描信源添加**
启动程序后打开pocketbase Admin dashboard UI (http://127.0.0.1:8090/_/)
#### 6.1 打开 focus_point 表单
通过这个表单可以指定你的关注点LLM会按此提炼、过滤并分类信息。
字段说明:
- focuspoint, 关注点描述(必填),如”上海小升初信息“、”加密货币价格“
- explanation关注点的详细解释或具体约定如 “仅限上海市官方发布的初中升学信息”、“BTC、ETH 的现价、涨跌幅数据“等
- activated, 是否激活。如果关闭则会忽略该关注点,关闭后可再次开启。
注意focus_point 更新设定(包括 activated 调整)后,**需要重启程序才会生效。**
#### 6.2 打开 sites表单
通过这个表单可以指定自定义信源,系统会启动后台定时任务,在本地执行信源扫描、解析和分析。
sites 字段说明:
- url, 信源的url信源无需给定具体文章页面给文章列表页面即可。
- per_hours, 扫描频率单位为小时类型为整数1~24范围我们建议扫描频次不要超过一天一次即设定为24
- activated, 是否激活。如果关闭则会忽略该信源,关闭后可再次开启。
**sites 的设定调整,无需重启程序。**
## 📚 如何在您自己的程序中使用 wiseflow 抓取出的数据
1、参考 [dashbord](dashboard) 部分源码二次开发。
注意 wiseflow 的 core 部分并不需要 dashboard目前产品也未集成 dashboard如果您有dashboard需求请下载 [V0.2.1版本](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1)
2、直接从 Pocketbase 中获取数据
wiseflow 所有抓取数据都会即时存入 pocketbase因此您可以直接操作 pocketbase 数据库来获取数据。
PocketBase作为流行的轻量级数据库目前已有 Go/Javascript/Python 等语言的SDK。
- Go : https://pocketbase.io/docs/go-overview/
- Javascript : https://pocketbase.io/docs/js-overview/
- python : https://github.com/vaphes/pocketbase
## 🛡️ 许可协议
本项目基于 [Apache2.0](LICENSE) 开源。
商用以及定制合作,请联系 **Email35252986@qq.com**
- 商用客户请联系我们报备登记,产品承诺永远免费。
## 📬 联系方式
有任何问题或建议,欢迎通过 [issue](https://github.com/TeamWiseFlow/wiseflow/issues) 留言。
## 🤝 本项目基于如下优秀的开源项目:
- crawlee-python A web scraping and browser automation library for Python to build reliable crawlers. Works with BeautifulSoup, Playwright, and raw HTTP. Both headful and headless mode. With proxy rotation. https://github.com/apify/crawlee-python
- json_repairRepair invalid JSON documents https://github.com/josdejong/jsonrepair/tree/main
- python-pocketbase (pocketBase client SDK for python) https://github.com/vaphes/pocketbase
本项目开发受 [GNE](https://github.com/GeneralNewsExtractor/GeneralNewsExtractor)、[AutoCrawler](https://github.com/kingname/AutoCrawler) 、[SeeAct](https://github.com/OSU-NLP-Group/SeeAct) 启发。
## Citation
如果您在相关工作中参考或引用了本项目的部分或全部,请注明如下信息:
```
AuthorWiseflow Team
https://github.com/TeamWiseFlow/wiseflow
Licensed under Apache2.0
```