mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-02-07 02:55:08 +08:00
Compare commits
2 Commits
e8f1a245a6
...
6b52f7df5a
| Author | SHA1 | Date | |
|---|---|---|---|
| 6b52f7df5a | |||
| 63131ec9b2 |
32
.github/workflows/tests.yml
vendored
32
.github/workflows/tests.yml
vendored
@ -95,6 +95,38 @@ jobs:
|
|||||||
version: ">=0.11.x"
|
version: ">=0.11.x"
|
||||||
args: "check"
|
args: "check"
|
||||||
|
|
||||||
|
- name: Check comments of changed Python files
|
||||||
|
if: ${{ !cancelled() && !failure() }}
|
||||||
|
run: |
|
||||||
|
if [[ ${{ github.event_name }} == 'pull_request_target' ]]; then
|
||||||
|
CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} \
|
||||||
|
| grep -E '\.(py)$' || true)
|
||||||
|
|
||||||
|
if [ -n "$CHANGED_FILES" ]; then
|
||||||
|
echo "Check comments of changed Python files with check_comment_ascii.py"
|
||||||
|
|
||||||
|
readarray -t files <<< "$CHANGED_FILES"
|
||||||
|
HAS_ERROR=0
|
||||||
|
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
if python3 check_comment_ascii.py $file"; then
|
||||||
|
echo "✅ $file"
|
||||||
|
else
|
||||||
|
echo "❌ $file"
|
||||||
|
HAS_ERROR=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $HAS_ERROR -ne 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No Python files changed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Build ragflow:nightly
|
- name: Build ragflow:nightly
|
||||||
run: |
|
run: |
|
||||||
RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-${HOME}}
|
RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-${HOME}}
|
||||||
|
|||||||
36
check_comment_ascii.py
Normal file
36
check_comment_ascii.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
import tokenize
|
||||||
|
import ast
|
||||||
|
import pathlib
|
||||||
|
import re
|
||||||
|
|
||||||
|
ASCII = re.compile(r"^[ -~]*\Z") # Only printable ASCII
|
||||||
|
|
||||||
|
|
||||||
|
def check(src: str, name: str) -> int:
|
||||||
|
"""
|
||||||
|
I'm a docstring
|
||||||
|
"""
|
||||||
|
ok = 1
|
||||||
|
# A common comment begins with `#`
|
||||||
|
with tokenize.open(src) as fp:
|
||||||
|
for tk in tokenize.generate_tokens(fp.readline):
|
||||||
|
if tk.type == tokenize.COMMENT and not ASCII.fullmatch(tk.string):
|
||||||
|
print(f"{name}:{tk.start[0]}: non-ASCII comment: {tk.string}")
|
||||||
|
ok = 0
|
||||||
|
# A docstring begins and ends with `'''`
|
||||||
|
for node in ast.walk(ast.parse(pathlib.Path(src).read_text(), filename=name)):
|
||||||
|
if isinstance(node, (ast.FunctionDef, ast.ClassDef, ast.Module)):
|
||||||
|
if (doc := ast.get_docstring(node)) and not ASCII.fullmatch(doc):
|
||||||
|
print(f"{name}:{node.lineno}: non-ASCII docstring: {doc}")
|
||||||
|
ok = 0
|
||||||
|
return ok
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
status = 0
|
||||||
|
for file in sys.argv[1:]:
|
||||||
|
if not check(file, file):
|
||||||
|
status = 1
|
||||||
|
sys.exit(status)
|
||||||
8
docs/guides/dataset/add_data_source/_category_.json
Normal file
8
docs/guides/dataset/add_data_source/_category_.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"label": "Add data source",
|
||||||
|
"position": 18,
|
||||||
|
"link": {
|
||||||
|
"type": "generated-index",
|
||||||
|
"description": "Add various data sources"
|
||||||
|
}
|
||||||
|
}
|
||||||
137
docs/guides/dataset/add_data_source/add_google_drive.md
Normal file
137
docs/guides/dataset/add_data_source/add_google_drive.md
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
slug: /add_google_drive
|
||||||
|
---
|
||||||
|
|
||||||
|
# Add Google Drive
|
||||||
|
|
||||||
|
## 1. Create a Google Cloud Project
|
||||||
|
|
||||||
|
You can either create a dedicated project for RAGFlow or use an existing
|
||||||
|
Google Cloud external project.
|
||||||
|
|
||||||
|
**Steps:**
|
||||||
|
1. Open the project creation page\
|
||||||
|
`https://console.cloud.google.com/projectcreate`
|
||||||
|

