Просмотр исходного кода

Added static check at PR CI (#3921)

### What problem does this PR solve?

Added static check at PR CI

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
- [x] Refactoring
tags/v0.15.0
Zhichang Yu 10 месяцев назад
Родитель
Сommit
1254ecf445
Аккаунт пользователя с таким Email не найден

+ 6
- 0
.github/workflows/tests.yml Просмотреть файл

fetch-depth: 0 fetch-depth: 0
fetch-tags: true fetch-tags: true


# https://github.com/astral-sh/ruff-action
- name: Static check with Ruff
uses: astral-sh/ruff-action@v2
with:
version: ">=0.8.2"

- name: Build ragflow:dev-slim - name: Build ragflow:dev-slim
run: | run: |
RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME} RUNNER_WORKSPACE_PREFIX=${RUNNER_WORKSPACE_PREFIX:-$HOME}

+ 15
- 15
api/apps/api_app.py Просмотреть файл

from functools import partial from functools import partial




@manager.route('/new_token', methods=['POST'])
@manager.route('/new_token', methods=['POST']) # noqa: F821
@login_required @login_required
def new_token(): def new_token():
req = request.json req = request.json
return server_error_response(e) return server_error_response(e)




@manager.route('/token_list', methods=['GET'])
@manager.route('/token_list', methods=['GET']) # noqa: F821
@login_required @login_required
def token_list(): def token_list():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@validate_request("tokens", "tenant_id") @validate_request("tokens", "tenant_id")
@login_required @login_required
def rm(): def rm():
return server_error_response(e) return server_error_response(e)




@manager.route('/stats', methods=['GET'])
@manager.route('/stats', methods=['GET']) # noqa: F821
@login_required @login_required
def stats(): def stats():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/new_conversation', methods=['GET'])
@manager.route('/new_conversation', methods=['GET']) # noqa: F821
def set_conversation(): def set_conversation():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
objs = APIToken.query(token=token) objs = APIToken.query(token=token)
return server_error_response(e) return server_error_response(e)




@manager.route('/completion', methods=['POST'])
@manager.route('/completion', methods=['POST']) # noqa: F821
@validate_request("conversation_id", "messages") @validate_request("conversation_id", "messages")
def completion(): def completion():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return server_error_response(e) return server_error_response(e)




@manager.route('/conversation/<conversation_id>', methods=['GET'])
@manager.route('/conversation/<conversation_id>', methods=['GET']) # noqa: F821
# @login_required # @login_required
def get(conversation_id): def get(conversation_id):
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return server_error_response(e) return server_error_response(e)




@manager.route('/document/upload', methods=['POST'])
@manager.route('/document/upload', methods=['POST']) # noqa: F821
@validate_request("kb_name") @validate_request("kb_name")
def upload(): def upload():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return get_json_result(data=doc_result.to_json()) return get_json_result(data=doc_result.to_json())




@manager.route('/document/upload_and_parse', methods=['POST'])
@manager.route('/document/upload_and_parse', methods=['POST']) # noqa: F821
@validate_request("conversation_id") @validate_request("conversation_id")
def upload_parse(): def upload_parse():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return get_json_result(data=doc_ids) return get_json_result(data=doc_ids)




@manager.route('/list_chunks', methods=['POST'])
@manager.route('/list_chunks', methods=['POST']) # noqa: F821
# @login_required # @login_required
def list_chunks(): def list_chunks():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return get_json_result(data=res) return get_json_result(data=res)




@manager.route('/list_kb_docs', methods=['POST'])
@manager.route('/list_kb_docs', methods=['POST']) # noqa: F821
# @login_required # @login_required
def list_kb_docs(): def list_kb_docs():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return server_error_response(e) return server_error_response(e)




@manager.route('/document/infos', methods=['POST'])
@manager.route('/document/infos', methods=['POST']) # noqa: F821
@validate_request("doc_ids") @validate_request("doc_ids")
def docinfos(): def docinfos():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return get_json_result(data=list(docs.dicts())) return get_json_result(data=list(docs.dicts()))




@manager.route('/document', methods=['DELETE'])
@manager.route('/document', methods=['DELETE']) # noqa: F821
# @login_required # @login_required
def document_rm(): def document_rm():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/completion_aibotk', methods=['POST'])
@manager.route('/completion_aibotk', methods=['POST']) # noqa: F821
@validate_request("Authorization", "conversation_id", "word") @validate_request("Authorization", "conversation_id", "word")
def completion_faq(): def completion_faq():
import base64 import base64
return server_error_response(e) return server_error_response(e)




@manager.route('/retrieval', methods=['POST'])
@manager.route('/retrieval', methods=['POST']) # noqa: F821
@validate_request("kb_id", "question") @validate_request("kb_id", "question")
def retrieval(): def retrieval():
token = request.headers.get('Authorization').split()[1] token = request.headers.get('Authorization').split()[1]

+ 8
- 8
api/apps/canvas_app.py Просмотреть файл

from peewee import MySQLDatabase, PostgresqlDatabase from peewee import MySQLDatabase, PostgresqlDatabase




