fix: SSL certificate issue and Windows terminal encoding
This commit is contained in:
@@ -1,10 +1,15 @@
|
|||||||
"""命令行工具入口."""
|
"""命令行工具入口."""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import sys
|
import sys
|
||||||
|
import io
|
||||||
|
|
||||||
import typer
|
import typer
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|
||||||
|
# Windows 终端默认用 GBK, 无法输出 emoji, 强制 UTF-8
|
||||||
|
if sys.stdout.encoding != "utf-8":
|
||||||
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||||
|
|
||||||
# 确保 src 在路径中
|
# 确保 src 在路径中
|
||||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||||
|
|
||||||
|
|||||||
+21
-1
@@ -1,4 +1,11 @@
|
|||||||
"""嵌入模型抽象层."""
|
"""嵌入模型抽象层."""
|
||||||
|
import os
|
||||||
|
|
||||||
|
# 解决 Windows SSL 证书问题: 强制使用本地缓存模型, 避免联网验证
|
||||||
|
# 模型首次下载需要先临时取消这些环境变量 (或手动运行一次下载脚本)
|
||||||
|
os.environ.setdefault("HF_HUB_OFFLINE", "1")
|
||||||
|
os.environ.setdefault("TRANSFORMERS_OFFLINE", "1")
|
||||||
|
|
||||||
from sentence_transformers import SentenceTransformer
|
from sentence_transformers import SentenceTransformer
|
||||||
|
|
||||||
from src.core.config import EmbedConfig
|
from src.core.config import EmbedConfig
|
||||||
@@ -10,7 +17,20 @@ class Embedder:
|
|||||||
def __init__(self, config: EmbedConfig):
|
def __init__(self, config: EmbedConfig):
|
||||||
self._config = config
|
self._config = config
|
||||||
if config.mode == "local":
|
if config.mode == "local":
|
||||||
self._model = SentenceTransformer(config.local_model)
|
# 优先从本地缓存加载, 若模型未下载则通过镜像下载
|
||||||
|
try:
|
||||||
|
self._model = SentenceTransformer(
|
||||||
|
config.local_model, local_files_only=True
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
# 模型未缓存: 临时开启网络, 使用国内镜像
|
||||||
|
os.environ.pop("HF_HUB_OFFLINE", None)
|
||||||
|
os.environ.pop("TRANSFORMERS_OFFLINE", None)
|
||||||
|
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
|
||||||
|
self._model = SentenceTransformer(config.local_model)
|
||||||
|
# 恢复离线设置, 后续加载走缓存
|
||||||
|
os.environ["HF_HUB_OFFLINE"] = "1"
|
||||||
|
os.environ["TRANSFORMERS_OFFLINE"] = "1"
|
||||||
elif config.mode == "api":
|
elif config.mode == "api":
|
||||||
self._model = None # 延迟初始化, 需要 openai 包
|
self._model = None # 延迟初始化, 需要 openai 包
|
||||||
self._api_base = config.api_base
|
self._api_base = config.api_base
|
||||||
|
|||||||
Reference in New Issue
Block a user