feat(server): add workbench API, DSH planner worker and RAG pipeline
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""雅文内容创造工作台 - 配置"""
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent # server/
|
||||
# 双环境:YAWAN_ENV=dev → 数据在 data-dev/(开发库,随便折腾);默认/空 → data/(生产库,公网用)。
|
||||
# 可用 YAWAN_DATA_DIR 将某个环境的数据根目录切到外接盘或其他持久化卷。
|
||||
# 只接受绝对路径;未配置时保持原有的 server/data* 路径,避免插拔硬盘影响现有服务。
|
||||
_ENV = os.environ.get("YAWAN_ENV", "prod").strip().lower()
|
||||
_DATA_SUB = "data-dev" if _ENV == "dev" else "data"
|
||||
_DATA_OVERRIDE = os.environ.get("YAWAN_DATA_DIR", "").strip()
|
||||
if _DATA_OVERRIDE:
|
||||
_override_path = Path(_DATA_OVERRIDE).expanduser()
|
||||
if not _override_path.is_absolute():
|
||||
raise RuntimeError("YAWAN_DATA_DIR 必须是绝对路径")
|
||||
DATA_DIR = _override_path
|
||||
else:
|
||||
DATA_DIR = BASE_DIR / _DATA_SUB
|
||||
KB_DIR = DATA_DIR / "kb" # 知识库素材文件
|
||||
ARTIFACTS_DIR = DATA_DIR / "artifacts" # 段产物/组合产物
|
||||
OCR_DIR = DATA_DIR / "ocr" # 导图 OCR 输出
|
||||
MODELS_DIR = DATA_DIR / "models" # 本地 embedding 模型
|
||||
DB_PATH = DATA_DIR / "workspace.db"
|
||||
CHROMA_DIR = DATA_DIR / "chroma"
|
||||
|
||||
for d in (DATA_DIR, KB_DIR, ARTIFACTS_DIR, OCR_DIR, MODELS_DIR):
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 预置模型 provider(值从本机已有配置读取,运行时可改)
|
||||
DEFAULT_PROVIDERS = [
|
||||
{
|
||||
"name": "DeepSeek",
|
||||
"base_url": "https://api.deepseek.com/v1",
|
||||
"api_key": "" if _ENV == "dev" else os.environ.get("DEEPSEEK_API_KEY", ""),
|
||||
"models": ["deepseek-chat", "deepseek-reasoner"],
|
||||
"default_model": "deepseek-chat",
|
||||
"builtin": True,
|
||||
},
|
||||
{
|
||||
"name": "MiMo",
|
||||
"base_url": "https://api.xiaomimimo.com/v1",
|
||||
"api_key": "" if _ENV == "dev" else os.environ.get("MIMO_API_KEY", ""),
|
||||
"models": ["mimo-v2.5-pro"],
|
||||
"default_model": "mimo-v2.5-pro",
|
||||
"builtin": True,
|
||||
},
|
||||
]
|
||||
|
||||
# 从 hurryyhao/.env 读取 DeepSeek key(用户主用账号)
|
||||
_HY_ENV = Path.home() / "hurryyhao" / ".env"
|
||||
if _ENV != "dev" and _HY_ENV.exists():
|
||||
for line in _HY_ENV.read_text(encoding="utf-8", errors="ignore").splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith("AI_API_KEY="):
|
||||
DEFAULT_PROVIDERS[0]["api_key"] = line.split("=", 1)[1].strip().strip('"').strip("'")
|
||||
elif line.startswith("MIMO_API_KEY="):
|
||||
DEFAULT_PROVIDERS[1]["api_key"] = line.split("=", 1)[1].strip().strip('"').strip("'")
|
||||
|
||||
# AI 聚合网(环境变量)
|
||||
_JUHE = "" if _ENV == "dev" else os.environ.get("AI_JUHE_API_KEY", "")
|
||||
if _JUHE:
|
||||
DEFAULT_PROVIDERS.append({
|
||||
"name": "AI聚合网",
|
||||
"base_url": "https://api.lk888.ai/api",
|
||||
"api_key": _JUHE,
|
||||
"models": ["deepseek-chat"],
|
||||
"default_model": "deepseek-chat",
|
||||
"builtin": True,
|
||||
"note": "接口格式为聚合网专用,M1 后适配",
|
||||
})
|
||||
|
||||
EMBEDDING_MODEL = os.environ.get("EMBEDDING_MODEL", "BAAI/bge-small-zh-v1.5") # M1 用 small 跑通,可换 bge-m3
|
||||
EMBEDDING_DIM = 512
|
||||
|
||||
# 本地开发只允许工作台前端来源;生产环境通过环境变量显式配置,不再用通配符。
|
||||
CORS_ORIGINS = [origin.strip().rstrip("/") for origin in os.environ.get(
|
||||
"YAWEN_CORS_ORIGINS",
|
||||
"http://localhost:5173,http://127.0.0.1:5173,https://agent.pducv.cn,http://agent.pducv.cn"
|
||||
).split(",") if origin.strip()]
|
||||
Reference in New Issue
Block a user