update readme

This commit is contained in:
bigbrother666sh 2024-12-10 23:05:01 +08:00
parent e3ceb0cc66
commit c0828cd19e
3 changed files with 414 additions and 418 deletions

View File

@ -1,228 +1,223 @@
# Chief Intelligence Officer (Wiseflow)
**[中文](README.md) | [日本語](README_JP.md) | [한국어](README_KR.md)**
**[简体中文](README.md) | [日本語](README_JP.md) | [한국어](README_KR.md)**
🚀 **Chief Intelligence Officer** (Wiseflow) is an agile information mining tool that can extract information from various sources such as websites, WeChat official accounts, social platforms, etc., based on set focus points, automatically categorize with labels, and upload to a database.
🚀 **Chief Intelligence Officer** (Wiseflow) is an agile information mining tool that can extract information from various sources such as websites, WeChat official accounts, and social platforms based on preset focus points, automatically tag and categorize the information, and upload it to the database.
**We lack not information, but the ability to filter out noise from vast amounts of information, thereby revealing valuable information.**
**What we lack is not information, but the ability to filter out noise from massive information, thereby revealing valuable information.**
## 🔥 V0.3.8 Version Preview
🌱 See how Chief Intelligence Officer helps you save time, filter irrelevant information, and organize key points of interest! 🌱
wiseflow is expected to officially upgrade to version 0.3.8 by the end of December 2024, which will be the final version under the V0.3.x architecture (unless there are enough minor modifications, there will be no V0.3.9 version).
https://github.com/user-attachments/assets/f6fec29f-2b4b-40f8-8676-8433abb086a7
Planned upgrade content includes:
## 🔥 Introducing Version V0.3.5
- Significantly upgrade general_crawler (introducing many latest open-source technology solutions), further improving page adaptation coverage and achieving full local CPU computing (meaning no need to configure LLM options for this);
- Improve general_crawler's ability to extract URLs from list pages, as well as the distinction between list pages and ordinary article pages;
- Attempt to introduce a new mp_crawler, eliminating the need for wxbot in monitoring WeChat official account articles;
- Test and recommend new information extraction llm models, and fine-tune extraction strategies.
Based on extensive community feedback, we have refined the product positioning of wiseflow, making it more focused. Version V0.3.5 is the new architecture version under this positioning:
Features that may be added depending on the situation:
- Introduced [Crawlee](https://github.com/apify/crawlee-python) as the basic crawler and task management framework, significantly enhancing page acquisition capabilities. Pages that were previously unobtainable (including those obtained as garbled text) can now be acquired well. If you encounter pages that cannot be acquired well, please provide feedback in [issue #136](https://github.com/TeamWiseFlow/wiseflow/issues/136);
- New information extraction strategy under the new product positioning—"crawling and checking integration," abandoning detailed article extraction. During the crawling process, LLM directly extracts user-interested information (infos), and automatically judges links worth following up on. **What you focus on is what you need**;
- Adapted to the latest version (v0.23.4) of Pocketbase, updated form configuration. Additionally, the new architecture no longer requires modules like GNE, reducing the number of requirement dependencies to 8;
- The new architecture deployment scheme is also more convenient, with Docker mode supporting hot updates of the code repository. This means that subsequent upgrades no longer require repeated Docker builds.
- For more details, refer to [CHANGELOG](CHANGELOG.md)
- Introduce support for RSS information sources;
- Introduce support for social platforms (initially this will be very rudimentary, so don't expect too much).
🌟 **Future Plans for V0.3.x**
The above content will be gradually released to the dev branch in advance, welcome to switch and try it out, and actively provide feedback on issues.
- Introduce [SeeAct](https://github.com/OSU-NLP-Group/SeeAct) solution, guiding complex page operations through visual large models, such as scrolling, clicking to reveal information (V0.3.6);
- Attempt to support WeChat official account subscription without wxbot (V0.3.7);
- Introduce support for RSS information sources (V0.3.8);
- Attempt to introduce a lightweight knowledge graph driven by LLM to help users build insights from infos (V0.3.9).
-----------------------------
## ✋ How is wiseflow Different from Traditional Crawler Tools, AI Search, and Knowledge Base (RAG) Projects?
🌱 See how wiseflow helps you save time, filter out irrelevant information, and organize key points of interest! 🌱
Since the release of version V0.3.0 in late June 2024, wiseflow has received widespread attention from the open-source community, attracting even some self-media reports. First of all, we would like to express our gratitude!
- ✅ Universal web content parser, comprehensively using statistical learning (dependent on the open-source project GNE) and LLM, suitable for over 90% of news pages;
- ✅ Asynchronous task architecture;
- ✅ Information extraction and label classification using LLM (only requires an LLM of 9B size to perfectly execute tasks)!
However, we have also noticed some misunderstandings about the functional positioning of wiseflow among some followers. The following table, through comparison with traditional crawler tools, AI search, and knowledge base (RAG) projects, represents our current thinking on the latest product positioning of wiseflow.
https://github.com/TeamWiseFlow/wiseflow/assets/96130569/bd4b2091-c02d-4457-9ec6-c072d8ddfb16
<img alt="sample.png" src="asset/sample.png" width="1024"/>
## ✋ How is wiseflow Different from Common Web Crawling Tools, AI Search, and Knowledge Base (RAG) Projects?
Thanks to everyone's love, wiseflow has received extensive attention from the open-source community since the release of version V0.3.0 at the end of June 2024, and has even attracted active reports from many self-media. We would like to express our gratitude first!
However, we have also noticed that some followers have some misunderstandings about the functional positioning of wiseflow. To avoid confusion, we have created the following table to clearly show the comparison between wiseflow and web crawling tools, AI search, and knowledge base (RAG) projects:
| | **Chief Intelligence Officer (Wiseflow)** |
| | Comparison with **Chief Intelligence Officer (Wiseflow)** |
|-------------|-----------------|
| **Web Crawling Tools** | wiseflow integrates many excellent open-source web crawling tools and adds automated information filtering, screening, and classification capabilities based on LLM, so it can be simply considered that wiseflow = web crawling tool + AI |
| **AI Search** | AI search's main application scenario is **instant question answering for specific issues**, for example: "Who is the founder of XX company" or "Where can I buy the xx product under the xx brand"; wiseflow's main application scenario is **continuous collection of information in a certain aspect**, such as tracking related information of XX company, continuous tracking of market behavior of XX brand... In these scenarios, users can only provide focus points (a company, a brand), but cannot pose specific search questions, and it is not a one-time search, but requires continuous tracking, or automated related tracking. You can simply understand wiseflow as a "smart agent" that can automatically conduct AI searches continuously, i.e., an "AI intelligence officer" |
| **Knowledge Base (RAG) Projects** | Knowledge base (RAG) projects are generally downstream tasks based on existing information and usually face private knowledge (such as operation manuals, product manuals within enterprises, government documents, etc.); wiseflow currently does not integrate downstream tasks and faces public information on the internet |
## 🔄 V0.3.1 Update
The dashboard part has been removed. If you have a dashboard requirement, please download the [V0.2.1 version](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1).
👏 Although some 9B-sized LLMs (THUDM/glm-4-9b-chat) can already achieve stable information extraction output, we found that for complex meaning tags (like "Party Building") or tags that require specific collection (like only collecting "community activities" without including large events like concerts),
the current prompts cannot perform accurate extraction. Therefore, in this version, we have added an explanation field for each tag, which allows for clearer tag specification through input.
_Note: Complex explanations require a larger model to understand accurately, see [Model Recommendations 2024-09-03](###-4. Model Recommendations [2024-09-03])_
👏 Additionally, addressing the issue of prompt language selection in the previous version (which does not affect the output results), we have further simplified the solution in the current version. Users no longer need to specify the system language (which is not so intuitive in Docker), the system will determine the language of the prompt (and thus the output language of the info) based on the tag and its explanation, further simplifying the deployment and use of wiseflow. **However, currently wiseflow only supports Simplified Chinese and English, other language needs can be achieved by changing the prompt in core/insights/get_info.py**
## 🌟 How to Integrate wiseflow into Your Application
wiseflow is a native LLM application that can effectively perform information mining, filtering, and classification tasks with only a 7B-9B LLM. It does not require vector models and has a very small system overhead, making it suitable for localization and private deployment in various hardware environments.
wiseflow stores the mined information in its built-in Pocketbase database. This means that in this case, you do not need to understand the wiseflow code, and you only need to perform read operations on the database!
PocketBase, as a popular lightweight database, currently has SDKs for Go/Javascript/Python languages.
- Go : https://pocketbase.io/docs/go-overview/
- Javascript : https://pocketbase.io/docs/js-overview/
- python : https://github.com/vaphes/pocketbase
| **Crawler Tools** | First, wiseflow is a project based on crawler tools (in the current version, we use the crawler framework Crawlee). However, traditional crawler tools require manual intervention in information extraction, providing explicit Xpath, etc. This not only blocks ordinary users but also lacks generality. For different websites (including upgraded websites), manual reanalysis and updating of extraction code are required. Wiseflow is committed to automating web analysis and extraction using LLM. Users only need to tell the program their focus points. From this perspective, wiseflow can be simply understood as an "AI agent that can automatically use crawler tools." |
| **AI Search** | AI search is mainly used for **instant question-and-answer** scenarios, such as "Who is the founder of XX company?" or "Where can I buy the xx product under the xx brand?" Users want **a single answer**; wiseflow is mainly used for **continuous information collection** in certain areas, such as tracking related information of XX company, continuously tracking market behavior of XX brand, etc. In these scenarios, users can provide focus points (a company, a brand) or even information sources (site URLs, etc.), but cannot pose specific search questions. Users want **a series of related information**.|
| **Knowledge Base (RAG) Projects** | Knowledge base (RAG) projects are generally based on downstream tasks of existing information and usually face private knowledge (such as operation manuals, product manuals, government documents within enterprises, etc.); wiseflow currently does not integrate downstream tasks and faces public information on the internet. From the perspective of "agents," the two belong to agents built for different purposes. RAG projects are "internal knowledge assistant agents," while wiseflow is an "external information collection agent."|
## 📥 Installation and Usage
### 1. Clone the Repository
### 1. Clone the Code Repository
🌹 Starring and forking are good habits 🌹
```bash
git clone https://github.com/TeamWiseFlow/wiseflow.git
cd wiseflow
```
### 2. Recommended to Run Using Docker
### 2. Refer to env_sample to Configure the .env File and Place it in the Core Directory
🌟 **This is different from previous versions**, starting from V0.3.5, the .env file needs to be placed in the core folder.
Additionally, the env configuration has been greatly simplified from V0.3.5, with only three required configuration items, as follows:
- LLM_API_KEY=""
Large model service key, this is mandatory
- LLM_API_BASE="https://api.siliconflow.cn/v1"
Service interface address, any service provider supporting openai sdk can be used. If you directly use openai services, this item can also be left blank
- PB_API_AUTH="test@example.com|1234567890"
Pocketbase database superuser username and password, remember to separate with |
The following are optional configurations:
- #VERBOSE="true"
Whether to enable observation mode. If enabled, not only will debug log information be recorded in the logger file (default is only output to the console), but the playwright browser window will also be opened to facilitate observation of the crawling process;
- #PRIMARY_MODEL="Qwen/Qwen2.5-7B-Instruct"
Main model selection. When using siliconflow services, this item left blank will default to Qwen2.5-7B-Instruct, which is practically sufficient, but I **recommend Qwen2.5-14B-Instruct** more
- #SECONDARY_MODEL="THUDM/glm-4-9b-chat"
Secondary model selection. When using siliconflow services, this item left blank will default to glm-4-9b-chat.
- #PROJECT_DIR="work_dir"
Project runtime data directory. If not configured, the default is `core/work_dir`. Note: The entire core directory is mounted under the container, meaning you can directly access it.
- #PB_API_BASE=""
Only required when your pocketbase is not running on the default IP or port. Ignored by default.
### 3.1 Run Using Docker
✋ The V0.3.5 version architecture and dependencies are significantly different from previous versions. Please make sure to re-pull the code, delete the old version image (including the mounted pb_data folder), and rebuild!
```bash
cd wiseflow
docker compose up
```
Note:
- Run the above command in the root directory of the wiseflow code repository;
- Create and edit the .env file before running, place it in the same directory as the Dockerfile (root directory of the wiseflow code repository), the .env file can refer to env_sample;
- The first time you run the docker container, you may encounter an error, which is normal because you have not yet created an admin account for the pb repository.
**Note:**
At this point, keep the container running, open your browser to http://127.0.0.1:8090/_/, and follow the prompts to create an admin account (must use an email), then fill in the created admin email (again, must be an email) and password into the .env file, and restart the container.
The first time you run the Docker container, the program may report an error, which is normal. Please follow the screen prompts to create a super user account (must use an email), then fill in the created username and password into the .env file, and restart the container.
_If you want to change the container's timezone and language, run the image with the following command_
```bash
docker run -e LANG=zh_CN.UTF-8 -e LC_CTYPE=zh_CN.UTF-8 your_image
```
### 2. [Alternative] Run Directly Using Python
🌟 The Docker solution defaults to running task.py, which will periodically execute crawling-extraction tasks (immediately executes once at startup, then every hour thereafter)
### 3.2 Run Using Python Environment
✋ The V0.3.5 version architecture and dependencies are significantly different from previous versions. Please make sure to re-pull the code, delete (or rebuild) pb_data
It is recommended to use conda to build a virtual environment
```bash
cd wiseflow
conda create -n wiseflow python=3.10
conda activate wiseflow
cd core
pip install -r requirements.txt
```
Then refer to the scripts in core/scripts to start pb, task, and backend separately (move the script files to the core directory)
Then go here [Download](https://pocketbase.io/docs/) the corresponding pocketbase client and place it in the [/pb](/pb) directory. Then
Note:
- Be sure to start pb first, task and backend are independent processes, the order of startup does not matter, you can also start only one of them as needed;
- Download the pocketbase client for your device from https://pocketbase.io/docs/ and place it in the /core/pb directory;
- For pb runtime issues (including first-time run errors), refer to core/pb/README.md;
- Create and edit the .env file before use, place it in the root directory of the wiseflow code repository (parent directory of the core directory), the .env file can refer to env_sample, detailed configuration instructions below;
```bash
chmod +x run.sh
./run_task.sh # if you just want to scan sites one-time (no loop), use ./run.sh
```
📚 For developers, see /core/README.md for more
This script will automatically determine if pocketbase is already running. If not, it will automatically start. However, please note that when you terminate the process with ctrl+c or ctrl+z, the pocketbase process will not be terminated until you close the terminal.
Access data through pocketbase:
Similarly to Docker deployment, the first run may result in an error. Please follow the screen prompts to create a super user account (must use an email), then fill in the created username and password into the .env file and run again.
http://127.0.0.1:8090/_/ - Admin dashboard UI
Of course, you can also run and set up pocketbase in another terminal in advance (this will avoid the first error). For details, please refer to [pb/README.md](/pb/README.md)
http://127.0.0.1:8090/api/ - REST API
### 4. Model Recommendations [2024-12-09]
### 3. Configuration
Although larger models generally mean better performance, practical tests show that **using Qwen2.5-7b-Instruct and glm-4-9b-chat models can achieve basic effects**. However, considering cost, speed, and effect, I **recommend using Qwen2.5-14B-Instruct as the main model (PRIMARY_MODEL)**.
Copy the env_sample in the directory and rename it to .env, fill in your configuration information (such as LLM service token) as follows:
Here, I still strongly recommend using siliconflow's MaaS service, which provides services for multiple mainstream open-source models, with ample supply. Qwen2.5-7b-Instruct and glm-4-9b-chat currently offer free services. (When using Qwen2.5-14B-Instruct as the main model, crawling 374 web pages, effectively extracting 43 infos, total cost ¥3.07)
😄 If you are willing, you can use my [siliconflow invitation link](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92), so I can also get more token rewards 🌹
Windows users who choose to run the python program directly can set the following items in "Start - Settings - System - About - Advanced System Settings - Environment Variables", and restart the terminal to take effect
**If your information sources are mostly non-Chinese pages and you do not require the extracted infos to be in Chinese, it is more recommended to use models from overseas manufacturers such as openai or claude.**
You can try the third-party proxy **AiHubMix**, seamlessly access a wide range of leading AI models like OpenAI, Claude, Google, Llama, and more with just one API.
- LLM_API_KEY # API KEY for large model inference service
😄 Welcome to use the following invitation link [AiHubMix invitation link](https://aihubmix.com?aff=Gp54) to register 🌹
- LLM_API_BASE # This project relies on the openai sdk, as long as the model service supports the openai interface, it can be used normally by configuring this item, if using openai service, delete this item
🌟 **Please note that wiseflow itself does not limit any model services, as long as the service is compatible with the openAI SDK, including locally deployed services like ollama, Xinference, etc.**
- WS_LOG="verbose" # Set whether to start debug observation, if not needed, delete it
- GET_INFO_MODEL # Model for information extraction and label matching tasks, default is gpt-4o-mini-2024-07-18
- REWRITE_MODEL # Model for merging and rewriting similar information tasks, default is gpt-4o-mini-2024-07-18
- HTML_PARSE_MODEL # Web page parsing model (smart enabled when GNE algorithm is not effective), default is gpt-4o-mini-2024-07-18
- PROJECT_DIR # Location for storing data, cache, and log files, relative path to the code repository, default is the code repository if not filled
- PB_API_AUTH='email|password' # Email and password for pb database admin (note that it must be an email, can be a fictional email)
- PB_API_BASE # This item is not needed for normal use, only when you do not use the default pocketbase local interface (8090)
### 4. Model Recommendations [2024-09-03]
After repeated testing (Chinese and English tasks), the minimum usable models for `GET_INFO_MODEL`, `REWRITE_MODEL`, and `HTML_PARSE_MODEL` are: `"THUDM/glm-4-9b-chat"`, `"Qwen/Qwen2-7B-Instruct"`, and `"Qwen/Qwen2-7B-Instruct"`
Currently, SiliconFlow has officially announced that the `Qwen2-7B-Instruct` and `glm-4-9b-chat` online inference services are free, which means you can use wiseflow "at zero cost"!
😄 If you are willing, you can use my [siliconflow invitation link](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92), so I can also get more token rewards 😄
⚠️ V0.3.1 Update
If you use complex tags with explanations, the glm-4-9b-chat model size cannot guarantee accurate understanding. The models that have been tested to perform well for this type of task are `Qwen/Qwen2-72B-Instruct` and `gpt-4o-mini-2024-07-18`.
### 5. Adding Focus Points and Scheduled Scanning of Sources
### 5. **Adding Focus Points and Scheduled Scanning of Information Sources**
After starting the program, open the pocketbase Admin dashboard UI (http://127.0.0.1:8090/_/)
#### 5.1 Open the focus_point Form
#### 5.1 Open the tags Form
Through this form, you can specify your focus points, and LLM will refine, filter, and categorize information accordingly.
Field description:
- focuspoint, focus point description (required), such as "Shanghai elementary to junior high school information," "cryptocurrency prices"
- explanation, detailed explanation or specific conventions of the focus point, such as "Only official junior high school admission information released by Shanghai" or "Current price, price change data of BTC, ETH"
- activated, whether to activate. If closed, this focus point will be ignored, and it can be re-enabled later.
Through this form, you can specify your focus points, and the LLM will refine, filter, and categorize information accordingly.
tags Field Explanation:
- name, Focus point name
- explaination, Detailed explanation or specific agreement of the focus point, such as "Only official information released by Shanghai regarding junior high school enrollment" (tag name is Shanghai Junior High School Enrollment Information)
- activated, Whether to activate. If turned off, this focus point will be ignored, and can be turned back on later. Activating and deactivating does not require restarting the Docker container, it will update at the next scheduled task.
Note: After updating the focus_point settings (including activated adjustments), **the program needs to be restarted for the changes to take effect.**
#### 5.2 Open the sites Form
Through this form, you can specify custom sources, the system will start background scheduled tasks to perform source scanning, parsing, and analysis locally.
Through this form, you can specify custom information sources. The system will start background scheduled tasks to scan, parse, and analyze the information sources locally.
sites Field Explanation:
sites field description:
- url, the URL of the information source. The information source does not need to be given a specific article page, just the article list page.
- per_hours, scanning frequency, in hours, integer type (1~24 range, we recommend not exceeding once a day, i.e., set to 24)
- activated, whether to activate. If closed, this information source will be ignored, and it can be re-enabled later.
- url, URL of the source, the source does not need to be given a specific article page, just the article list page.
**Adjustments to sites settings do not require restarting the program.**
- per_hours, Scan frequency, in hours, type is integer (1~24 range, we recommend not exceeding once a day, i.e., set to 24)
- activated, Whether to activate. If turned off, this source will be ignored, and can be turned back on later. Activating and deactivating does not require restarting the Docker container, it will update at the next scheduled task.
## 📚 How to Use the Data Crawled by wiseflow in Your Own Program
### 6. Local Deployment
1. Refer to the [dashboard](dashboard) part of the source code for secondary development.
As you can see, this project only requires a 7B\9B size LLM and does not require any vector model, which means that just one 3090RTX (24G VRAM) is enough to fully deploy this project locally.
Note that the core part of wiseflow does not require a dashboard, and the current product does not integrate a dashboard. If you need a dashboard, please download [V0.2.1 version](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1)
Ensure that your local LLM service is compatible with the openai SDK and configure LLM_API_BASE.
2. Directly obtain data from Pocketbase
Note: To enable a 7B~9B size LLM to accurately understand tag explanations, it is recommended to use dspy for prompt optimization, but this requires about 50 manually labeled data. See [DSPy](https://dspy-docs.vercel.app/) for details.
All crawled data by wiseflow will be instantly stored in pocketbase, so you can directly operate the pocketbase database to obtain data.
## 🛡️ License Agreement
PocketBase, as a popular lightweight database, currently has SDKs for Go/Javascript/Python and other languages.
- Go : https://pocketbase.io/docs/go-overview/
- Javascript : https://pocketbase.io/docs/js-overview/
- python : https://github.com/vaphes/pocketbase
This project is open source under the Apache2.0.
## 🛡️ License
For commercial and custom cooperation, please contact Email: 35252986@qq.com
This project is open-source under the [Apache2.0](LICENSE) license.
For commercial and custom cooperation, please contact **Email: 35252986@qq.com**
- Commercial customers, please contact us for registration. The product promises to be forever free.
Commercial customers, please contact us for registration, the product promises to be forever free.
## 📬 Contact
For any questions or suggestions, feel free to contact us via issue.
## 🤝 This project is based on the following excellent open-source projects:
If you have any questions or suggestions, please feel free to leave a message via [issue](https://github.com/TeamWiseFlow/wiseflow/issues).
- GeneralNewsExtractor (General Extractor of News Web Page Body Based on Statistical Learning) https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
- json_repair (Repair invalid JSON documents) https://github.com/josdejong/jsonrepair/tree/main
## 🤝 This Project is Based on the Following Excellent Open-Source Projects:
- 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_repair (Repair invalid JSON documents) https://github.com/josdejong/jsonrepair/tree/main
- python-pocketbase (pocketBase client SDK for python) https://github.com/vaphes/pocketbase
- SeeAct (a system for generalist web agents that autonomously carry out tasks on any given website, with a focus on large multimodal models (LMMs) such as GPT-4Vision.) https://github.com/OSU-NLP-Group/SeeAct
Also inspired by [GNE](https://github.com/GeneralNewsExtractor/GeneralNewsExtractor) and [AutoCrawler](https://github.com/kingname/AutoCrawler).
## Citation
If you reference or cite part or all of this project in your related work, please cite as follows:
If you reference or cite part or all of this project in your related work, please specify the following information:
```
AuthorWiseflow Team
Author: Wiseflow Team
https://github.com/TeamWiseFlow/wiseflow
Licensed under Apache2.0
```
```

View File

@ -1,225 +1,225 @@
# 最高情報責任者Wiseflow
# 首席情報官Wiseflow
**[English](README_EN.md) | [中文](README.md) | [한국어](README_KR.md)**
**[English](README_EN.md) | [简体中文](README.md) | [한국어](README_KR.md)**
🚀 **最高情報責任者**Wiseflowは、ウェブサイト、WeChat公式アカウント、ソーシャルプラットフォームなど、さまざまな情報源から設定された焦点に基づいて情報を抽出し、自動的にラベル付けしてデータベースにアップロードするアジャイルな情報マイニングツールです。
🚀 **首席情報官**Wiseflowは、ウェブサイト、微信公衆号、ソーシャルプラットフォームなど、さまざまな情報源から設定された関心事に基づいて情報を抽出し、自動的にタグ付けしてデータベースにアップロードするアジャイルな情報マイニングツールです。
**私たちが欠けているのは情報ではなく、大量の情報からノイズをフィルタリングし、価値ある情報を明らかにする能力です。**
**私たちが欠けているのは情報ではなく、大量の情報からノイズをフィルタリングし、価値ある情報を明らかにすることです**
## 🔥 V0.3.8バージョン予告
🌱首席情報官がどのようにあなたの時間を節約し、無関係な情報をフィルタリングし、関心のあるポイントを整理するのかを見てみましょう!🌱
wiseflowは2024年12月末までにバージョン0.3.8に正式にアップグレードされる予定で、これはV0.3.xアーキテクチャ下の最終バージョンとなります十分な小修正がない限り、V0.3.9バージョンはありません)。
https://github.com/user-attachments/assets/f6fec29f-2b4b-40f8-8676-8433abb086a7
計画されたアップグレード内容には以下が含まれます:
## 🔥 V0.3.5 バージョンの隆盛な紹介
- general_crawlerを大幅にアップグレード多くの最新のオープンソース技術ソリューションを導入、ページ適応範囲をさらに向上させ、完全なローカルCPU計算を実現つまり、これにLLMオプションを設定する必要がなくなります
- general_crawlerのリストページからURLを抽出する能力、およびリストページと通常の記事ページを区別する能力を向上させる
- 新しいmp_crawlerを導入し、WeChat公式アカウント記事の監視にwxbotを必要としないようにする試み
- 新しい情報抽出llmモデルをテストし、抽出戦略を微調整する。
コミュニティのフィードバックを十分に聞き取り、wiseflowの製品ポジションを再検討し、新しいポジションはより焦点を絞り込んでいます。V0.3.5バージョンは、この新しいポジションの下での新しいアーキテクチャバージョンです。
状況に応じて追加される可能性のある機能:
- 基礎的なクローラーおよびタスク管理フレームワークとして [Crawlee](https://github.com/apify/crawlee-python) を導入し、ページ取得能力を大幅に向上させました。以前に取得できなかった(または取得が文字化けした)ページも現在は良好に取得できるようになりました。今後、良好に取得できないページがあれば、[issue #136](https://github.com/TeamWiseFlow/wiseflow/issues/136) でフィードバックをお願いします;
- 新しい製品ポジション下での新しい情報抽出戦略——「クロールと検査の一体化」、記事の詳細抽出を放棄し、クロール過程でLLMを直接使用してユーザーが関心を持つ情報infosを抽出し、追跡が必要なリンクを自動的に判断します。**あなたが関心を持つことがあなたが必要なことです**
- 最新バージョンv0.23.4のPocketbaseに適合し、フォーム設定を更新しました。また、新しいアーキテクチャではGNEなどのモジュールが不要になり、requirement依存項目が8つに減少しました
- 新しいアーキテクチャのデプロイメントソリューションもより簡単になり、dockerモードでコードリポジトリのホットアップデートをサポートします。これは、今後のアップグレードでdocker buildを繰り返す必要がなくなることを意味します。
- 詳細は [CHANGELOG](CHANGELOG.md) を参照してください
- RSS情報源のサポートを導入
- ソーシャルプラットフォームのサポートを導入(初期は非常に基本的なものになりますので、期待しすぎないでください)。
🌟 **V0.3.x 今後の計画**
上記の内容はdevブランチに段階的にリリースされますので、切り替えて試してみて、積極的に問題をフィードバックしてください。
- [SeeAct](https://github.com/OSU-NLP-Group/SeeAct) ソリューションを導入し、視覚大モデルを使用して複雑なページの操作をガイドします。例えば、スクロール、クリック後に情報が表示される場合などV0.3.6
- 微信公众号のwxbotなしのサブスクリプションをサポートすることを試みますV0.3.7
- RSS情報源のサポートを導入しますV0.3.8
- LLM駆動の軽量な知識グラフを導入し、ユーザーがinfosから洞察を得るのを助けますV0.3.9)。
-----------------------------
## ✋ wiseflow と従来のクローラーツール、AI検索、知識ベースRAGプロジェクトの違いは何ですか
🌱 最高情報責任者がどのようにあなたの時間を節約し、無関係な情報をフィルタリングし、注目すべきポイントを整理するかを見てみましょう! 🌱
wiseflowは2024年6月末にV0.3.0バージョンをリリースして以来、オープンソースコミュニティから広く注目を集めており、さらに多くのメディアが自発的に報道してくれました。ここでまず感謝の意を表します!
- ✅ 汎用ウェブコンテンツパーサー、統計学習オープンソースプロジェクトGNEに依存とLLMを包括的に使用し、90%以上のニュースページに適合;
- ✅ 非同期タスクアーキテクチャ;
- ✅ LLMを使用した情報抽出とラベル分類9BサイズのLLMで完璧にタスクを実行できます
しかし、私たちは一部の関心者がwiseflowの機能ポジションについていくつかの理解のズレを持っていることに気づきました。以下の表は、従来のクローラーツール、AI検索、知識ベースRAG類プロジェクトとの比較を通じて、wiseflowの最新の製品ポジションについての私たちの考えを表しています。
https://github.com/TeamWiseFlow/wiseflow/assets/96130569/bd4b2091-c02d-4457-9ec6-c072d8ddfb16
<img alt="sample.png" src="asset/sample.png" width="1024"/>
## ✋ wiseflowは一般的なクローラーツール、AI検索、知識ベースRAGプロジェクトとどう違うのか
皆様の厚い愛情に感謝し、wiseflowは2024年6月末にV0.3.0バージョンをリリースして以来、オープンソースコミュニティから広く注目を集め、多くのセルフメディアからの積極的な報道も引き寄せられました。まずは感謝の意を表します!
しかし、一部のフォロワーがwiseflowの機能の位置づけについて誤解を持っていることにも気づきました。誤解を避けるために、以下の表を作成し、wiseflowとクローラーツール、AI検索、知識ベースRAGプロジェクトの比較を明確に示します
| | **首席情報官Wiseflow** |
| | **首席情報官Wiseflow** との比較説明|
|-------------|-----------------|
| **クローラーツール** | wiseflowは多くの優れたオープンソースクローラーツールを統合し、LLMに基づく自動化された情報フィルタリング、選別、分類能力を追加しているため、簡単にwiseflow = クローラーツール + AIと考えることができます |
| **AI検索** | AI検索の主なアプリケーションシナリオは**特定の問題の即時質問応答**であり、例えば「XX会社の創設者は誰ですか」、「xxブランドのxx製品はどこで購入できますか」wiseflowの主なアプリケーションシナリオは**ある特定の情報の継続的な収集**であり、例えばXX会社の関連情報の追跡、XXブランドの市場行動の継続的な追跡……これらのシナリオでは、ユーザーは注目点会社、ブランドを提供することしかできず、具体的な検索質問を立てることはできず、一回限りの検索ではなく、継続的な追跡、または自動化された関連追跡が必要です。wiseflowを、継続的にAI検索を自動的に行う「スマートエージェント」、つまり「AI情報官」と簡単に理解できます |
| **知識ベースRAGプロジェクト** | 知識ベースRAGプロジェクトは通常、既存の情報に基づく下流のタスクであり、通常はプライベートな知識企業内の操作マニュアル、製品マニュアル、政府部門の文書などに対応しますwiseflowは現在、下流のタスクを統合しておらず、インターネット上の公開情報に対応しています |
| **クローラーツール** | まず、wiseflowはクローラーツールに基づくプロジェクトです現在のバージョンでは、クローラーフレームワークCrawleeを基にしています。しかし、従来のクローラーツールは情報抽出において人間の介入が必要で、明確なXpathなどを提供する必要があります……これは一般ユーザーを妨げるだけでなく、汎用性も全くありません。異なるウェブサイト既存のウェブサイトのアップグレード後を含むごとに人間が再分析し、抽出コードを更新する必要があります。wiseflowはLLMを使用してウェブページの分析と抽出を自動化することを目指しており、ユーザーはプログラムに関心事を伝えるだけで済みます。この観点から、wiseflowは「自動的にクローラーツールを使用できるAIエージェント」と簡単に理解できます |
| **AI検索** | AI検索の主なアプリケーションシナリオは**具体的な問題の即時回答**です。例「XX社の創設者は誰ですか」、「xxブランドのxx製品はどこで販売されていますか」。ユーザーが求めているのは**一つの答え**ですwiseflowの主なアプリケーションシナリオは**ある方面の情報の継続的な収集**です。例えば、XX社の関連情報の追跡、XXブランドの市場行動の継続的な追跡……これらのシナリオでは、ユーザーは関心事ある会社、あるブランド、さらには情報源サイトURLなどを提供できますが、具体的な検索問題を提起することはできません。ユーザーが求めているのは**一連の関連情報**です|
| **知識ベースRAG類プロジェクト** | 知識ベースRAG類プロジェクトは通常、既存の情報に基づく下流タスクであり、一般的にプライベート知識例えば、企業内の操作マニュアル、製品マニュアル、政府部門の文書などを対象としていますwiseflowは現在、下流タスクを統合しておらず、インターネット上の公開情報を対象としています。「エージェント」の観点から見ると、両者は異なる目的のために構築されたエージェントであり、RAG類プロジェクトは「内部知識アシスタントエージェント」であり、wiseflowは「外部情報収集エージェント」です|
## 🔄 V0.3.1 アップデート
## 📥 インストールと使用
ダッシュボード部分は削除されました。ダッシュボードが必要な場合は、[V0.2.1 バージョン](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1) をダウンロードしてください。
### 1. コードリポジトリのクローン
👏 9BサイズのLLMTHUDM/glm-4-9b-chatの一部は、安定した情報抽出出力を実現できますが、複雑な意味のタグ「党建設」などや特定の収集が必要なタグ「コミュニティ活動」のみを収集し、コンサートなどの大規模なイベント情報は含まないについては、
現在のプロンプトでは正確な抽出ができません。そこで、このバージョンでは各タグに説明フィールドを追加し、入力によってより明確なタグ指定ができるようにしました。
_注複雑な説明にはより大規模なモデルが必要です。詳細は [モデル推奨 2024-09-03](###-4. モデル推奨 [2024-09-03]) を参照してください_
👏 また、前バージョンのプロンプト言語選択の問題出力結果には影響しませんに対処し、現在のバージョンではさらにシンプルなソリューションを採用しています。ユーザーはシステム言語を指定する必要がなくなりましたDockerではそれほど直感的ではありません、システムはタグとその説明に基づいてプロンプトの言語つまり情報の出力言語を判断し、wiseflowの展開と使用をさらに簡素化します。**ただし、現在wiseflowは簡体字中国語と英語のみをサポートしており、他の言語のニーズはcore/insights/get_info.pyのプロンプトを変更することで実現できます**
## 🌟 wiseflowをあなたのアプリケーションに統合する方法
wiseflowはネイティブのLLMアプリケーションで、7B〜9BサイズのLLMだけで情報のマイニング、フィルタリング、分類を効果的に行うことができ、ベクトルモデルは不要です。システムオーバーヘッドが非常に小さいため、さまざまなハードウェア環境でのローカルおよびプライベート展開に適しています。
wiseflowはマイニングされた情報を内蔵のPocketbaseデータベースに保存します。つまり、このシナリオではwiseflowのコードを理解する必要はなく、データベースに対して読み取り操作を行うだけです
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
## 📥 インストールと使用方法
### 1. リポジトリのクローン
🌹 スターリングとフォークは良い習慣です 🌹
🌹 いいね、forkは良い習慣です 🌹
```bash
git clone https://github.com/TeamWiseFlow/wiseflow.git
cd wiseflow
```
### 2. Dockerを使用して実行することを推奨
### 2. env_sample を参考に .env ファイルを core ディレクトリに配置
🌟 **ここは以前のバージョンと異なります**。V0.3.5からは .env を coreフォルダに配置する必要があります。
また、V0.3.5からenv設定が大幅に簡素化され、必須の設定項目は3つだけです。具体的には以下の通り
- LLM_API_KEY=""
大モデルサービスのキーで、これは必須です
- LLM_API_BASE="https://api.siliconflow.cn/v1"
サービスインターフェースのアドレスで、openai sdk をサポートする任意のサービスプロバイダーを使用できます。直接openaiのサービスを使用する場合、この項目は記入不要です
- PB_API_AUTH="test@example.com|1234567890"
pocketbase データベースの superuser ユーザー名とパスワードで、| で区切ってください
以下はオプションの設定です:
- #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またはポートで実行されていない場合にのみ設定が必要で、デフォルトの場合は無視してください。
### 3.1 dockerを使用して実行
✋ V0.3.5バージョンのアーキテクチャと依存関係は以前のバージョンと大きく異なるため、必ずコードを再取得し、古いバージョンのイメージpb_dataフォルダを含むを削除し、再構築してください
```bash
cd wiseflow
docker compose up
```
注意:
**注意:**
- wiseflowコードリポジトリのルートディレクトリで上記のコマンドを実行してください;
初めてdocker containerを実行すると、プログラムがエラーを報告する可能性があります。これは正常な現象です。画面の指示に従ってsuper userアカウントを作成してください必ずメールアドレスを使用してください。そして、作成したユーザー名とパスワードを.envファイルに記入し、containerを再起動してください。
- 実行前に.envファイルを作成し、Dockerfileと同じディレクトリwiseflowコードリポジトリのルートディレクトリに配置してください。.envファイルはenv_sampleを参照できます;
🌟 dockerソリューションはデフォルトで task.py を実行します。つまり、定期的にクロール-抽出タスクを実行します起動時にすぐに1回実行され、その後1時間ごとに1回起動されます
- 初回のdockerコンテナ実行時にエラーが発生することがありますが、これはpbリポジトリの管理者アカウントがまだ作成されていないためです。
### 3.2 python環境を使用して実行
- この時点でコンテナを実行したままにし、ブラウザを開いてhttp://127.0.0.1:8090/_/にアクセスし、プロンプトに従って管理者アカウントを作成してください(メールアドレスを使用する必要があります)。そして、作成した管理者のメールアドレス(再び、メールアドレスを使用する必要があります)とパスワードを.envファイルに入力し、コンテナを再起動してください。
✋ V0.3.5バージョンのアーキテクチャと依存関係は以前のバージョンと大きく異なるため、必ずコードを再取得し、pb_dataを削除または再構築してください
_コンテナのタイムゾーンと言語を変更したい場合は、以下のコマンドでイメージを実行してください_
```bash
docker run -e LANG=zh_CN.UTF-8 -e LC_CTYPE=zh_CN.UTF-8 your_image
```
### 2. [代替案] Pythonを直接使用して実行
condaを使用して仮想環境を構築することをお勧めします
```bash
cd wiseflow
conda create -n wiseflow python=3.10
conda activate wiseflow
cd core
pip install -r requirements.txt
```
その後、core/scriptsのスクリプトを参照してpb、task、backendを個別に起動してくださいスクリプトファイルをcoreディレクトリに移動してください
その後、ここ [ダウンロード](https://pocketbase.io/docs/) から対応するpocketbaseクライアントを取得し、[/pb](/pb) ディレクトリに配置します。そして
注意:
```bash
chmod +x run.sh
./run_task.sh # もしサイトを1回だけスキャンしたい場合ループなし、./run.sh を使用してください
```
- pbを最初に起動する必要があります。taskとbackendは独立したプロセスで、起動順序は問いません。必要に応じてどちらか一方だけを起動することもできます;
このスクリプトは、pocketbaseがすでに実行中かどうかを自動的に判断します。実行中でない場合、自動的に起動します。ただし、ctrl+cまたはctrl+zでプロセスを終了した場合、pocketbaseプロセスは終了せず、terminalを閉じるまで続行されます。
- https://pocketbase.io/docs/からデバイスに合わせたpocketbaseクライアントをダウンロードし、/core/pbディレクトリに配置してください;
また、dockerデプロイと同様に、初回実行時にエラーが発生する可能性があります。画面の指示に従ってsuper userアカウントを作成してください必ずメールアドレスを使用してください。そして、作成したユーザー名とパスワードを.envファイルに記入し、再度実行してください。
- pbの実行時の問題初回実行時のエラーを含むについては、core/pb/README.mdを参照してください;
もちろん、別のterminalで事前にpocketbaseを実行して設定することもできますこれにより初回のエラーを回避できます。具体的には [pb/README.md](/pb/README.md) を参照してください
- 使用前に.envファイルを作成し、wiseflowコードリポジトリのルートディレクトリcoreディレクトリの親ディレクトリに配置してください。.envファイルはenv_sampleを参照できます。詳細な設定説明は以下を参照してください;
### 4. モデル推奨 [2024-12-09]
📚 開発者向け、詳細は/core/README.mdを参照してください
モデルのパラメータ数が多いほど、より優れた性能を意味しますが、実測では**Qwen2.5-7b-Instructとglm-4-9b-chatモデルを使用するだけで基本的な効果を得られる**ことがわかりました。ただし、コスト、速度、効果を総合的に考慮すると、主モデル
**PRIMARY_MODELにQwen2.5-14B-Instructを使用することをより推奨します**。
pocketbaseを介して取得したデータ
ここでは、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)を使用してください。そうすれば、私もより多くのトークンを獲得できます 🌹
http://127.0.0.1:8090/_/ - 管理者ダッシュボードUI
**もしあなたの情報源が主に非中国語のページであり、抽出されたinfoを中国語にする必要がない場合、openaiやclaudeなどの海外メーカーのモデルを使用することをより推奨します。**
サードパーティのプロキシ **AiHubMix** を試すことができます。OpenAI、Claude、Google、Llamaなどの幅広い主要なAIモデルに、たった1つのAPIでシームレスにアクセスできます。
http://127.0.0.1:8090/api/ - REST API
😄 以下の招待リンク [AiHubMix招待リンク](https://aihubmix.com?aff=Gp54) を使用して登録してください 🌹
### 3. 設定
🌟 **wiseflow自体はどのモデルサービスにも限定されておらず、openAI SDKと互換性のあるサービスであれば、ローカルにデプロイされたollama、Xinferenceなどのサービスも含まれます**
ディレクトリ内のenv_sampleをコピーし、.envに名前を変更して、以下のように設定情報LLMサービストークンなどを入力してください
WindowsユーザーがPythonプログラムを直接実行する場合、「スタート - 設定 - システム - バージョン情報 - 詳細システム設定 - 環境変数」で以下の項目を設定し、ターミナルを再起動して有効にしてください
### 5. **関心事と定期的なスキャン情報源の追加**
プログラムを起動した後、pocketbase Admin dashboard UI (http://127.0.0.1:8090/_/) を開きます
#### 5.1 focus_point フォームを開く
- LLM_API_KEY # 大規模モデル推論サービスAPIキー
このフォームを使用して、あなたの関心事を指定できます。LLMはこれに基づいて情報を抽出、フィルタリング、分類します。
フィールド説明:
- focuspoint, 関心事の説明(必須)、例えば「上海の小学校から中学校への情報」、「暗号通貨価格」
- explanation関心事の詳細な説明または具体的な約束、例えば「上海市公式発表の中学校進学情報のみ」、「BTC、ETHの現在価格、変動率データ」など
- activated, 有効化するかどうか。無効にするとこの関心事は無視され、無効にした後再び有効にできます。
- LLM_API_BASE # このプロジェクトはopenai sdkに依存しており、モデルサービスがopenaiインターフェースをサポートしている場合、この項目を設定することで正常に使用できます。openaiサービスを使用する場合、この項目を削除してください
- WS_LOG="verbose" # デバッグ観察を開始するかどうかを設定します。必要がない場合は削除してください
- GET_INFO_MODEL # 情報抽出とラベルマッチングタスクのモデル、デフォルトはgpt-4o-mini-2024-07-18
- REWRITE_MODEL # 類似情報のマージと書き換えタスクのモデル、デフォルトはgpt-4o-mini-2024-07-18
- HTML_PARSE_MODEL # ウェブページ解析モデルGNEアルゴリズムが効果的でない場合に自動的に有効になります、デフォルト
- PROJECT_DIR # データ、キャッシュおよびログファイルの保存場所、コードリポジトリに対する相対パス、デフォルトでは空欄でコードリポジトリ内に保存
- PB_API_AUTH='email|password' # pbデータベース管理者のメールアドレスとパスワード必ずメールアドレスを使用してください、フィクションのメールアドレスでも可
- PB_API_BASE # 通常の使用にはこの項目は必要ありません、デフォルトのpocketbaseローカルインターフェース8090を使用しない場合のみ指定します
### 4. モデル推奨 [2024-09-03]
反復テストを経て(中国語・英語タスク)**GET_INFO_MODEL**、**REWRITE_MODEL**、**HTML_PARSE_MODEL** の最小利用可能なモデルはそれぞれ:**"THUDM/glm-4-9b-chat"**、**"Qwen/Qwen2-7B-Instruct"**、**"Qwen/Qwen2-7B-Instruct"** です。
現在、SiliconFlowはQwen2-7B-Instruct、glm-4-9b-chatのオンライン推論サービスが無料であることを公式に発表しました。これは、あなたが「ゼロコスト」でwiseflowを利用できることを意味します
😄 ご好意ある限り、私の[siliconflow招待リンク](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92)を使用していただけると、私もより多くのトークン報酬を得ることができます 😄
⚠️ **V0.3.1 更新**
説明付きの複雑なタグを使用している場合、glm-4-9b-chat規模のモデルでは正確な理解が保証できません。現時点でのテスト結果では、この種類のタスクに対して効果が高いモデルは **Qwen/Qwen2-72B-Instruct****gpt-4o-mini-2024-07-18** です。
### 5. **関心事項と定期スキャン情報ソースの追加**
プログラムを起動したら、pocketbase AdminダッシュボードUI (http://127.0.0.1:8090/_/) を開きます。
#### 5.1 tagsフォームを開く
このフォームを通じてあなたの関心事項を指定することができます。LLMはこれに基づいて情報を抽出、フィルタリングし、分類します。
tags のフィールド説明:
- name, 関心事項の名前
- explaination, 関心事項の詳細な説明または具体的な規定、例えば「上海市の公的な中学校進学情報のみ」(タグ名は「上海中学校進学情報」)
- activated, 有効化されているかどうか。無効化するとその関心事項は無視されます。無効化後も再度有効化することができます。Dockerコンテナの再起動は必要ありません、次の定期タスク時に更新されます。
注意focus_pointの更新設定activatedの調整を含む後、**プログラムを再起動する必要があります。**
#### 5.2 sitesフォームを開く
このフォームを通じてカスタム情報ソースを指定できます。システムはバックグラウンドで定期タスクを開始し、情報ソースのスキャン、解析、分析を行います。
このフォームを使用して、カスタム情報源を指定できます。システムはバックグラウンドで定期的なタスクを開始し、ローカルで情報源のスキャン、解析、分析を実行します。
sitesフィールド説明:
- url, 情報ソースのURL、具体的な記事ページではなくリストページを指定してください
- per_hours, スキャン頻度、時間単位、整数型124の範囲、スキャン頻度は1日に1回を超えないように、つまり24と設定することを推奨します)
- activated, 有効化されているかどうか。無効化するとその情報ソースは無視されます。無効化後も再度有効化することができます。Dockerコンテナの再起動は必要ありません、次の定期タスク時に更新されます。
sitesフィールド説明
- url, 情報源のurlで、情報源は具体的な記事ページを指定する必要はありません。記事リストページを指定するだけで十分です。
- per_hours, スキャン頻度で、単位は時間、整数型1~24の範囲、スキャン頻度は1日1回を超えないように、つまり24に設定することをお勧めします
- activated, 有効化するかどうか。無効にするとこの情報源は無視され、無効にした後再び有効にできます。
### 6. ローカル展開
**sitesの設定調整は、プログラムを再起動する必要はありません。**
ご覧の通り、本プロジェクトは最低でも7b/9bサイズのLLMを使用するだけでよく、任意のベクトルモデルは必要ありません。つまり、3090RTX24GB VRAMがあれば本プロジェクトを完全にローカルで展開することが可能です。
あなたのローカル展開LLMサービスがopenai SDKと互換性があることを確認し、LLM_API_BASE を設定してください。
## 📚 あなた自身のプログラムでwiseflowがクロールしたデータをどのように使用するか
7b9b規模のLLMがタグの説明を正確に理解できるようにするためには、dspyを使用したプロンプトの最適化が推奨されますが、これは約50件の手動ラベル付けデータの累積が必要となります。詳しくは [DSPy](https://dspy-docs.vercel.app/) をご覧ください。
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) ライセンスの元でオープンソースです。
本プロジェクトは [Apache2.0](LICENSE) オープンソースライセンスに基づいています。
商用利用およびカスタマイズ協力については、**Email35252986@qq.com** までお問い合わせください。
商用およびカスタムコラボレーションについては、**Email35252986@qq.com** までお問い合わせください
- 商用顧客は私たちに報告登録をお願いします。製品は永遠に無料で提供されることを約束します。
- コマーシャル顧客は私たちに報告して登録してください、製品は永久に無料です。
## 📬 連絡先
何か質問や提案がありましたら、[issue](https://github.com/TeamWiseFlow/wiseflow/issues) を通じて私たちと連絡を取りましょう。
何か質問や提案があれば、[issue](https://github.com/TeamWiseFlow/wiseflow/issues) でメッセージを残してください。
## 🤝 本プロジェクトは以下の優れたオープンソースプロジェクトに基づいています:
- GeneralNewsExtractor General Extractor of News Web Page Body Based on Statistical Learning https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
- 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
- SeeActa system for generalist web agents that autonomously carry out tasks on any given website, with a focus on large multimodal models (LMMs) such as GPT-4Vision. https://github.com/OSU-NLP-Group/SeeAct
また、[GNE](https://github.com/GeneralNewsExtractor/GeneralNewsExtractor)、[AutoCrawler](https://github.com/kingname/AutoCrawler) からもインスピレーションを受けています。
## Citation
本プロジェクトの一部または全部を参考にしたり引用したりする場合は、以下の情報を明記してください:
もしあなたが関連する作業で本プロジェクトの一部または全部を参照または引用した場合、以下の情報を記載してください:
```
AuthorWiseflow Team
https://github.com/TeamWiseFlow/wiseflow
Licensed under Apache2.0
```
```

View File

@ -1,219 +1,220 @@
# 수석 정보 책임자 (Wiseflow)
**[English](README_EN.md) | [日本語](README_JP.md) | [中文](README.md)**
**[English](README_EN.md) | [日本語](README_JP.md) | [简体中文](README.md)**
🚀 **수석 정보 책임자** (Wiseflow)는 웹사이트, 위챗 공식 계정, 소셜 플랫폼 등 다양한 정보원에서 설정된 관심사를 기반으로 정보를 추출하고, 자동으로 라벨링하여 데이터베이스에 업로드하는 민첩한 정보 마이닝 도구입니다.
🚀 **수석 정보 책임자** (Wiseflow)는 웹사이트, 위챗 공중 계정, 소셜 플랫폼 등 다양한 정보 소스에서 설정된 관심사에 따라 정보를 추출하고, 자동으로 태그를 분류하여 데이터베이스에 업로드하는 민첩한 정보 마이닝 도구입니다.
**우리가 부족한 것은 정보가 아니라, 방대한 양의 정보에서 노이즈를 필터링하여 가치 있는 정보를 드러내는 능력입니다.**
**우리가 부족한 것은 정보가 아니라, 방대한 정보에서 노이즈를 필터링하여 가치 있는 정보를 드러내는 입니다.**
## 🔥 V0.3.8 버전 예고
🌱 수석 정보 책임자가 어떻게 시간을 절약하고, 관련 없는 정보를 필터링하며, 관심 사항을 정리하는지 살펴보세요! 🌱
wiseflow는 2024년 12월 말까지 버전 0.3.8로 정식 업그레이드될 예정이며, 이는 V0.3.x 아키텍처 하의 최종 버전이 될 것입니다(충분한 사소한 수정이 없는 한, V0.3.9 버전은 없을 것입니다).
https://github.com/user-attachments/assets/f6fec29f-2b4b-40f8-8676-8433abb086a7
계획된 업그레이드 내용은 다음과 같습니다:
## 🔥 V0.3.5 버전 소개
- general_crawler를 크게 업그레이드(많은 최신 오픈 소스 기술 솔루션 도입), 페이지 적응 범위를 더욱 향상시키고 완전한 로컬 CPU 계산을 실현(즉, 이를 위해 LLM 옵션을 구성할 필요가 없음);
- general_crawler의 목록 페이지에서 URL을 추출하는 능력, 그리고 목록 페이지와 일반 기사 페이지를 구별하는 능력을 향상시키기;
- 새로운 mp_crawler를 도입하여 웨이신 공식 계정 기사 모니터링에 wxbot가 필요하지 않도록 시도;
- 새로운 정보 추출 llm 모델을 테스트하고 추출 전략을 미세 조정하기.
커뮤니티 피드백을 충분히 수렴한 후, 우리는 wiseflow의 제품 위치를 재정립하였으며, 새로운 위치는 더욱 집중되어 있습니다. V0.3.5 버전은 이 새로운 위치에 기반한 완전히 새로운 아키텍처 버전입니다.
상황에 따라 추가될 수 있는 기능:
- [Crawlee](https://github.com/apify/crawlee-python)를 기본 크롤러 및 작업 관리 프레임워크로 도입하여 페이지 획득 능력을 크게 향상시켰습니다. 이전에 획득할 수 없었던 (또는 코드가 깨진) 페이지를 현재는 잘 획득할 수 있습니다. 향후 획득이 잘 되지 않는 페이지가 있다면, [issue #136](https://github.com/TeamWiseFlow/wiseflow/issues/136)에 피드백을 주시기 바랍니다.
- 새로운 제품 위치에 따른 새로운 정보 추출 전략 — "크롤링과 조사 통합"을 도입하였습니다. 기사 상세 추출을 포기하고, 크롤링 과정에서 llm을 사용하여 사용자가 관심 있는 정보(infos)를 직접 추출하며, 추가로 크롤링할 가치가 있는 링크를 자동으로 판단합니다. **당신이 관심 있는 것이 당신이 필요한 것입니다.**
- 최신 버전(v0.23.4)의 Pocketbase에 적합하며, 폼 구성을 업데이트하였습니다. 또한 새로운 아키텍처는 GNE 등의 모듈이 더 이상 필요하지 않으며, requirement 종속 항목이 8개로 줄었습니다.
- 새로운 아키텍처의 배포 방식도 더욱 간편해졌으며, docker 모드는 코드 저장소 핫 업데이트를 지원합니다. 이는 향후 업그레이드 시 docker build를 다시 수행할 필요가 없음을 의미합니다.
- 더 많은 세부 사항은 [CHANGELOG](CHANGELOG.md)를 참조하세요.
- RSS 정보 소스 지원 도입;
- 소셜 플랫폼 지원 도입(초기에는 매우 기본적인 것이 될 것이므로 너무 많은 기대를 하지 마십시오).
🌟 **V0.3.x 향후 계획**
위의 내용은 dev 브랜치에 점진적으로 릴리스될 예정이며, 전환하여 시도해 보고, 적극적으로 이슈를 피드백해 주세요.
- [SeeAct](https://github.com/OSU-NLP-Group/SeeAct) 방식을 도입하여, 시각 대형 모델을 통해 복잡한 페이지의 작업을 지원합니다. 예를 들어, 스크롤, 클릭 후 정보 표시 등 (V0.3.6).
- 위챗 공중 계정 무료 구독 지원 시도 (V0.3.7).
- RSS 정보 소스 지원 도입 (V0.3.8).
- LLM 기반의 경량 지식 그래프 도입 시도, 사용자가 infos에서 통찰력을 구축하는 데 도움을 줍니다 (V0.3.9).
-----------------------------
## ✋ wiseflow는 전통적인 크롤러 도구, AI 검색, 지식 베이스(RAG) 프로젝트와 어떻게 다를까요?
🌱 수석 정보 책임자가 어떻게 당신의 시간을 절약하고, 관련 없는 정보를 필터링하며, 주목할 만한 요점을 정리하는지 살펴보세요! 🌱
wiseflow는 2024년 6월 말 V0.3.0 버전 출시 이후 오픈소스 커뮤니티의 광범위한 관심을 받았으며, 심지어 많은 자체 미디어의 자발적인 보도까지 이끌어냈습니다. 이에 먼저 감사의 말씀을 전합니다!
- ✅ 범용 웹 콘텐츠 파서, 통계 학습(오픈 소스 프로젝트 GNE에 의존)과 LLM을 포괄적으로 사용하여 90% 이상의 뉴스 페이지에 적합;
- ✅ 비동기 작업 아키텍처;
- ✅ LLM을 사용한 정보 추출 및 라벨 분류 (9B 크기의 LLM으로 작업을 완벽하게 수행할 수 있습니다)!
그러나 우리는 일부 관심 있는 분들이 wiseflow의 기능 위치에 대해 일부 이해 오류가 있음을 알게 되었습니다. 아래 표는 전통적인 크롤러 도구, AI 검색, 지식 베이스(RAG) 프로젝트와의 비교를 통해 wiseflow 제품의 최신 위치에 대한 우리의 생각을 나타냅니다.
https://github.com/TeamWiseFlow/wiseflow/assets/96130569/bd4b2091-c02d-4457-9ec6-c072d8ddfb16
<img alt="sample.png" src="asset/sample.png" width="1024"/>
## ✋ wiseflow는 일반적인 크롤링 도구, AI 검색, 지식 베이스(RAG) 프로젝트와 어떻게 다른가요?
여러분의 두터운 사랑에 감사드리며, wiseflow는 2024년 6월 말에 V0.3.0 버전을 출시한 이후로 오픈 소스 커뮤니티로부터 광범위한 관심을 받았으며, 많은 자체 미디어로부터의 적극적인 보도도 끌어들였습니다. 먼저 감사의 말씀을 전합니다!
그러나 일부 팔로워들이 wiseflow의 기능 위치에 대해 오해를 가지고 있음을 알게 되었습니다. 오해를 피하기 위해, 우리는 다음과 같은 표를 만들어 wiseflow와 크롤링 도구, AI 검색, 지식 베이스(RAG) 프로젝트의 비교를 명확히 보여줍니다:
| | **수석 정보 관리자 (Wiseflow)** |
| | **수석 정보 책임자 (Wiseflow)**와의 비교 설명 |
|-------------|-----------------|
| **크롤링 도구** | wiseflow는 많은 우수한 오픈 소스 크롤링 도구를 통합하고 LLM 기반의 자동화된 정보 필터링, 선별, 분류 능력을 추가하여, 간단히 wiseflow = 크롤링 도구 + AI로 생각할 수 있습니다 |
| **AI 검색** | AI 검색의 주요 애플리케이션 시나리오는 **특정 문제에 대한 즉각적인 질문 응답**입니다. 예를 들어: "XX 회사의 창립자는 누구입니까" 또는 "xx 브랜드의 xx 제품은 어디서 구매할 수 있습니까"; wiseflow의 주요 애플리케이션 시나리오는 **특정 정보의 지속적인 수집**입니다. 예를 들어 XX 회사의 관련 정보 추적, XX 브랜드의 시장 행동 지속적인 추적... 이러한 시나리오에서 사용자는 주목 포인트(회사, 브랜드)만 제공할 수 있으며, 구체적인 검색 질문을 제기할 수 없으며, 일회성 검색이 아니라 지속적인 추적 또는 자동화된 관련 추적이 필요합니다. wiseflow를 지속적으로 AI 검색을 자동으로 수행하는 "스마트 에이전트", 즉 "AI 정보 관리자"로 간단히 이해할 수 있습니다 |
| **지식 베이스(RAG) 프로젝트** | 지식 베이스(RAG) 프로젝트는 일반적으로 기존 정보에 기반한 하류 작업이며, 일반적으로 개인 정보(기업 내 운영 매뉴얼, 제품 매뉴얼, 정부 부서의 문서 등)에 직면합니다; wiseflow는 현재 하류 작업을 통합하지 않으며, 인터넷상의 공개 정보에 직면합니다 |
| **크롤러 도구** | 먼저 wiseflow는 크롤러 도구 기반 프로젝트입니다 (현재 버전 기준으로, 우리는 크롤러 프레임워크 Crawlee를 기반으로 합니다). 그러나 전통적인 크롤러 도구는 정보 추출 측면에서 인간의 개입이 필요하며, 명확한 Xpath 등을 제공해야 합니다. 이는 일반 사용자를 막을 뿐만 아니라 일반성이 전혀 없으며, 다른 웹사이트 (기존 웹사이트 업그레이드 포함)에 대해서는 인간이 다시 분석을 수행하고 추출 코드를 업데이트해야 합니다. wiseflow는 LLM을 사용하여 웹페이지의 자동 분석 및 추출 작업을 추구하며, 사용자는 프로그램에 그의 관심사만 알려주면 됩니다. 이 관점에서 wiseflow를 "자동으로 크롤러 도구를 사용할 수 있는 AI 에이전트"로 간단히 이해할 수 있습니다. |
| **AI 검색** | AI 검색의 주요 응용 시나리오는 **구체적인 문제의 즉각적인 질문 및 답변**입니다. 예: "XX 회사의 창립자는 누구인가", "xx 브랜드의 xx 제품은 어디서 구매할 수 있는가". 사용자는 **하나의 답변**을 원합니다. wiseflow의 주요 응용 시나리오는 **특정 측면의 정보 지속적 수집**입니다. 예: XX 회사의 관련 정보 추적, XX 브랜드의 시장 행동 지속 추적 등. 이러한 시나리오에서 사용자는 관심사 (특정 회사, 특정 브랜드) 및 신뢰할 수 있는 소스 (사이트 URL 등)를 제공할 수 있지만, 구체적인 검색 질문을 제시할 수 없습니다. 사용자는 **일련의 관련 정보**를 원합니다. |
| **지식 베이스 (RAG) 프로젝트** | 지식 베이스 (RAG) 프로젝트는 일반적으로 기존 정보를 기반으로 한 하류 작업을 기반으로 하며, 일반적으로 개인 지식 (예: 기업 내 운영 매뉴얼, 제품 매뉴얼, 정부 부서의 문서 등)을 대상으로 합니다. wiseflow는 현재 하류 작업을 통합하지 않으며, 인터넷상의 공개 정보를 대상으로 합니다. "에이전트"의 관점에서 볼 때, 둘은 서로 다른 목적으로 구축된 에이전트입니다. RAG 프로젝트는 "내부 지식 보조 에이전트"이며, wiseflow는 "외부 정보 수집 에이전트"입니다. |
## 🔄 V0.3.1 업데이트
## 📥 설치 및 사용
대시보드 부분이 삭제되었습니다. 대시보드가 필요하다면, [V0.2.1 버전](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1)을 다운로드하십시오.
### 1. 코드 저장소 복제
👏 일부 9B 크기의 LLM(THUDM/glm-4-9b-chat)은 이미 안정적인 정보 추출 출력을 달성할 수 있지만, 복잡한 의미의 태그(예: "당 건설") 또는 특정 수집이 필요한 태그(예: "커뮤니티 활동"만 수집하고 콘서트와 같은 대규모 이벤트 정보는 포함하지 않음)에 대해서는
현재 프롬프트로는 정확한 추출을 수행할 수 없습니다. 따라서 이 버전에서는 각 태그에 설명 필드를 추가하여 입력을 통해 더 명확한 태그 지정이 가능하도록 했습니다.
_참고: 복잡한 설명에는 더 큰 규모의 모델이 필요합니다. 자세한 내용은 [모델 추천 2024-09-03](###-4. 모델 추천 [2024-09-03])을 참조하십시오_
👏 또한, 이전 버전의 프롬프트 언어 선택 문제(출력 결과에는 영향을 주지 않음)에 대응하여, 현재 버전에서는 솔루션을 더욱 간소화했습니다. 사용자는 더 이상 시스템 언어를 지정할 필요가 없으며(Docker에서는 그다지 직관적이지 않습니다), 시스템은 태그와 그 설명을 기반으로 프롬프트 언어(즉, 정보의 출력 언어)를 판단하여 wiseflow의 배포 및 사용을 더욱 간소화합니다. **하지만 현재 wiseflow는 간체 중국어와 영어만 지원하며, 다른 언어의 요구 사항은 core/insights/get_info.py의 프롬프트를 변경하여 구현할 수 있습니다**
## 🌟 애플리케이션에 wiseflow를 통합하는 방법
wiseflow는 네이티브 LLM 애플리케이션으로, 7B~9B 크기의 LLM만으로도 정보 마이닝, 필터링, 분류 작업을 효과적으로 수행할 수 있으며, 벡터 모델이 필요하지 않습니다. 시스템 오버헤드가 매우 작기 때문에 다양한 하드웨어 환경에서의 로컬 및 프라이빗 배포에 적합합니다.
wiseflow는 마이닝된 정보를 내장된 Pocketbase 데이터베이스에 저장하므로, 이 시나리오에서는 wiseflow 코드를 이해할 필요가 없으며, 데이터베이스에 대해 읽기 작업만 수행하면 됩니다!
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
## 📥 설치 및 사용 방법
### 1. 저장소 복제
🌹 스타링과 포크는 좋은 습관입니다 🌹
🌹 좋아요, fork는 좋은 습관입니다 🌹
```bash
git clone https://github.com/TeamWiseFlow/wiseflow.git
cd wiseflow
```
### 2. Docker를 사용하여 실행하는 것을 권장
### 2. env_sample 참조하여 .env 파일 구성하고 core 디렉토리에 배치
🌟 **이전 버전과 다릅니다** V0.3.5부터 .env 파일을 core 폴더에 배치해야 합니다.
또한 V0.3.5부터 env 구성이 크게 단순화되었으며, 필수 구성 항목은 세 가지뿐입니다. 구체적인 내용은 다음과 같습니다:
- LLM_API_KEY=""
대형 모델 서비스 키, 이는 필수입니다.
- LLM_API_BASE="https://api.siliconflow.cn/v1"
서비스 인터페이스 주소, openai sdk를 지원하는 모든 서비스 제공자를 사용할 수 있습니다. openai 서비스를 직접 사용하는 경우, 이 항목은 비워둘 수 있습니다.
- PB_API_AUTH="test@example.com|1234567890"
pocketbase 데이터베이스의 superuser 사용자 이름 및 비밀번호, |로 구분하세요.
아래는 선택적 구성입니다:
- #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 또는 포트에서 실행되지 않는 경우에만 구성해야 합니다. 기본적으로 무시하면 됩니다.
### 3.1 docker를 사용하여 실행
✋ V0.3.5 버전의 아키텍처 및 종속성은 이전 버전과 크게 다릅니다. 반드시 코드를 다시 가져와 이전 버전 이미지 (pb_data 폴더 포함)를 삭제하고 다시 build하세요!
```bash
cd wiseflow
docker compose up
```
주의:
**주의:**
- wiseflow 코드 저장소의 루트 디렉토리에서 위의 명령을 실행하십시오;
처음 docker container를 실행할 때 프로그램이 오류를 보고할 수 있습니다. 이는 정상적인 현상입니다. 화면의 프롬프트에 따라 superuser 계정을 생성하세요 (반드시 이메일 주소를 사용하세요). 그런 다음 생성된 사용자 이름과 비밀번호를 .env 파일에 입력하고 container를 다시 시작하세요.
- 실행 전에 .env 파일을 생성하고, Dockerfile과 동일한 디렉토리(wiseflow 코드 저장소의 루트 디렉토리)에 배치하십시오. .env 파일은 env_sample을 참조할 수 있습니다;
🌟 docker 솔루션은 기본적으로 task.py를 실행하며, 이는 주기적으로 크롤링-추출 작업을 실행합니다 (시작 시 즉시 한 번 실행된 후, 매 시간마다 한 번씩 실행됩니다).
- 처음 docker 컨테이너를 실행할 때 오류가 발생할 수 있습니다. 이는 pb 저장소의 관리자 계정이 아직 생성되지 않았기 때문입니다.
### 3.2 python 환경에서 실행
- 이 시점에서 컨테이너를 실행한 상태로 두고, 브라우저를 열어 http://127.0.0.1:8090/_/에 접속하여 프롬프트에 따라 관리자 계정을 생성하십시오(반드시 이메일을 사용해야 합니다). 그런 다음, 생성한 관리자의 이메일 주소(다시 말하지만, 이메일을 사용해야 합니다)와 비밀번호를 .env 파일에 입력하고, 컨테이너를 다시 시작하십시오.
✋ V0.3.5 버전의 아키텍처 및 종속성은 이전 버전과 크게 다릅니다. 반드시 코드를 다시 가져와 pb_data를 삭제 (또는 재구축)하세요.
_컨테이너의 시간대와 언어를 변경하려면 다음 명령으로 이미지를 실행하십시오_
```bash
docker run -e LANG=zh_CN.UTF-8 -e LC_CTYPE=zh_CN.UTF-8 your_image
```
### 2. [대안] Python을 직접 사용하여 실행
conda를 사용하여 가상 환경을 구축하는 것을 추천합니다.
```bash
cd wiseflow
conda create -n wiseflow python=3.10
conda activate wiseflow
cd core
pip install -r requirements.txt
```
이후 core/scripts 폴더에 있는 스크립트를 참조하여 각각 pb, task, backend를 시작할 수 있습니다 (스크립트 파일을 core 디렉토리로 이동하십시오).
그 후 [다운로드](https://pocketbase.io/docs/) 해당 pocketbase 클라이언트를 [/pb](/pb) 디렉토리에 배치하세요. 그리고
**주의:**
- 반드시 pb를 먼저 시작해야 하며, task와 backend는 독립적인 프로세스이므로 순서는 상관없고, 필요에 따라 하나만 시작해도 됩니다.
- 먼저 여기를 방문하여 https://pocketbase.io/docs/ 본인의 장치에 맞는 pocketbase 클라이언트를 다운로드하고 /core/pb 디렉토리에 배치해야 합니다.
- pb 실행 문제(처음 실행 시 오류 포함)에 대해서는 [core/pb/README.md](/pb/README.md)를 참조하십시오.
- 사용 전에 .env 파일을 생성하고 편집하여 wiseflow 코드 저장소의 루트 디렉토리(core 디렉토리의 상위)에 배치하십시오. .env 파일은 env_sample을 참고하고, 자세한 설정 설명은 아래를 참조하십시오.
```bash
chmod +x run.sh
./run_task.sh # 사이트를 한 번만 스캔하려면 (루프 없이), ./run.sh를 사용하세요
```
📚 개발자를 위한 더 많은 정보는 [/core/README.md](/core/README.md)를 참조하십시오.
이 스크립트는 pocketbase가 이미 실행 중인지 자동으로 판단하며, 실행 중이 아니면 자동으로 시작합니다. 그러나 ctrl+c 또는 ctrl+z로 프로세스를 종료할 때 pocketbase 프로세스는 종료되지 않으며, terminal을 닫을 때까지 계속 실행됩니다.
pocketbase를 통해 액세스한 데이터:
- http://127.0.0.1:8090/_/ - 관리자 대시보드 UI
- http://127.0.0.1:8090/api/ - REST API
또한 docker 배포와 마찬가지로, 처음 실행할 때 오류가 발생할 수 있습니다. 화면의 프롬프트에 따라 superuser 계정을 생성하세요 (반드시 이메일 주소를 사용하세요). 그런 다음 생성된 사용자 이름과 비밀번호를 .env 파일에 입력하고 다시 실행하세요.
### 3. 설정
물론 다른 terminal에서 미리 pocketbase를 실행하고 설정할 수도 있습니다 (이렇게 하면 첫 번째 오류를 방지할 수 있습니다). 구체적인 내용은 [pb/README.md](/pb/README.md)를 참조하세요.
env_sample 파일을 복사하여 .env로 이름을 변경하고, 아래 내용을 참고하여 본인의 설정 정보를 입력하십시오 (예: LLM 서비스 토큰 등).
### 4. 모델 추천 [2024-12-09]
**윈도우 사용자가 Python 프로그램을 직접 실행하려면, “시작 - 설정 - 시스템 - 정보 - 고급 시스템 설정 - 환경 변수”에서 아래 항목을 설정하십시오. 설정 후에는 터미널을 재시작해야 합니다.**
모델의 매개변수 수가 많을수록 더 나은 성능을 의미하지만, 실제 테스트를 통해 **Qwen2.5-7b-Instruct 및 glm-4-9b-chat 모델을 사용하면 기본적인 효과를 얻을 수 있음**이 확인되었습니다. 그러나 비용, 속도 및 효과를 종합적으로 고려할 때, 저는 주 모델 **(PRIMARY_MODEL)로 Qwen2.5-14B-Instruct를 더 추천합니다**.
- LLM_API_KEY # 대형 모델 추론 서비스 API 키
- LLM_API_BASE # 이 프로젝트는 OpenAI SDK를 사용하며, 모델 서비스가 OpenAI 인터페이스를 지원하면 해당 항목을 설정하여 정상적으로 사용할 수 있습니다. OpenAI 서비스를 사용할 경우 이 항목을 삭제하면 됩니다.
- WS_LOG="verbose" # 디버그 모드를 시작할지 여부를 설정합니다. 필요 없으면 삭제하십시오.
- GET_INFO_MODEL # 정보 추출 및 태그 매칭 작업 모델, 기본값은 gpt-4o-mini-2024-07-18
- REWRITE_MODEL # 유사 정보 병합 및 재작성 작업 모델, 기본값은 gpt-4o-mini-2024-07-18
- HTML_PARSE_MODEL # 웹 페이지 파싱 모델 (GNE 알고리즘의 성능이 부족할 때 자동으로 활성화됨), 기본값은 gpt-4o-mini-2024-07-18
- PROJECT_DIR # 데이터, 캐시 및 로그 파일의 저장 위치. 코드 저장소의 상대 경로로 설정되며, 기본값은 코드 저장소입니다.
- PB_API_AUTH='email|password' # pb 데이터베이스 관리자의 이메일과 비밀번호 (반드시 이메일이어야 하며, 가상의 이메일일 수도 있습니다).
- PB_API_BASE # 기본적으로 필요하지 않지만, 기본 pocketbase 로컬 인터페이스(8090)를 사용하지 않는 경우에만 설정해야 합니다.
여기에서 siliconflow (규소 흐름)의 MaaS 서비스를 강력히 추천합니다. 여러 주요 오픈소스 모델의 서비스를 제공하며, 대량 서비스를 제공합니다. Qwen2.5-7b-Instruct 및 glm-4-9b-chat는 현재 무료 서비스를 제공합니다. (주 모델로 Qwen2.5-14B-Instruct를 사용하는 경우, 374개의 웹페이지를 크롤링하고 43개의 유효한 info를 추출하여 총 비용은 ¥3.07입니다).
### 4. 모델 추천 [2024-09-03]
😄 원한다면 제 [siliconflow 초대 링크](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92)를 사용하여 등록할 수 있으며, 이 경우 저도 더 많은 token 보상을 받을 수 있습니다 🌹
반복적인 테스트(영어 및 중국어 작업)를 통해 **GET_INFO_MODEL**, **REWRITE_MODEL**, **HTML_PARSE_MODEL**의 최소 사용 가능한 모델은 각각 **"THUDM/glm-4-9b-chat"**, **"Qwen/Qwen2-7B-Instruct"**, **"Qwen/Qwen2-7B-Instruct"**입니다.
**만약 귀하의 정보 소스가 주로 중국어가 아닌 페이지이고, 추출된 info가 중국어일 필요가 없다면, openai 또는 claude와 같은 해외 제조사의 모델을 사용하는 것을 더 추천합니다.**
현재, SiliconFlow는 Qwen2-7B-Instruct, glm-4-9b-chat 온라인 추론 서비스를 무료로 제공한다고 발표했습니다. 이로 인해 여러분은 wiseflow를 "제로 비용"으로 사용할 수 있습니다!
타사 프록시 **AiHubMix**를 사용하여 단 하나의 API로 OpenAI, Claude, Google, Llama 등과 같은 다양한 주요 AI 모델에 원활하게 액세스할 수 있습니다.
😄 원하시면 저의 [siliconflow 초대 링크](https://cloud.siliconflow.cn?referrer=clx6wrtca00045766ahvexw92)를 사용하셔도 좋습니다. 이렇게 하면 저도 더 많은 토큰 보상을 받을 수 있습니다 😄
😄 다음 초대 링크 [AiHubMix 초대 링크](https://aihubmix.com?aff=Gp54)를 사용하여 등록하세요 🌹
⚠️ **V0.3.1 업데이트**
🌟 **wiseflow 자체는 어떤 모델 서비스에도 제한을 두지 않으며, openAI SDK와 호환되는 서비스라면 모두 사용 가능합니다. 로컬에 배포된 ollama, Xinference 등의 서비스도 포함됩니다.**
설명이 포함된 복잡한 태그를 사용하는 경우, glm-4-9b-chat 크기의 모델로는 정확한 이해를 보장할 수 없습니다. 현재 테스트 결과, 이 유형의 작업에 적합한 모델은 **Qwen/Qwen2-72B-Instruct**와 **gpt-4o-mini-2024-07-18**입니다.
### 5. **관심사 및 정기 스캔 정보 소스 추가**
`gpt-4o-mini-2024-07-18` 모델 사용을 원하는 사용자들은 제3자 대리 서비스 **AiHubMix**를 시도해 볼 수 있습니다. 국내 네트워크 환경에서 직접 연결을 지원하며, 알리페이로 충전이 가능합니다 (실제 요율은 공식 웹사이트 요율의 약 14% 할인).
프로그램을 시작한 후, pocketbase Admin dashboard UI (http://127.0.0.1:8090/_/)를 여세요.
🌹 다음 초대 링크 [AiHubMix 초대 링크](https://aihubmix.com?aff=Gp54)를 사용하여 등록하십시오 🌹
#### 5.1 focus_point 폼 열기
🌍 위 두 플랫폼의 온라인 추론 서비스는 모두 OpenAI SDK와 호환되며, `.env` 파일의 `LLM_API_BASE``LLM_API_KEY`를 설정한 후 사용할 수 있습니다.
이 폼을 통해 귀하의 관심사를 지정할 수 있으며, LLM은 이를 기반으로 정보를 추출, 필터링 및 분류합니다.
### 5. **관심사와 정기 스캔 소스 추가**
필드 설명:
- focuspoint, 관심사 설명 (필수), 예: "상하이 초등학교 졸업 정보", "암호화폐 가격"
- explanation, 관심사의 상세 설명 또는 구체적인 약속, 예: "상하이 공식 발표 중학교 입학 정보만 포함", "BTC, ETH의 현재 가격, 등락률 데이터" 등
- activated, 활성화 여부. 비활성화되면 해당 관심사는 무시되며, 비활성화 후 다시 활성화할 수 있습니다.
프로그램을 시작한 후 pocketbase 관리자 대시보드 UI(http://127.0.0.1:8090/_)를 엽니다.
#### 5.1 tags 폼 열기
이 폼을 통해 관심사를 지정할 수 있으며, LLM은 이를 기준으로 정보를 추출하고 필터링하여 분류합니다.
tags 필드 설명:
- name: 관심사 이름
- explaination: 관심사의 상세 설명 또는 구체적인 정의, 예를 들어 "상하이시 공식 발표 중학교 진학 정보에 한정" (tag 이름: 상하이 중학교 진학 정보)
- activated: 활성화 여부. 비활성화하면 해당 관심사는 무시되며, 비활성화 후 다시 활성화할 수 있습니다. 활성화 및 비활성화는 Docker 컨테이너를 재시작하지 않고도 가능하며, 다음 정기 작업 시 업데이트됩니다.
주의: focus_point 업데이트 설정 (activated 조정 포함) 후, **프로그램을 다시 시작해야 적용됩니다.**
#### 5.2 sites 폼 열기
이 폼을 통해 사용자 정의 소스를 지정할 수 있으며, 시스템은 백그라운드에서 정기 작업을 시작하여 로컬에서 소스 스캔, 파싱 및 분석을 수행합니다.
이 폼을 통해 사용자 정의 정보 소스를 지정할 수 있으며, 시스템은 백그라운드 정기 작업을 시작하여 로컬에서 정보 소스를 스캔, 구문 분석 및 분석합니다.
sites 필드 설명:
- url: 소스의 URL, 소스는 특정 기사 페이지가 아닌 기사 목록 페이지만 제공하면 됩니다.
- per_hours: 스캔 주기, 시간 단위, 정수 타입 (1~24 범위, 하루 한 번 이상 스캔하지 않는 것이 좋습니다. 즉, 24로 설정).
- activated: 활성화 여부. 비활성화하면 해당 소스는 무시되며, 비활성화 후 다시 활성화할 수 있습니다. 활성화 및 비활성화는 Docker 컨테이너를 재시작하지 않고도 가능하며, 다음 정기 작업 시 업데이트됩니다.
- url, 정보 소스의 URL, 정보 소스는 구체적인 기사 페이지를 제공할 필요가 없으며, 기사 목록 페이지만 제공하면 됩니다.
- per_hours, 스캔 빈도, 단위는 시간, 정수 형식 (1~24 범위, 스캔 빈도를 하루에 한 번 이상으로 설정하지 않는 것을 권장합니다. 즉, 24로 설정).
- activated, 활성화 여부. 비활성화되면 해당 정보 소스는 무시되며, 비활성화 후 다시 활성화할 수 있습니다.
### 6. 로컬 배포
**sites 설정 조정은 프로그램을 다시 시작할 필요가 없습니다.**
보시다시피, 이 프로젝트는 최소한 7b\9b 크기의 LLM만 필요하며, 어떤 벡터 모델도 필요하지 않습니다. 이는 3090RTX (24G VRAM) 한 개만 있으면 이 프로젝트를 완전히 로컬에 배포할 수 있음을 의미합니다.
## 📚 wiseflow가 크롤링한 데이터를 귀하의 프로그램에서 사용하는 방법
로컬 배포 LLM 서비스가 OpenAI SDK와 호환되는지 확인하고, LLM_API_BASE를 설정하십시오.
1. [dashbord](dashboard) 부분 소스 코드를 참조하여 2차 개발을 수행하세요.
참고: 태그 설명에 대한 7b~9b 크기의 LLM이 정확히 이해하도록 하려면, 프롬프트 최적화를 위해 dspy를 사용하는 것이 좋지만, 이를 위해서는 약 50개의 수동 레이블 데이터가 필요합니다. 자세한 내용은 [DSPy](https://dspy-docs.vercel.app/)를 참조하십시오.
wiseflow의 core 부분은 dashboard를 필요로 하지 않으며, 현재 제품은 dashboard를 통합하지 않았습니다. dashboard가 필요한 경우, [V0.2.1 버전](https://github.com/TeamWiseFlow/wiseflow/releases/tag/V0.2.1)을 다운로드하세요.
## 🛡️ 라이선스
2. pocketbase에서 직접 데이터를 가져오세요.
이 프로젝트는 [Apache2.0](LICENSE) 오픈소스로 제공됩니다.
wiseflow가 크롤링한 모든 데이터는 즉시 pocketbase에 저장되므로, pocketbase 데이터베이스를 직접 조작하여 데이터를 가져올 수 있습니다.
상업적 사용 및 맞춤형 협력을 원하시면 **Email: 35252986@qq.com**으로 연락해 주세요.
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) 오픈소스 라이선스를 기반으로 합니다.
상업적 및 맞춤형 협력은 **Email: 35252986@qq.com**으로 문의하세요.
- 상업용 고객은 등록을 위해 연락해 주세요. 제품은 영원히 무료로 제공됩니다.
## 📬 연락처
궁금한 점이나 제안 사항이 있으시면 [issue](https://github.com/TeamWiseFlow/wiseflow/issues)를 통해 연락해 주세요.
문의 사항이나 제안이 있으면 [issue](https://github.com/TeamWiseFlow/wiseflow/issues)를 통해 문의하세요.
## 🤝 이 프로젝트는 다음과 같은 훌륭한 오픈 소스 프로젝트를 기반으로 합니다:
## 🤝 이 프로젝트는 다음과 같은 우수한 오픈소스 프로젝트를 기반으로 합니다:
- GeneralNewsExtractor General Extractor of News Web Page Body Based on Statistical Learning https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
- json_repairRepair invalid JSON documents https://github.com/josdejong/jsonrepair/tree/main
- python-pocketbase (pocketBase client SDK for python) https://github.com/vaphes/pocketbase
- crawlee-python (Python용 웹 스크래핑 및 브라우저 자동화 라이브러리로, 신뢰할 수 있는 크롤러를 구축합니다. BeautifulSoup, Playwright 및 원시 HTTP와 함께 작동합니다. headful 및 headless 모드 모두 지원. 프록시 회전 기능 포함.) https://github.com/apify/crawlee-python
- json_repair (유효하지 않은 JSON 문서 복구) https://github.com/josdejong/jsonrepair/tree/main
- python-pocketbase (pocketBase 클라이언트 SDK for python) https://github.com/vaphes/pocketbase
- SeeAct (모든 주어진 웹사이트에서 자율적으로 작업을 수행하는 일반 웹 에이전트 시스템, 특히 GPT-4Vision과 같은 대형 멀티모달 모델 (LMMs)에 중점을 둡니다.) https://github.com/OSU-NLP-Group/SeeAct
또한 [GNE](https://github.com/GeneralNewsExtractor/GeneralNewsExtractor), [AutoCrawler](https://github.com/kingname/AutoCrawler)에서 영감을 받았습니다.
## Citation
본 프로젝트의 일부 또는 전체를 참조하거나 인용한 경우, 다음 정보를 명시해 주세요:
이 프로젝트의 일부 또는 전체를 관련 작업에서 참조하거나 인용하는 경우, 다음 정보를 명시하세요:
```
AuthorWiseflow Team
Author: Wiseflow Team
https://github.com/TeamWiseFlow/wiseflow
Licensed under Apache2.0
```
```