From f372d6fa44135e7b570757aa20b4a2bf5de5f450 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Fri, 8 Aug 2025 18:35:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=92=8C=E6=96=87=E6=A1=A3=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0=E9=BB=98=E8=AE=A4=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复docker构建时的代理配置问题,移除pyproject.toml中不必要的依赖 更新README中关于代理配置的说明,修正文档中的大小写错误 将默认LLM模型从Qwen更换为GLM-4.5-Air 添加测试数据文件,优化embedding配置的错误处理 --- README.md | 11 ++++----- docker-compose.yml | 5 +++- docker/api.Dockerfile | 23 ++++++++---------- docs/changelog/update.md | 2 +- pyproject.toml | 1 - src/knowledge/kb_utils.py | 29 +++++++++++++---------- src/knowledge/lightrag_kb.py | 2 +- test/data/lightrag_kb_test.txt | 1 + web/src/components/AgentChatComponent.vue | 2 +- 9 files changed, 39 insertions(+), 37 deletions(-) create mode 100644 test/data/lightrag_kb_test.txt diff --git a/README.md b/README.md index 71b55e99..5fb229f7 100644 --- a/README.md +++ b/README.md @@ -96,14 +96,11 @@ https://github.com/user-attachments/assets/15f7f315-003d-4e41-a260-739c2529f824
镜像拉取完成,但是构建失败 -如果拉取镜像完成,但是构建失败,基本都是因为依赖的镜像问题,可以尝试修改 `docker/api.Dockerfile` (第 31 行左右)中的环境变量,替换为本机的代理地址后,尝试构建。 +如果拉取镜像完成,但是构建失败,基本都是因为依赖的镜像问题,可以在环境变量中配置如下。如果是已经配置了代理,但是构建失败,也可以尝试移除代理后重试。 -```dockerfile -# 安装依赖项,如果无法成功安装,则尝试是设置此处的代理 -ENV HTTP_PROXY=http://IP:PORT \ - HTTPS_PROXY=http://IP:PORT \ - http_proxy=http://IP:PORT \ - https_proxy=http://IP:PORT +```bash +export HTTP_PROXY=http://IP:PORT +export HTTPS_PROXY=http://IP:PORT ```
diff --git a/docker-compose.yml b/docker-compose.yml index 3676d8ee..110e32d5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,9 @@ services: build: context: . dockerfile: docker/api.Dockerfile + args: + HTTP_PROXY: ${HTTP_PROXY:-} + HTTPS_PROXY: ${HTTPS_PROXY:-} image: yuxi-api:0.2.0.dev container_name: api-dev working_dir: /app @@ -33,7 +36,7 @@ services: - RUNNING_IN_DOCKER=true - NO_PROXY=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio,mineru,paddlex - no_proxy=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio,mineru,paddlex - command: uv run uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload + command: uv run --no-dev uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:5050/api/system/health || exit 1"] diff --git a/docker/api.Dockerfile b/docker/api.Dockerfile index d0ca91a1..1f6a2e22 100644 --- a/docker/api.Dockerfile +++ b/docker/api.Dockerfile @@ -28,22 +28,19 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone & COPY ../pyproject.toml /app/pyproject.toml COPY ../.python-version /app/.python-version -# 安装依赖项,如果无法成功安装,则尝试是设置此处的代理 -# ENV HTTP_PROXY=http://172.19.13.5:7890 \ -# HTTPS_PROXY=http://172.19.13.5:7890 \ -# http_proxy=http://172.19.13.5:7890 \ -# https_proxy=http://172.19.13.5:7890 +# 接收构建参数 +ARG HTTP_PROXY="" +ARG HTTPS_PROXY="" + +# 设置环境变量(这些值可能是空的) +ENV HTTP_PROXY=$HTTP_PROXY \ + HTTPS_PROXY=$HTTPS_PROXY \ + http_proxy=$HTTP_PROXY \ + https_proxy=$HTTPS_PROXY RUN --mount=type=cache,target=/root/.cache/uv \ - uv sync --no-install-project + uv sync --no-dev --no-install-project # 复制代码到容器中 COPY ../src /app/src COPY ../server /app/server - -# 同步项目 -RUN --mount=type=cache,target=/root/.cache/uv \ - uv sync - -# 取消代理 -RUN unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy \ No newline at end of file diff --git a/docs/changelog/update.md b/docs/changelog/update.md index 10f4ef69..0fffba25 100644 --- a/docs/changelog/update.md +++ b/docs/changelog/update.md @@ -1,7 +1,7 @@ 目前已有的开发计划包括: -### v2.0 Prerelease +### v2.0 PreRelease 💭 **Features Todo** - [x] 知识库使用 LightRAG(GraphRAG 轻量版)重构(🌟🌟🌟🌟🌟) diff --git a/pyproject.toml b/pyproject.toml index 9e5fc3f6..35d0197d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,5 +68,4 @@ lint.ignore = ["F401", "E501"] # 忽略的规则 dev = [ "ipykernel>=6.30.0", "ruff>=0.12.1", - "vllm>=0.8.5.post1", ] diff --git a/src/knowledge/kb_utils.py b/src/knowledge/kb_utils.py index 0d1cf606..cce8d899 100644 --- a/src/knowledge/kb_utils.py +++ b/src/knowledge/kb_utils.py @@ -108,18 +108,23 @@ def get_embedding_config(embed_info: dict) -> dict: """ config_dict = {} - if embed_info: - config_dict['model'] = embed_info["name"] - config_dict['api_key'] = os.getenv(embed_info["api_key"], embed_info["api_key"]) - config_dict['base_url'] = embed_info["base_url"] - config_dict['dimension'] = embed_info.get("dimension", 1024) - else: - from src.models import select_embedding_model - default_model = select_embedding_model(config.embed_model) - config_dict['model'] = default_model.model - config_dict['api_key'] = default_model.api_key - config_dict['base_url'] = default_model.base_url - config_dict['dimension'] = getattr(default_model, 'dimension', 1024) + try: + if embed_info: + config_dict['model'] = embed_info["name"] + config_dict['api_key'] = os.getenv(embed_info["api_key"], embed_info["api_key"]) + config_dict['base_url'] = embed_info["base_url"] + config_dict['dimension'] = embed_info.get("dimension", 1024) + else: + from src.models import select_embedding_model + default_model = select_embedding_model(config.embed_model) + config_dict['model'] = default_model.model + config_dict['api_key'] = default_model.api_key + config_dict['base_url'] = default_model.base_url + config_dict['dimension'] = getattr(default_model, 'dimension', 1024) + + except Exception as e: + logger.error(f"Error in get_embedding_config: {e}, {embed_info}") + raise ValueError(f"Error in get_embedding_config: {e}") logger.debug(f"Embedding config: {config_dict}") return config_dict diff --git a/src/knowledge/lightrag_kb.py b/src/knowledge/lightrag_kb.py index 00f8a54a..1eb480fb 100644 --- a/src/knowledge/lightrag_kb.py +++ b/src/knowledge/lightrag_kb.py @@ -17,7 +17,7 @@ from src.utils import logger, hashstr, get_docker_safe_url LIGHTRAG_LLM_PROVIDER = os.getenv("LIGHTRAG_LLM_PROVIDER", "siliconflow") -LIGHTRAG_LLM_NAME = os.getenv("LIGHTRAG_LLM_NAME", "Qwen/Qwen3-30B-A3B-Instruct-2507") +LIGHTRAG_LLM_NAME = os.getenv("LIGHTRAG_LLM_NAME", "zai-org/GLM-4.5-Air") class LightRagKB(KnowledgeBase): diff --git a/test/data/lightrag_kb_test.txt b/test/data/lightrag_kb_test.txt new file mode 100644 index 00000000..f97a20c5 --- /dev/null +++ b/test/data/lightrag_kb_test.txt @@ -0,0 +1 @@ +《红楼梦》是中国古典四大名著之一,由曹雪芹创作,讲述了以贾、王、史、薛四大家族为背景的荣枯兴衰,着重描写贾宝玉与众多女性之间的情感纠葛。小说人物众多,关系复杂,其中最核心的人物是贾宝玉、林黛玉与薛宝钗。贾宝玉是贾政与王夫人之子,自幼顽劣叛逆,不喜功名,却重情重义,与林黛玉青梅竹马,情意深厚。林黛玉是贾母的外孙女,出身名门,才情出众,体弱多病,性格敏感,深爱贾宝玉。薛宝钗是薛家的女儿,温婉端庄,才貌双全,深得王夫人喜爱,最终与贾宝玉成婚,但婚姻缺乏真爱。贾母是贾府的最高长辈,慈祥有威望,尤其疼爱贾宝玉与林黛玉。王熙凤是王夫人的侄女,贾琏之妻,精明强干,掌管贾府内务,手段凌厉。贾探春是贾政庶出之女,才干出众,有理政之才。史湘云是贾母的外孙女,性格开朗爽朗,亦有文才。贾宝玉身边还有多位重要丫鬟,如贤良温顺的袭人,聪慧倔强的晴雯,以及忠心耿耿的紫鹃等。整部小说通过这些人物错综复杂的关系,展现了一个封建大家族的由盛而衰,爱情的悲剧也映射出时代命运的无常与女性的苦难。 diff --git a/web/src/components/AgentChatComponent.vue b/web/src/components/AgentChatComponent.vue index da14b926..1217cb3b 100644 --- a/web/src/components/AgentChatComponent.vue +++ b/web/src/components/AgentChatComponent.vue @@ -156,7 +156,7 @@ const props = defineProps({ const state = reactive({ ...props.state, debug_mode: computed(() => props.state.debug_mode ?? false), - isSidebarOpen: localStorage.getItem('chat_sidebar_open') === 'true' || false, + isSidebarOpen: localStorage.getItem('chat_sidebar_open') === 'true' || true, waitingServerResponse: false, isProcessingRequest: false, creatingNewChat: false,