@manager.route('/templates', methods=['GET'])
@manager.route('/templates', methods=['GET']) # noqa: F821
@login_required @login_required
def templates(): def templates():
return get_json_result(data=[c.to_dict() for c in CanvasTemplateService.get_all()]) return get_json_result(data=[c.to_dict() for c in CanvasTemplateService.get_all()])




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def canvas_list(): def canvas_list():
return get_json_result(data=sorted([c.to_dict() for c in \ return get_json_result(data=sorted([c.to_dict() for c in \
) )




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@validate_request("canvas_ids") @validate_request("canvas_ids")
@login_required @login_required
def rm(): def rm():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/set', methods=['POST'])
@manager.route('/set', methods=['POST']) # noqa: F821
@validate_request("dsl", "title") @validate_request("dsl", "title")
@login_required @login_required
def save(): def save():
return get_json_result(data=req) return get_json_result(data=req)




@manager.route('/get/<canvas_id>', methods=['GET'])
@manager.route('/get/<canvas_id>', methods=['GET']) # noqa: F821
@login_required @login_required
def get(canvas_id): def get(canvas_id):
e, c = UserCanvasService.get_by_id(canvas_id) e, c = UserCanvasService.get_by_id(canvas_id)
return get_json_result(data=c.to_dict()) return get_json_result(data=c.to_dict())




@manager.route('/completion', methods=['POST'])
@manager.route('/completion', methods=['POST']) # noqa: F821
@validate_request("id") @validate_request("id")
@login_required @login_required
def run(): def run():
return get_json_result(data={"answer": final_ans["content"], "reference": final_ans.get("reference", [])}) return get_json_result(data={"answer": final_ans["content"], "reference": final_ans.get("reference", [])})




@manager.route('/reset', methods=['POST'])
@manager.route('/reset', methods=['POST']) # noqa: F821
@validate_request("id") @validate_request("id")
@login_required @login_required
def reset(): def reset():
return server_error_response(e) return server_error_response(e)




@manager.route('/test_db_connect', methods=['POST'])
@manager.route('/test_db_connect', methods=['POST']) # noqa: F821
@validate_request("db_type", "database", "username", "host", "port", "password") @validate_request("db_type", "database", "username", "host", "port", "password")
@login_required @login_required
def test_db_connect(): def test_db_connect():

+ 8
- 8
api/apps/chunk_app.py Просмотреть файл

import re import re




@manager.route('/list', methods=['POST'])
@manager.route('/list', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id") @validate_request("doc_id")
def list_chunk(): def list_chunk():
return server_error_response(e) return server_error_response(e)




@manager.route('/get', methods=['GET'])
@manager.route('/get', methods=['GET']) # noqa: F821
@login_required @login_required
def get(): def get():
chunk_id = request.args["chunk_id"] chunk_id = request.args["chunk_id"]
return server_error_response(e) return server_error_response(e)




@manager.route('/set', methods=['POST'])
@manager.route('/set', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id", "chunk_id", "content_with_weight", @validate_request("doc_id", "chunk_id", "content_with_weight",
"important_kwd", "question_kwd") "important_kwd", "question_kwd")
return server_error_response(e) return server_error_response(e)




@manager.route('/switch', methods=['POST'])
@manager.route('/switch', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("chunk_ids", "available_int", "doc_id") @validate_request("chunk_ids", "available_int", "doc_id")
def switch(): def switch():
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("chunk_ids", "doc_id") @validate_request("chunk_ids", "doc_id")
def rm(): def rm():
return server_error_response(e) return server_error_response(e)




@manager.route('/create', methods=['POST'])
@manager.route('/create', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id", "content_with_weight") @validate_request("doc_id", "content_with_weight")
def create(): def create():
return server_error_response(e) return server_error_response(e)




@manager.route('/retrieval_test', methods=['POST'])
@manager.route('/retrieval_test', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("kb_id", "question") @validate_request("kb_id", "question")
def retrieval_test(): def retrieval_test():
return server_error_response(e) return server_error_response(e)




@manager.route('/knowledge_graph', methods=['GET'])
@manager.route('/knowledge_graph', methods=['GET']) # noqa: F821
@login_required @login_required
def knowledge_graph(): def knowledge_graph():
doc_id = request.args["doc_id"] doc_id = request.args["doc_id"]

+ 11
- 11
api/apps/conversation_app.py Просмотреть файл

from graphrag.mind_map_extractor import MindMapExtractor from graphrag.mind_map_extractor import MindMapExtractor




@manager.route('/set', methods=['POST'])
@manager.route('/set', methods=['POST']) # noqa: F821
@login_required @login_required
def set_conversation(): def set_conversation():
req = request.json req = request.json
return server_error_response(e) return server_error_response(e)




@manager.route('/get', methods=['GET'])
@manager.route('/get', methods=['GET']) # noqa: F821
@login_required @login_required
def get(): def get():
conv_id = request.args["conversation_id"] conv_id = request.args["conversation_id"]
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
def rm(): def rm():
conv_ids = request.json["conversation_ids"] conv_ids = request.json["conversation_ids"]
return server_error_response(e) return server_error_response(e)




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_convsersation(): def list_convsersation():
dialog_id = request.args["dialog_id"] dialog_id = request.args["dialog_id"]
return server_error_response(e) return server_error_response(e)




@manager.route('/completion', methods=['POST'])
@manager.route('/completion', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("conversation_id", "messages") @validate_request("conversation_id", "messages")
def completion(): def completion():
return server_error_response(e) return server_error_response(e)




@manager.route('/tts', methods=['POST'])
@manager.route('/tts', methods=['POST']) # noqa: F821
@login_required @login_required
def tts(): def tts():
req = request.json req = request.json
return resp return resp




@manager.route('/delete_msg', methods=['POST'])
@manager.route('/delete_msg', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("conversation_id", "message_id") @validate_request("conversation_id", "message_id")
def delete_msg(): def delete_msg():
return get_json_result(data=conv) return get_json_result(data=conv)




@manager.route('/thumbup', methods=['POST'])
@manager.route('/thumbup', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("conversation_id", "message_id") @validate_request("conversation_id", "message_id")
def thumbup(): def thumbup():
return get_json_result(data=conv) return get_json_result(data=conv)




@manager.route('/ask', methods=['POST'])
@manager.route('/ask', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("question", "kb_ids") @validate_request("question", "kb_ids")
def ask_about(): def ask_about():
return resp return resp




@manager.route('/mindmap', methods=['POST'])
@manager.route('/mindmap', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("question", "kb_ids") @validate_request("question", "kb_ids")
def mindmap(): def mindmap():
return get_json_result(data=mind_map) return get_json_result(data=mind_map)




@manager.route('/related_questions', methods=['POST'])
@manager.route('/related_questions', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("question") @validate_request("question")
def related_questions(): def related_questions():

+ 4
- 4
api/apps/dialog_app.py Просмотреть файл

from api.utils.api_utils import get_json_result from api.utils.api_utils import get_json_result




@manager.route('/set', methods=['POST'])
@manager.route('/set', methods=['POST']) # noqa: F821
@login_required @login_required
def set_dialog(): def set_dialog():
req = request.json req = request.json
return server_error_response(e) return server_error_response(e)




@manager.route('/get', methods=['GET'])
@manager.route('/get', methods=['GET']) # noqa: F821
@login_required @login_required
def get(): def get():
dialog_id = request.args["dialog_id"] dialog_id = request.args["dialog_id"]
return ids, nms return ids, nms




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_dialogs(): def list_dialogs():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("dialog_ids") @validate_request("dialog_ids")
def rm(): def rm():

+ 15
- 15
api/apps/document_app.py Просмотреть файл

from api.constants import IMG_BASE64_PREFIX from api.constants import IMG_BASE64_PREFIX




@manager.route('/upload', methods=['POST'])
@manager.route('/upload', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("kb_id") @validate_request("kb_id")
def upload(): def upload():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/web_crawl', methods=['POST'])
@manager.route('/web_crawl', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("kb_id", "name", "url") @validate_request("kb_id", "name", "url")
def web_crawl(): def web_crawl():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/create', methods=['POST'])
@manager.route('/create', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("name", "kb_id") @validate_request("name", "kb_id")
def create(): def create():
return server_error_response(e) return server_error_response(e)




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_docs(): def list_docs():
kb_id = request.args.get("kb_id") kb_id = request.args.get("kb_id")
return server_error_response(e) return server_error_response(e)




@manager.route('/infos', methods=['POST'])
@manager.route('/infos', methods=['POST']) # noqa: F821
@login_required @login_required
def docinfos(): def docinfos():
req = request.json req = request.json
return get_json_result(data=list(docs.dicts())) return get_json_result(data=list(docs.dicts()))




@manager.route('/thumbnails', methods=['GET'])
@manager.route('/thumbnails', methods=['GET']) # noqa: F821
# @login_required # @login_required
def thumbnails(): def thumbnails():
doc_ids = request.args.get("doc_ids").split(",") doc_ids = request.args.get("doc_ids").split(",")
return server_error_response(e) return server_error_response(e)




@manager.route('/change_status', methods=['POST'])
@manager.route('/change_status', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id", "status") @validate_request("doc_id", "status")
def change_status(): def change_status():
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id") @validate_request("doc_id")
def rm(): def rm():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/run', methods=['POST'])
@manager.route('/run', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_ids", "run") @validate_request("doc_ids", "run")
def run(): def run():
return server_error_response(e) return server_error_response(e)




@manager.route('/rename', methods=['POST'])
@manager.route('/rename', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id", "name") @validate_request("doc_id", "name")
def rename(): def rename():
return server_error_response(e) return server_error_response(e)




@manager.route('/get/<doc_id>', methods=['GET'])
@manager.route('/get/<doc_id>', methods=['GET']) # noqa: F821
# @login_required # @login_required
def get(doc_id): def get(doc_id):
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/change_parser', methods=['POST'])
@manager.route('/change_parser', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("doc_id", "parser_id") @validate_request("doc_id", "parser_id")
def change_parser(): def change_parser():
return server_error_response(e) return server_error_response(e)




@manager.route('/image/<image_id>', methods=['GET'])
@manager.route('/image/<image_id>', methods=['GET']) # noqa: F821
# @login_required # @login_required
def get_image(image_id): def get_image(image_id):
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/upload_and_parse', methods=['POST'])
@manager.route('/upload_and_parse', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("conversation_id") @validate_request("conversation_id")
def upload_and_parse(): def upload_and_parse():
return get_json_result(data=doc_ids) return get_json_result(data=doc_ids)




@manager.route('/parse', methods=['POST'])
@manager.route('/parse', methods=['POST']) # noqa: F821
@login_required @login_required
def parse(): def parse():
url = request.json.get("url") if request.json else "" url = request.json.get("url") if request.json else ""

+ 2
- 2
api/apps/file2document_app.py Просмотреть файл

from api.utils.api_utils import get_json_result from api.utils.api_utils import get_json_result




@manager.route('/convert', methods=['POST'])
@manager.route('/convert', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("file_ids", "kb_ids") @validate_request("file_ids", "kb_ids")
def convert(): def convert():
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("file_ids") @validate_request("file_ids")
def rm(): def rm():

+ 10
- 10
api/apps/file_app.py Просмотреть файл

from rag.utils.storage_factory import STORAGE_IMPL from rag.utils.storage_factory import STORAGE_IMPL




@manager.route('/upload', methods=['POST'])
@manager.route('/upload', methods=['POST']) # noqa: F821
@login_required @login_required
# @validate_request("parent_id") # @validate_request("parent_id")
def upload(): def upload():
return server_error_response(e) return server_error_response(e)




@manager.route('/create', methods=['POST'])
@manager.route('/create', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("name") @validate_request("name")
def create(): def create():
return server_error_response(e) return server_error_response(e)




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_files(): def list_files():
pf_id = request.args.get("parent_id") pf_id = request.args.get("parent_id")
return server_error_response(e) return server_error_response(e)




@manager.route('/root_folder', methods=['GET'])
@manager.route('/root_folder', methods=['GET']) # noqa: F821
@login_required @login_required
def get_root_folder(): def get_root_folder():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/parent_folder', methods=['GET'])
@manager.route('/parent_folder', methods=['GET']) # noqa: F821
@login_required @login_required
def get_parent_folder(): def get_parent_folder():
file_id = request.args.get("file_id") file_id = request.args.get("file_id")
return server_error_response(e) return server_error_response(e)




@manager.route('/all_parent_folder', methods=['GET'])
@manager.route('/all_parent_folder', methods=['GET']) # noqa: F821
@login_required @login_required
def get_all_parent_folders(): def get_all_parent_folders():
file_id = request.args.get("file_id") file_id = request.args.get("file_id")
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['POST'])
@manager.route('/rm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("file_ids") @validate_request("file_ids")
def rm(): def rm():
return server_error_response(e) return server_error_response(e)




@manager.route('/rename', methods=['POST'])
@manager.route('/rename', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("file_id", "name") @validate_request("file_id", "name")
def rename(): def rename():
return server_error_response(e) return server_error_response(e)




@manager.route('/get/<file_id>', methods=['GET'])
@manager.route('/get/<file_id>', methods=['GET']) # noqa: F821
@login_required @login_required
def get(file_id): def get(file_id):
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/mv', methods=['POST'])
@manager.route('/mv', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("src_file_ids", "dest_file_id") @validate_request("src_file_ids", "dest_file_id")
def move(): def move():

+ 5
- 5
api/apps/kb_app.py Просмотреть файл

from api.constants import DATASET_NAME_LIMIT from api.constants import DATASET_NAME_LIMIT




@manager.route('/create', methods=['post'])
@manager.route('/create', methods=['post']) # noqa: F821
@login_required @login_required
@validate_request("name") @validate_request("name")
def create(): def create():
return server_error_response(e) return server_error_response(e)




@manager.route('/update', methods=['post'])
@manager.route('/update', methods=['post']) # noqa: F821
@login_required @login_required
@validate_request("kb_id", "name", "description", "permission", "parser_id") @validate_request("kb_id", "name", "description", "permission", "parser_id")
@not_allowed_parameters("id", "tenant_id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by") @not_allowed_parameters("id", "tenant_id", "created_by", "create_time", "update_time", "create_date", "update_date", "created_by")
return server_error_response(e) return server_error_response(e)




@manager.route('/detail', methods=['GET'])
@manager.route('/detail', methods=['GET']) # noqa: F821
@login_required @login_required
def detail(): def detail():
kb_id = request.args["kb_id"] kb_id = request.args["kb_id"]
return server_error_response(e) return server_error_response(e)




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_kbs(): def list_kbs():
keywords = request.args.get("keywords", "") keywords = request.args.get("keywords", "")
return server_error_response(e) return server_error_response(e)




@manager.route('/rm', methods=['post'])
@manager.route('/rm', methods=['post']) # noqa: F821
@login_required @login_required
@validate_request("kb_id") @validate_request("kb_id")
def rm(): def rm():

+ 7
- 7
api/apps/llm_app.py Просмотреть файл

import requests import requests




@manager.route('/factories', methods=['GET'])
@manager.route('/factories', methods=['GET']) # noqa: F821
@login_required @login_required
def factories(): def factories():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/set_api_key', methods=['POST'])
@manager.route('/set_api_key', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("llm_factory", "api_key") @validate_request("llm_factory", "api_key")
def set_api_key(): def set_api_key():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/add_llm', methods=['POST'])
@manager.route('/add_llm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("llm_factory") @validate_request("llm_factory")
def add_llm(): def add_llm():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/delete_llm', methods=['POST'])
@manager.route('/delete_llm', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("llm_factory", "llm_name") @validate_request("llm_factory", "llm_name")
def delete_llm(): def delete_llm():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/delete_factory', methods=['POST'])
@manager.route('/delete_factory', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("llm_factory") @validate_request("llm_factory")
def delete_factory(): def delete_factory():
return get_json_result(data=True) return get_json_result(data=True)




@manager.route('/my_llms', methods=['GET'])
@manager.route('/my_llms', methods=['GET']) # noqa: F821
@login_required @login_required
def my_llms(): def my_llms():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route('/list', methods=['GET'])
@manager.route('/list', methods=['GET']) # noqa: F821
@login_required @login_required
def list_app(): def list_app():
self_deploied = ["Youdao", "FastEmbed", "BAAI", "Ollama", "Xinference", "LocalAI", "LM-Studio"] self_deploied = ["Youdao", "FastEmbed", "BAAI", "Ollama", "Xinference", "LocalAI", "LM-Studio"]

+ 1
- 1
api/apps/sdk/agent.py Просмотреть файл

from api.utils.api_utils import get_result from api.utils.api_utils import get_result
from flask import request from flask import request


@manager.route('/agents', methods=['GET'])
@manager.route('/agents', methods=['GET']) # noqa: F821
@token_required @token_required
def list_agents(tenant_id): def list_agents(tenant_id):
id = request.args.get("id") id = request.args.get("id")

+ 4
- 4
api/apps/sdk/chat.py Просмотреть файл







@manager.route('/chats', methods=['POST'])
@manager.route('/chats', methods=['POST']) # noqa: F821
@token_required @token_required
def create(tenant_id): def create(tenant_id):
req=request.json req=request.json
res["avatar"] = res.pop("icon") res["avatar"] = res.pop("icon")
return get_result(data=res) return get_result(data=res)


@manager.route('/chats/<chat_id>', methods=['PUT'])
@manager.route('/chats/<chat_id>', methods=['PUT']) # noqa: F821
@token_required @token_required
def update(tenant_id,chat_id): def update(tenant_id,chat_id):
if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value):
return get_result() return get_result()




@manager.route('/chats', methods=['DELETE'])
@manager.route('/chats', methods=['DELETE']) # noqa: F821
@token_required @token_required
def delete(tenant_id): def delete(tenant_id):
req = request.json req = request.json
DialogService.update_by_id(id, temp_dict) DialogService.update_by_id(id, temp_dict)
return get_result() return get_result()


@manager.route('/chats', methods=['GET'])
@manager.route('/chats', methods=['GET']) # noqa: F821
@token_required @token_required
def list_chat(tenant_id): def list_chat(tenant_id):
id = request.args.get("id") id = request.args.get("id")

+ 4
- 4
api/apps/sdk/dataset.py Просмотреть файл

) )




@manager.route("/datasets", methods=["POST"])
@manager.route("/datasets", methods=["POST"]) # noqa: F821
@token_required @token_required
def create(tenant_id): def create(tenant_id):
""" """
return get_result(data=renamed_data) return get_result(data=renamed_data)




@manager.route("/datasets", methods=["DELETE"])
@manager.route("/datasets", methods=["DELETE"]) # noqa: F821
@token_required @token_required
def delete(tenant_id): def delete(tenant_id):
""" """
return get_result(code=settings.RetCode.SUCCESS) return get_result(code=settings.RetCode.SUCCESS)




@manager.route("/datasets/<dataset_id>", methods=["PUT"])
@manager.route("/datasets/<dataset_id>", methods=["PUT"]) # noqa: F821
@token_required @token_required
def update(tenant_id, dataset_id): def update(tenant_id, dataset_id):
""" """
return get_result(code=settings.RetCode.SUCCESS) return get_result(code=settings.RetCode.SUCCESS)




@manager.route("/datasets", methods=["GET"])
@manager.route("/datasets", methods=["GET"]) # noqa: F821
@token_required @token_required
def list(tenant_id): def list(tenant_id):
""" """

+ 1
- 1
api/apps/sdk/dify_retrieval.py Просмотреть файл

from api.utils.api_utils import validate_request, build_error_result, apikey_required from api.utils.api_utils import validate_request, build_error_result, apikey_required




@manager.route('/dify/retrieval', methods=['POST'])
@manager.route('/dify/retrieval', methods=['POST']) # noqa: F821
@apikey_required @apikey_required
@validate_request("knowledge_id", "query") @validate_request("knowledge_id", "query")
def retrieval(tenant_id): def retrieval(tenant_id):

+ 12
- 12
api/apps/sdk/doc.py Просмотреть файл

MAXIMUM_OF_UPLOADING_FILES = 256 MAXIMUM_OF_UPLOADING_FILES = 256




@manager.route("/datasets/<dataset_id>/documents", methods=["POST"])
@manager.route("/datasets/<dataset_id>/documents", methods=["POST"]) # noqa: F821
@token_required @token_required
def upload(dataset_id, tenant_id): def upload(dataset_id, tenant_id):
""" """
return get_result(data=renamed_doc_list) return get_result(data=renamed_doc_list)




@manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["PUT"])
@manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["PUT"]) # noqa: F821
@token_required @token_required
def update_doc(tenant_id, dataset_id, document_id): def update_doc(tenant_id, dataset_id, document_id):
""" """
return get_result() return get_result()




@manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["GET"])
@manager.route("/datasets/<dataset_id>/documents/<document_id>", methods=["GET"]) # noqa: F821
@token_required @token_required
def download(tenant_id, dataset_id, document_id): def download(tenant_id, dataset_id, document_id):
""" """
) )




@manager.route("/datasets/<dataset_id>/documents", methods=["GET"])
@manager.route("/datasets/<dataset_id>/documents", methods=["GET"]) # noqa: F821
@token_required @token_required
def list_docs(dataset_id, tenant_id): def list_docs(dataset_id, tenant_id):
""" """
return get_result(data={"total": tol, "docs": renamed_doc_list}) return get_result(data={"total": tol, "docs": renamed_doc_list})




@manager.route("/datasets/<dataset_id>/documents", methods=["DELETE"])
@manager.route("/datasets/<dataset_id>/documents", methods=["DELETE"]) # noqa: F821
@token_required @token_required
def delete(tenant_id, dataset_id): def delete(tenant_id, dataset_id):
""" """
return get_result() return get_result()




@manager.route("/datasets/<dataset_id>/chunks", methods=["POST"])
@manager.route("/datasets/<dataset_id>/chunks", methods=["POST"]) # noqa: F821
@token_required @token_required
def parse(tenant_id, dataset_id): def parse(tenant_id, dataset_id):
""" """
return get_result() return get_result()




@manager.route("/datasets/<dataset_id>/chunks", methods=["DELETE"])
@manager.route("/datasets/<dataset_id>/chunks", methods=["DELETE"]) # noqa: F821
@token_required @token_required
def stop_parsing(tenant_id, dataset_id): def stop_parsing(tenant_id, dataset_id):
""" """
return get_result() return get_result()




@manager.route("/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["GET"])
@manager.route("/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["GET"]) # noqa: F821
@token_required @token_required
def list_chunks(tenant_id, dataset_id, document_id): def list_chunks(tenant_id, dataset_id, document_id):
""" """
return get_result(data=res) return get_result(data=res)




@manager.route(
@manager.route( # noqa: F821
"/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["POST"] "/datasets/<dataset_id>/documents/<document_id>/chunks", methods=["POST"]
) )
@token_required @token_required
# return get_result(data={"chunk_id": chunk_id}) # return get_result(data={"chunk_id": chunk_id})




@manager.route(
@manager.route( # noqa: F821
"datasets/<dataset_id>/documents/<document_id>/chunks", methods=["DELETE"] "datasets/<dataset_id>/documents/<document_id>/chunks", methods=["DELETE"]
) )
@token_required @token_required
return get_result(message=f"deleted {chunk_number} chunks") return get_result(message=f"deleted {chunk_number} chunks")




@manager.route(
@manager.route( # noqa: F821
"/datasets/<dataset_id>/documents/<document_id>/chunks/<chunk_id>", methods=["PUT"] "/datasets/<dataset_id>/documents/<document_id>/chunks/<chunk_id>", methods=["PUT"]
) )
@token_required @token_required
return get_result() return get_result()




@manager.route("/retrieval", methods=["POST"])
@manager.route("/retrieval", methods=["POST"]) # noqa: F821
@token_required @token_required
def retrieval_test(tenant_id): def retrieval_test(tenant_id):
""" """

+ 10
- 10
api/apps/sdk/session.py Просмотреть файл

from api.db.services.llm_service import LLMBundle from api.db.services.llm_service import LLMBundle




@manager.route('/chats/<chat_id>/sessions', methods=['POST'])
@manager.route('/chats/<chat_id>/sessions', methods=['POST']) # noqa: F821
@token_required @token_required
def create(tenant_id, chat_id): def create(tenant_id, chat_id):
req = request.json req = request.json
return get_result(data=conv) return get_result(data=conv)




@manager.route('/agents/<agent_id>/sessions', methods=['POST'])
@manager.route('/agents/<agent_id>/sessions', methods=['POST']) # noqa: F821
@token_required @token_required
def create_agent_session(tenant_id, agent_id): def create_agent_session(tenant_id, agent_id):
e, cvs = UserCanvasService.get_by_id(agent_id) e, cvs = UserCanvasService.get_by_id(agent_id)
return get_result(data=conv) return get_result(data=conv)




@manager.route('/chats/<chat_id>/sessions/<session_id>', methods=['PUT'])
@manager.route('/chats/<chat_id>/sessions/<session_id>', methods=['PUT']) # noqa: F821
@token_required @token_required
def update(tenant_id, chat_id, session_id): def update(tenant_id, chat_id, session_id):
req = request.json req = request.json
return get_result() return get_result()




@manager.route('/chats/<chat_id>/completions', methods=['POST'])
@manager.route('/chats/<chat_id>/completions', methods=['POST']) # noqa: F821
@token_required @token_required
def completion(tenant_id, chat_id): def completion(tenant_id, chat_id):
dia = DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value) dia = DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value)
return get_result(data=answer) return get_result(data=answer)




@manager.route('/agents/<agent_id>/completions', methods=['POST'])
@manager.route('/agents/<agent_id>/completions', methods=['POST']) # noqa: F821
@token_required @token_required
def agent_completion(tenant_id, agent_id): def agent_completion(tenant_id, agent_id):
req = request.json req = request.json
return get_result(data=result) return get_result(data=result)




@manager.route('/chats/<chat_id>/sessions', methods=['GET'])
@manager.route('/chats/<chat_id>/sessions', methods=['GET']) # noqa: F821
@token_required @token_required
def list_session(tenant_id, chat_id): def list_session(tenant_id, chat_id):
if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value): if not DialogService.query(tenant_id=tenant_id, id=chat_id, status=StatusEnum.VALID.value):
return get_result(data=convs) return get_result(data=convs)




@manager.route('/agents/<agent_id>/sessions', methods=['GET'])
@manager.route('/agents/<agent_id>/sessions', methods=['GET']) # noqa: F821
@token_required @token_required
def list_agent_session(tenant_id, agent_id): def list_agent_session(tenant_id, agent_id):
if not UserCanvasService.query(user_id=tenant_id, id=agent_id): if not UserCanvasService.query(user_id=tenant_id, id=agent_id):
return get_result(data=convs) return get_result(data=convs)




@manager.route('/chats/<chat_id>/sessions', methods=["DELETE"])
@manager.route('/chats/<chat_id>/sessions', methods=["DELETE"]) # noqa: F821
@token_required @token_required
def delete(tenant_id, chat_id): def delete(tenant_id, chat_id):
if not DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value): if not DialogService.query(id=chat_id, tenant_id=tenant_id, status=StatusEnum.VALID.value):
return get_result() return get_result()




@manager.route('/sessions/ask', methods=['POST'])
@manager.route('/sessions/ask', methods=['POST']) # noqa: F821
@token_required @token_required
def ask_about(tenant_id): def ask_about(tenant_id):
req = request.json req = request.json
return resp return resp




@manager.route('/sessions/related_questions', methods=['POST'])
@manager.route('/sessions/related_questions', methods=['POST']) # noqa: F821
@token_required @token_required
def related_questions(tenant_id): def related_questions(tenant_id):
req = request.json req = request.json

+ 5
- 5
api/apps/system_app.py Просмотреть файл

from rag.utils.redis_conn import REDIS_CONN from rag.utils.redis_conn import REDIS_CONN




@manager.route("/version", methods=["GET"])
@manager.route("/version", methods=["GET"]) # noqa: F821
@login_required @login_required
def version(): def version():
""" """
return get_json_result(data=get_ragflow_version()) return get_json_result(data=get_ragflow_version())




@manager.route("/status", methods=["GET"])
@manager.route("/status", methods=["GET"]) # noqa: F821
@login_required @login_required
def status(): def status():
""" """
return get_json_result(data=res) return get_json_result(data=res)




@manager.route("/new_token", methods=["POST"])
@manager.route("/new_token", methods=["POST"]) # noqa: F821
@login_required @login_required
def new_token(): def new_token():
""" """
return server_error_response(e) return server_error_response(e)




@manager.route("/token_list", methods=["GET"])
@manager.route("/token_list", methods=["GET"]) # noqa: F821
@login_required @login_required
def token_list(): def token_list():
""" """
return server_error_response(e) return server_error_response(e)




@manager.route("/token/<token>", methods=["DELETE"])
@manager.route("/token/<token>", methods=["DELETE"]) # noqa: F821
@login_required @login_required
def rm(token): def rm(token):
""" """

+ 5
- 5
api/apps/tenant_app.py Просмотреть файл

from api.utils.api_utils import get_json_result, validate_request, server_error_response, get_data_error_result from api.utils.api_utils import get_json_result, validate_request, server_error_response, get_data_error_result




@manager.route("/<tenant_id>/user/list", methods=["GET"])
@manager.route("/<tenant_id>/user/list", methods=["GET"]) # noqa: F821
@login_required @login_required
def user_list(tenant_id): def user_list(tenant_id):
if current_user.id != tenant_id: if current_user.id != tenant_id:
return server_error_response(e) return server_error_response(e)




@manager.route('/<tenant_id>/user', methods=['POST'])
@manager.route('/<tenant_id>/user', methods=['POST']) # noqa: F821
@login_required @login_required
@validate_request("email") @validate_request("email")
def create(tenant_id): def create(tenant_id):
return get_json_result(data=usr) return get_json_result(data=usr)




@manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE'])
@manager.route('/<tenant_id>/user/<user_id>', methods=['DELETE']) # noqa: F821
@login_required @login_required
def rm(tenant_id, user_id): def rm(tenant_id, user_id):
if current_user.id != tenant_id and current_user.id != user_id: if current_user.id != tenant_id and current_user.id != user_id:
return server_error_response(e) return server_error_response(e)




@manager.route("/list", methods=["GET"])
@manager.route("/list", methods=["GET"]) # noqa: F821
@login_required @login_required
def tenant_list(): def tenant_list():
try: try:
return server_error_response(e) return server_error_response(e)




@manager.route("/agree/<tenant_id>", methods=["PUT"])
@manager.route("/agree/<tenant_id>", methods=["PUT"]) # noqa: F821
@login_required @login_required
def agree(tenant_id): def agree(tenant_id):
try: try:

+ 9
- 9
api/apps/user_app.py Просмотреть файл

from api.utils.api_utils import get_json_result, construct_response from api.utils.api_utils import get_json_result, construct_response




@manager.route("/login", methods=["POST", "GET"])
@manager.route("/login", methods=["POST", "GET"]) # noqa: F821
def login(): def login():
""" """
User login endpoint. User login endpoint.
) )




@manager.route("/github_callback", methods=["GET"])
@manager.route("/github_callback", methods=["GET"]) # noqa: F821
def github_callback(): def github_callback():
""" """
GitHub OAuth callback endpoint. GitHub OAuth callback endpoint.
return redirect("/?auth=%s" % user.get_id()) return redirect("/?auth=%s" % user.get_id())




@manager.route("/feishu_callback", methods=["GET"])
@manager.route("/feishu_callback", methods=["GET"]) # noqa: F821
def feishu_callback(): def feishu_callback():
""" """
Feishu OAuth callback endpoint. Feishu OAuth callback endpoint.
return user_info return user_info




@manager.route("/logout", methods=["GET"])
@manager.route("/logout", methods=["GET"]) # noqa: F821
@login_required @login_required
def log_out(): def log_out():
""" """
return get_json_result(data=True) return get_json_result(data=True)




@manager.route("/setting", methods=["POST"])
@manager.route("/setting", methods=["POST"]) # noqa: F821
@login_required @login_required
def setting_user(): def setting_user():
""" """
) )




@manager.route("/info", methods=["GET"])
@manager.route("/info", methods=["GET"]) # noqa: F821
@login_required @login_required
def user_profile(): def user_profile():
""" """
return UserService.query(email=user["email"]) return UserService.query(email=user["email"])




@manager.route("/register", methods=["POST"])
@manager.route("/register", methods=["POST"]) # noqa: F821
@validate_request("nickname", "email", "password") @validate_request("nickname", "email", "password")
def user_add(): def user_add():
""" """
) )




@manager.route("/tenant_info", methods=["GET"])
@manager.route("/tenant_info", methods=["GET"]) # noqa: F821
@login_required @login_required
def tenant_info(): def tenant_info():
""" """
return server_error_response(e) return server_error_response(e)




@manager.route("/set_tenant_info", methods=["POST"])
@manager.route("/set_tenant_info", methods=["POST"]) # noqa: F821
@login_required @login_required
@validate_request("tenant_id", "asr_id", "embd_id", "img2txt_id", "llm_id") @validate_request("tenant_id", "asr_id", "embd_id", "img2txt_id", "llm_id")
def set_tenant_info(): def set_tenant_info():

+ 0
- 2
deepdoc/parser/pdf_parser.py Просмотреть файл

import pdfplumber import pdfplumber
from PIL import Image from PIL import Image
import numpy as np import numpy as np
from timeit import default_timer as timer
from pypdf import PdfReader as pdf2_read from pypdf import PdfReader as pdf2_read


from api import settings from api import settings
self.page_cum_height = [0] self.page_cum_height = [0]
self.page_layout = [] self.page_layout = []
self.page_from = page_from self.page_from = page_from
st = timer()
try: try:
self.pdf = pdfplumber.open(fnm) if isinstance( self.pdf = pdfplumber.open(fnm) if isinstance(
fnm, str) else pdfplumber.open(BytesIO(fnm)) fnm, str) else pdfplumber.open(BytesIO(fnm))

+ 1
- 1
deepdoc/vision/ocr.py Просмотреть файл

from huggingface_hub import snapshot_download from huggingface_hub import snapshot_download


from api.utils.file_utils import get_project_base_directory from api.utils.file_utils import get_project_base_directory
from .operators import *
from .operators import * # noqa: F403
import math import math
import numpy as np import numpy as np
import cv2 import cv2

+ 2
- 1
deepdoc/vision/recognizer.py Просмотреть файл

from huggingface_hub import snapshot_download from huggingface_hub import snapshot_download


from api.utils.file_utils import get_project_base_directory from api.utils.file_utils import get_project_base_directory
from .operators import *
from .operators import * # noqa: F403
from .operators import preprocess


class Recognizer(object): class Recognizer(object):
def __init__(self, label_list, task_name, model_dir=None): def __init__(self, label_list, task_name, model_dir=None):

+ 1
- 0
graphrag/entity_embedding.py Просмотреть файл

import networkx as nx import networkx as nx
from dataclasses import dataclass from dataclasses import dataclass
from graphrag.leiden import stable_largest_connected_component from graphrag.leiden import stable_largest_connected_component
import graspologic as gc




@dataclass @dataclass

Загрузка…
Отмена
Сохранить