|
||||||
|
2. Select **External** as the Audience
|
||||||
|

|
||||||
|
3. Click **Create**
|
||||||
|

|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## 2. Configure OAuth Consent Screen
|
||||||
|
|
||||||
|
1. Go to **APIs & Services → OAuth consent screen**
|
||||||
|
2. Ensure **User Type = External**
|
||||||
|

|
||||||
|
3. Add your test users under **Test Users** by entering email addresses
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## 3. Create OAuth Client Credentials
|
||||||
|
|
||||||
|
1. Navigate to:\
|
||||||
|
`https://console.cloud.google.com/auth/clients`
|
||||||
|
2. Create a **Web Application**
|
||||||
|

|
||||||
|
3. Enter a name for the client
|
||||||
|
4. Add the following **Authorized Redirect URIs**:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://localhost:9380/v1/connector/google-drive/oauth/web/callback
|
||||||
|
```
|
||||||
|
|
||||||
|
### If using Docker deployment:
|
||||||
|
|
||||||
|
**Authorized JavaScript origin:**
|
||||||
|
```
|
||||||
|
http://localhost:80
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
### If running from source:
|
||||||
|
**Authorized JavaScript origin:**
|
||||||
|
```
|
||||||
|
http://localhost:9222
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
5. After saving, click **Download JSON**. This file will later be
|
||||||
|
uploaded into RAGFlow.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## 4. Add Scopes
|
||||||
|
|
||||||
|
1. Open **Data Access → Add or remove scopes**
|
||||||
|
|
||||||
|
2. Paste and add the following entries:
|
||||||
|
|
||||||
|
```
|
||||||
|
https://www.googleapis.com/auth/drive.readonly
|
||||||
|
https://www.googleapis.com/auth/drive.metadata.readonly
|
||||||
|
https://www.googleapis.com/auth/admin.directory.group.readonly
|
||||||
|
https://www.googleapis.com/auth/admin.directory.user.readonly
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
3. Update and Save changes
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## 5. Enable Required APIs
|
||||||
|
Navigate to the Google API Library:\
|
||||||
|
`https://console.cloud.google.com/apis/library`
|
||||||
|

|
||||||
|
|
||||||
|
Enable the following APIs:
|
||||||
|
|
||||||
|
- Google Drive API
|
||||||
|
- Admin SDK API
|
||||||
|
- Google Sheets API
|
||||||
|
- Google Docs API
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## 6. Add Google Drive As a Data Source in RAGFlow
|
||||||
|
|
||||||
|
1. Go to **Data Sources** inside RAGFlow
|
||||||
|
2. Select **Google Drive**
|
||||||
|
3. Upload the previously downloaded JSON credentials
|
||||||
|

|
||||||
|
4. Enter the shared Google Drive folder link (https://drive.google.com/drive), such as:
|
||||||
|

|
||||||
|
|
||||||
|
5. Click **Authorize with Google**
|
||||||
|
A browser window will appear.
|
||||||
|

|
||||||
|
Click: - **Continue** - **Select All → Continue** - Authorization should
|
||||||
|
succeed - Select **OK** to add the data source
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"label": "Best practices",
|
"label": "Best practices",
|
||||||
"position": 11,
|
"position": 19,
|
||||||
"link": {
|
"link": {
|
||||||
"type": "generated-index",
|
"type": "generated-index",
|
||||||
"description": "Best practices on configuring a dataset."
|
"description": "Best practices on configuring a dataset."
|
||||||
|
|||||||
@ -64,7 +64,10 @@ The Admin CLI and Admin Service form a client-server architectural suite for RAG
|
|||||||
|
|
||||||
- -p: RAGFlow admin server port
|
- -p: RAGFlow admin server port
|
||||||
|
|
||||||
|
## Default administrative account
|
||||||
|
|
||||||
|
- Username: admin@ragflow.io
|
||||||
|
- Password: admin
|
||||||
|
|
||||||
## Supported Commands
|
## Supported Commands
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user