From cf5c382a4fed3a43ecfa712791413a96beb8494d Mon Sep 17 00:00:00 2001 From: glide-the <2533736852@qq.com> Date: Mon, 6 May 2024 19:15:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=85=8D=E7=BD=AE=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=8A=A0=E8=BD=BD=20(#3951)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chatchat-server/chatchat/configs/__init__.py | 618 +++++++++++++++++- .../configs/model_providers.yaml.example | 8 + .../chatchat/server/knowledge_base/migrate.py | 3 +- chatchat-server/pyproject.toml | 2 +- requirements.txt | 57 -- 5 files changed, 623 insertions(+), 65 deletions(-) delete mode 100644 requirements.txt diff --git a/chatchat-server/chatchat/configs/__init__.py b/chatchat-server/chatchat/configs/__init__.py index 86f8dcf7..6e964622 100644 --- a/chatchat-server/chatchat/configs/__init__.py +++ b/chatchat-server/chatchat/configs/__init__.py @@ -1,8 +1,616 @@ -from .basic_config import * -from .model_config import * -from .kb_config import * -from .server_config import * -from .prompt_config import * +import importlib +import importlib.util +import os +from typing import Dict, Any + +import logging + +logger = logging.getLogger() + + +def _load_mod(mod, attr): + attr_cfg = None + for name, obj in vars(mod).items(): + if name == attr: + attr_cfg = obj + break + + if attr_cfg is None: + logger.warning( + f"Missing attr_cfg:{attr} in {mod}, Skip." + ) + return attr_cfg + return attr_cfg + + +def _import_config_mod_load(import_config_mod: str) -> Dict: + # 加载用户空间的配置 + user_config_path = os.path.join(os.path.expanduser("~"), ".config", "chatchat/configs") + user_import = True # 默认加载用户配置 + if os.path.exists(user_config_path): + try: + + file_names = os.listdir(user_config_path) + + if (import_config_mod + ".py",) not in file_names: + logger.warning( + f"Missing {file_names}.py file in {user_config_path}, Skip." + ) + user_import = False + if user_import: + # Dynamic loading {config}.py file + py_path = os.path.join(user_config_path, import_config_mod + ".py") + spec = importlib.util.spec_from_file_location( + f"*", + py_path + ) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + return { + "user_import": user_import, + "user_config_path": user_config_path, + "load_mod": _load_mod, + "module": module, + } + + except ImportError: + pass + else: + user_import = False + + if user_import: + logger.error( + f"Failed to load user config from {user_config_path}, Skip." + ) + raise RuntimeError(f"Failed to load user config from {user_config_path}") + # 当前文件路径 + py_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), import_config_mod + ".py") + + spec = importlib.util.spec_from_file_location(f"*", + py_path) + + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + return { + "user_import": user_import, + "user_config_path": user_config_path, + "load_mod": _load_mod, + "module": module, + } + + +CONFIG_IMPORTS = { + + "basic_config.py": _import_config_mod_load("basic_config"), + "kb_config.py": _import_config_mod_load("kb_config"), + "model_config.py": _import_config_mod_load("model_config"), + "prompt_config.py": _import_config_mod_load("prompt_config"), + "server_config.py": _import_config_mod_load("server_config"), +} + + +def _import_log_verbose() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + log_verbose = load_mod(basic_config_load.get("module"), "log_verbose") + + return log_verbose + + +def _import_chatchat_root() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + CHATCHAT_ROOT = load_mod(basic_config_load.get("module"), "CHATCHAT_ROOT") + + return CHATCHAT_ROOT + + +def _import_data_path() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + DATA_PATH = load_mod(basic_config_load.get("module"), "DATA_PATH") + + return DATA_PATH + + +def _import_nltk_data_path() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + NLTK_DATA_PATH = load_mod(basic_config_load.get("module"), "NLTK_DATA_PATH") + + return NLTK_DATA_PATH + + +def _import_log_format() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + LOG_FORMAT = load_mod(basic_config_load.get("module"), "LOG_FORMAT") + + return LOG_FORMAT + + +def _import_log_path() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + LOG_PATH = load_mod(basic_config_load.get("module"), "LOG_PATH") + + return LOG_PATH + + +def _import_media_path() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + MEDIA_PATH = load_mod(basic_config_load.get("module"), "MEDIA_PATH") + + return MEDIA_PATH + + +def _import_base_temp_dir() -> Any: + basic_config_load = CONFIG_IMPORTS.get("basic_config.py") + load_mod = basic_config_load.get("load_mod") + BASE_TEMP_DIR = load_mod(basic_config_load.get("module"), "BASE_TEMP_DIR") + + return BASE_TEMP_DIR + + +def _import_default_knowledge_base() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + DEFAULT_KNOWLEDGE_BASE = load_mod(kb_config_load.get("module"), "DEFAULT_KNOWLEDGE_BASE") + + return DEFAULT_KNOWLEDGE_BASE + + +def _import_default_vs_type() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + DEFAULT_VS_TYPE = load_mod(kb_config_load.get("module"), "DEFAULT_VS_TYPE") + + return DEFAULT_VS_TYPE + + +def _import_cached_vs_num() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + CACHED_VS_NUM = load_mod(kb_config_load.get("module"), "CACHED_VS_NUM") + + return CACHED_VS_NUM + + +def _import_cached_memo_vs_num() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + CACHED_MEMO_VS_NUM = load_mod(kb_config_load.get("module"), "CACHED_MEMO_VS_NUM") + + return CACHED_MEMO_VS_NUM + + +def _import_chunk_size() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + CHUNK_SIZE = load_mod(kb_config_load.get("module"), "CHUNK_SIZE") + + return CHUNK_SIZE + + +def _import_overlap_size() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + OVERLAP_SIZE = load_mod(kb_config_load.get("module"), "OVERLAP_SIZE") + + return OVERLAP_SIZE + + +def _import_vector_search_top_k() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + VECTOR_SEARCH_TOP_K = load_mod(kb_config_load.get("module"), "VECTOR_SEARCH_TOP_K") + + return VECTOR_SEARCH_TOP_K + + +def _import_score_threshold() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + SCORE_THRESHOLD = load_mod(kb_config_load.get("module"), "SCORE_THRESHOLD") + + return SCORE_THRESHOLD + + +def _import_default_search_engine() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + DEFAULT_SEARCH_ENGINE = load_mod(kb_config_load.get("module"), "DEFAULT_SEARCH_ENGINE") + + return DEFAULT_SEARCH_ENGINE + + +def _import_search_engine_top_k() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + SEARCH_ENGINE_TOP_K = load_mod(kb_config_load.get("module"), "SEARCH_ENGINE_TOP_K") + + return SEARCH_ENGINE_TOP_K + + +def _import_zh_title_enhance() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + ZH_TITLE_ENHANCE = load_mod(kb_config_load.get("module"), "ZH_TITLE_ENHANCE") + + return ZH_TITLE_ENHANCE + + +def _import_pdf_ocr_threshold() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + PDF_OCR_THRESHOLD = load_mod(kb_config_load.get("module"), "PDF_OCR_THRESHOLD") + + return PDF_OCR_THRESHOLD + + +def _import_kb_info() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + KB_INFO = load_mod(kb_config_load.get("module"), "KB_INFO") + + return KB_INFO + + +def _import_kb_root_path() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + KB_ROOT_PATH = load_mod(kb_config_load.get("module"), "KB_ROOT_PATH") + + return KB_ROOT_PATH + + +def _import_db_root_path() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + DB_ROOT_PATH = load_mod(kb_config_load.get("module"), "DB_ROOT_PATH") + + return DB_ROOT_PATH + +def _import_sqlalchemy_database_uri() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + SQLALCHEMY_DATABASE_URI = load_mod(kb_config_load.get("module"), "SQLALCHEMY_DATABASE_URI") + + return SQLALCHEMY_DATABASE_URI + + +def _import_kbs_config() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + kbs_config = load_mod(kb_config_load.get("module"), "kbs_config") + + return kbs_config + + +def _import_text_splitter_dict() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + text_splitter_dict = load_mod(kb_config_load.get("module"), "text_splitter_dict") + + return text_splitter_dict + + +def _import_text_splitter_name() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + TEXT_SPLITTER_NAME = load_mod(kb_config_load.get("module"), "TEXT_SPLITTER_NAME") + + return TEXT_SPLITTER_NAME + + +def _import_embedding_keyword_file() -> Any: + kb_config_load = CONFIG_IMPORTS.get("kb_config.py") + load_mod = kb_config_load.get("load_mod") + EMBEDDING_KEYWORD_FILE = load_mod(kb_config_load.get("module"), "EMBEDDING_KEYWORD_FILE") + + return EMBEDDING_KEYWORD_FILE + + +def _import_default_llm_model() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + DEFAULT_LLM_MODEL = load_mod(model_config_load.get("module"), "DEFAULT_LLM_MODEL") + + return DEFAULT_LLM_MODEL + + +def _import_default_embedding_model() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + DEFAULT_EMBEDDING_MODEL = load_mod(model_config_load.get("module"), "DEFAULT_EMBEDDING_MODEL") + + return DEFAULT_EMBEDDING_MODEL + + +def _import_agent_model() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + Agent_MODEL = load_mod(model_config_load.get("module"), "Agent_MODEL") + + return Agent_MODEL + + +def _import_history_len() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + HISTORY_LEN = load_mod(model_config_load.get("module"), "HISTORY_LEN") + + return HISTORY_LEN + + +def _import_max_tokens() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + MAX_TOKENS = load_mod(model_config_load.get("module"), "MAX_TOKENS") + + return MAX_TOKENS + + +def _import_temperature() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + TEMPERATURE = load_mod(model_config_load.get("module"), "TEMPERATURE") + + return TEMPERATURE + + +def _import_support_agent_models() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + SUPPORT_AGENT_MODELS = load_mod(model_config_load.get("module"), "SUPPORT_AGENT_MODELS") + + return SUPPORT_AGENT_MODELS + + +def _import_llm_model_config() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + LLM_MODEL_CONFIG = load_mod(model_config_load.get("module"), "LLM_MODEL_CONFIG") + + return LLM_MODEL_CONFIG + + +def _import_model_platforms() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + MODEL_PLATFORMS = load_mod(model_config_load.get("module"), "MODEL_PLATFORMS") + + return MODEL_PLATFORMS + + +def _import_model_providers_cfg_path() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + MODEL_PROVIDERS_CFG_PATH_CONFIG = load_mod(model_config_load.get("module"), "MODEL_PROVIDERS_CFG_PATH_CONFIG") + + return MODEL_PROVIDERS_CFG_PATH_CONFIG + + +def _import_model_providers_cfg_host() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + MODEL_PROVIDERS_CFG_HOST = load_mod(model_config_load.get("module"), "MODEL_PROVIDERS_CFG_HOST") + + return MODEL_PROVIDERS_CFG_HOST + + +def _import_model_providers_cfg_port() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + MODEL_PROVIDERS_CFG_PORT = load_mod(model_config_load.get("module"), "MODEL_PROVIDERS_CFG_PORT") + + return MODEL_PROVIDERS_CFG_PORT + + +def _import_tool_config() -> Any: + model_config_load = CONFIG_IMPORTS.get("model_config.py") + load_mod = model_config_load.get("load_mod") + TOOL_CONFIG = load_mod(model_config_load.get("module"), "TOOL_CONFIG") + + return TOOL_CONFIG + + +def _import_prompt_templates() -> Any: + prompt_config_load = CONFIG_IMPORTS.get("prompt_config.py") + load_mod = prompt_config_load.get("load_mod") + PROMPT_TEMPLATES = load_mod(prompt_config_load.get("module"), "PROMPT_TEMPLATES") + + return PROMPT_TEMPLATES + + +def _import_httpx_default_timeout() -> Any: + server_config_load = CONFIG_IMPORTS.get("server_config.py") + load_mod = server_config_load.get("load_mod") + HTTPX_DEFAULT_TIMEOUT = load_mod(server_config_load.get("module"), "HTTPX_DEFAULT_TIMEOUT") + + return HTTPX_DEFAULT_TIMEOUT + + +def _import_open_cross_domain() -> Any: + server_config_load = CONFIG_IMPORTS.get("server_config.py") + load_mod = server_config_load.get("load_mod") + OPEN_CROSS_DOMAIN = load_mod(server_config_load.get("module"), "OPEN_CROSS_DOMAIN") + + return OPEN_CROSS_DOMAIN + + +def _import_default_bind_host() -> Any: + server_config_load = CONFIG_IMPORTS.get("server_config.py") + load_mod = server_config_load.get("load_mod") + DEFAULT_BIND_HOST = load_mod(server_config_load.get("module"), "DEFAULT_BIND_HOST") + + return DEFAULT_BIND_HOST + + +def _import_webui_server() -> Any: + server_config_load = CONFIG_IMPORTS.get("server_config.py") + load_mod = server_config_load.get("load_mod") + WEBUI_SERVER = load_mod(server_config_load.get("module"), "WEBUI_SERVER") + + return WEBUI_SERVER + + +def _import_api_server() -> Any: + server_config_load = CONFIG_IMPORTS.get("server_config.py") + load_mod = server_config_load.get("load_mod") + API_SERVER = load_mod(server_config_load.get("module"), "API_SERVER") + + return API_SERVER + + +def __getattr__(name: str) -> Any: + if name == "log_verbose": + return _import_log_verbose() + elif name == "CHATCHAT_ROOT": + return _import_chatchat_root() + elif name == "DATA_PATH": + return _import_data_path() + elif name == "NLTK_DATA_PATH": + return _import_nltk_data_path() + elif name == "LOG_FORMAT": + return _import_log_format() + elif name == "LOG_PATH": + return _import_log_path() + elif name == "MEDIA_PATH": + return _import_media_path() + elif name == "BASE_TEMP_DIR": + return _import_base_temp_dir() + elif name == "DEFAULT_KNOWLEDGE_BASE": + return _import_default_knowledge_base() + elif name == "DEFAULT_VS_TYPE": + return _import_default_vs_type() + elif name == "CACHED_VS_NUM": + return _import_cached_vs_num() + elif name == "CACHED_MEMO_VS_NUM": + return _import_cached_memo_vs_num() + elif name == "CHUNK_SIZE": + return _import_chunk_size() + elif name == "OVERLAP_SIZE": + return _import_overlap_size() + elif name == "VECTOR_SEARCH_TOP_K": + return _import_vector_search_top_k() + elif name == "SCORE_THRESHOLD": + return _import_score_threshold() + elif name == "DEFAULT_SEARCH_ENGINE": + return _import_default_search_engine() + elif name == "SEARCH_ENGINE_TOP_K": + return _import_search_engine_top_k() + elif name == "ZH_TITLE_ENHANCE": + return _import_zh_title_enhance() + elif name == "PDF_OCR_THRESHOLD": + return _import_pdf_ocr_threshold() + elif name == "KB_INFO": + return _import_kb_info() + elif name == "KB_ROOT_PATH": + return _import_kb_root_path() + elif name == "DB_ROOT_PATH": + return _import_db_root_path() + elif name == "SQLALCHEMY_DATABASE_URI": + return _import_sqlalchemy_database_uri() + elif name == "kbs_config": + return _import_kbs_config() + elif name == "text_splitter_dict": + return _import_text_splitter_dict() + elif name == "TEXT_SPLITTER_NAME": + return _import_text_splitter_name() + elif name == "EMBEDDING_KEYWORD_FILE": + return _import_embedding_keyword_file() + elif name == "DEFAULT_LLM_MODEL": + return _import_default_llm_model() + elif name == "DEFAULT_EMBEDDING_MODEL": + return _import_default_embedding_model() + elif name == "Agent_MODEL": + return _import_agent_model() + elif name == "HISTORY_LEN": + return _import_history_len() + elif name == "MAX_TOKENS": + return _import_max_tokens() + elif name == "TEMPERATURE": + return _import_temperature() + elif name == "SUPPORT_AGENT_MODELS": + return _import_support_agent_models() + elif name == "LLM_MODEL_CONFIG": + return _import_llm_model_config() + elif name == "MODEL_PLATFORMS": + return _import_model_platforms() + elif name == "MODEL_PROVIDERS_CFG_PATH_CONFIG": + return _import_model_providers_cfg_path() + elif name == "MODEL_PROVIDERS_CFG_HOST": + return _import_model_providers_cfg_host() + elif name == "MODEL_PROVIDERS_CFG_PORT": + return _import_model_providers_cfg_port() + elif name == "TOOL_CONFIG": + return _import_tool_config() + elif name == "PROMPT_TEMPLATES": + return _import_prompt_templates() + elif name == "HTTPX_DEFAULT_TIMEOUT": + return _import_httpx_default_timeout() + elif name == "OPEN_CROSS_DOMAIN": + return _import_default_bind_host() + elif name == "WEBUI_SERVER": + return _import_webui_server() + elif name == "API_SERVER": + return _import_api_server() VERSION = "v0.3.0-preview" + +__all__ = [ + "VERSION", + "log_verbose", + "CHATCHAT_ROOT", + "DATA_PATH", + "NLTK_DATA_PATH", + "LOG_FORMAT", + "LOG_PATH", + "MEDIA_PATH", + "BASE_TEMP_DIR", + "DEFAULT_KNOWLEDGE_BASE", + "DEFAULT_VS_TYPE", + "CACHED_VS_NUM", + "CACHED_MEMO_VS_NUM", + "CHUNK_SIZE", + "OVERLAP_SIZE", + "VECTOR_SEARCH_TOP_K", + "SCORE_THRESHOLD", + "DEFAULT_SEARCH_ENGINE", + "SEARCH_ENGINE_TOP_K", + "ZH_TITLE_ENHANCE", + "PDF_OCR_THRESHOLD", + "KB_INFO", + "KB_ROOT_PATH", + "DB_ROOT_PATH", + "SQLALCHEMY_DATABASE_URI", + "kbs_config", + "text_splitter_dict", + "TEXT_SPLITTER_NAME", + "EMBEDDING_KEYWORD_FILE", + "DEFAULT_LLM_MODEL", + "DEFAULT_EMBEDDING_MODEL", + "Agent_MODEL", + "HISTORY_LEN", + "MAX_TOKENS", + "TEMPERATURE", + "SUPPORT_AGENT_MODELS", + "LLM_MODEL_CONFIG", + "MODEL_PLATFORMS", + "MODEL_PROVIDERS_CFG_PATH_CONFIG", + "MODEL_PROVIDERS_CFG_HOST", + "MODEL_PROVIDERS_CFG_PORT", + "TOOL_CONFIG", + "PROMPT_TEMPLATES", + "HTTPX_DEFAULT_TIMEOUT", + "OPEN_CROSS_DOMAIN", + "WEBUI_SERVER", + "API_SERVER", + + +] \ No newline at end of file diff --git a/chatchat-server/chatchat/configs/model_providers.yaml.example b/chatchat-server/chatchat/configs/model_providers.yaml.example index d88736b3..4c6f4ff1 100644 --- a/chatchat-server/chatchat/configs/model_providers.yaml.example +++ b/chatchat-server/chatchat/configs/model_providers.yaml.example @@ -26,4 +26,12 @@ xinference: server_url: 'http://127.0.0.1:9997/' model_uid: 'chatglm3-6b' +ollama: + model_credential: + - model: 'llama3' + model_type: 'llm' + model_credentials: + base_url: 'http://172.21.80.1:11434' + + diff --git a/chatchat-server/chatchat/server/knowledge_base/migrate.py b/chatchat-server/chatchat/server/knowledge_base/migrate.py index 71786139..f4d35c40 100644 --- a/chatchat-server/chatchat/server/knowledge_base/migrate.py +++ b/chatchat-server/chatchat/server/knowledge_base/migrate.py @@ -1,7 +1,6 @@ from chatchat.configs import ( DEFAULT_EMBEDDING_MODEL, DEFAULT_VS_TYPE, ZH_TITLE_ENHANCE, - CHUNK_SIZE, OVERLAP_SIZE, - logger, log_verbose + CHUNK_SIZE, OVERLAP_SIZE ) from chatchat.server.knowledge_base.utils import ( get_file_path, list_kbs_from_folder, diff --git a/chatchat-server/pyproject.toml b/chatchat-server/pyproject.toml index a58694ab..4416f428 100644 --- a/chatchat-server/pyproject.toml +++ b/chatchat-server/pyproject.toml @@ -53,7 +53,7 @@ streamlit-antd-components = "0.3.1" streamlit-chatbox = "1.1.12" streamlit-modal = "0.1.0" streamlit-aggrid = "0.3.4.post3" - +streamlit-extras = "0.4.2" [tool.poetry.group.test] optional = true diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 60d17484..00000000 --- a/requirements.txt +++ /dev/null @@ -1,57 +0,0 @@ -# API requirements -langchain==0.1.5 -langchainhub==0.1.14 -langchain-community==0.0.17 -langchain-openai==0.0.5 -langchain-experimental==0.0.50 -fastapi==0.109.2 -sse_starlette~=1.8.2 -nltk~=3.8.1 -uvicorn>=0.27.0.post1 -unstructured[]~=0.12.0 -python-magic-bin; sys_platform == 'win32' -SQLAlchemy~=2.0.25 -faiss-cpu~=1.7.4 -# accelerate~=0.24.1 -# spacy~=3.7.2 -PyMuPDF~=1.23.16 -rapidocr_onnxruntime~=1.3.8 -requests~=2.31.0 -pathlib~=1.0.1 -pytest~=7.4.3 -pyjwt==2.8.0 -elasticsearch -numexpr>=2.8.8 -strsimpy>=0.2.1 -markdownify>=0.11.6 -tqdm>=4.66.1 -websockets>=12.0 -numpy>=1.26.3 -pandas~=2.1.4 -pydantic==2.6.4 -httpx[brotli,http2,socks]>=0.25.2 -python-multipart==0.0.9 - -# optional document loaders - -# rapidocr_paddle[gpu]>=1.3.0.post5 -# jq>=1.6.0 -# html2text -# beautifulsoup4>=4.12.2 -# pysrt>=1.1.2 - -# Agent and Search Tools - -# arxiv>=2.1.0 -# youtube-search>=2.1.2 -# duckduckgo-search>=4.1.0 -# metaphor-python>=0.1.23 - -# WebUI requirements - -streamlit==1.34.0 -streamlit-antd-components==0.3.2 -streamlit-chatbox==1.1.12 -streamlit-aggrid==0.3.4.post3 -streamlit-extras==0.4.2 -# audio-recorder-streamlit==0.0.8