feat(govai): 0617 优化首批 — 安全/私有化/深度研究/服务层/可观测性
借鉴 odysseus 的能力设计,全程净室实现、零 AGPL 代码、不引入 AGPL 依赖。
T1 提示注入防护: pkg/promptguard 包裹外部/知识库内容为不可信数据,buildMessages 移出 system 指令区。 T2 安全 CI: .github/workflows(ci+security: govulncheck/gitleaks/actionlint/hadolint/trivy)+dependabot+.hadolint.yaml;go.mod 加 toolchain go1.25.11 修复 20 个 stdlib CVE。 T3 管理员 2FA: 迁移 000016 + RFC6238 TOTP/备份码(pkg/auth, 零依赖) + 登录流程集成(后端)。 T4 本地模型: LLM/embedding 支持本地 vLLM/Ollama(OpenAI 兼容, 鉴权头条件发送, NoAuth) + docs/local-deploy.md。 T6 深度研究: 迁移 000017 + Python research-worker(净室多步流水线, 检索避开 SearXNG) + Go research 服务/handler/路由。 T7 service 层: 新增 internal/service/{research,twofa}, 2FA 业务逻辑从胖 handler 下沉, 接口注入可单测。 T10 缓存/可观测性: internal/cache(Redis+内存, 优雅降级) 接入 store 热点列表; Prometheus 指标+/metrics; docs/openapi.yaml。 验证: go build/vet/test ./... 全绿(8 包); research-worker 12 单测过; 真实 PG 应用迁移并烟测。
This commit is contained in:
+19
-3
@@ -12,14 +12,30 @@ JWT_SECRET=change-this-to-a-random-string-in-production
|
||||
JWT_EXPIRY=24h
|
||||
|
||||
# ---- LLM 直连(替代 Dify 对话引擎) ----
|
||||
LLM_PROVIDER=openai # openai | anthropic
|
||||
OPENAI_API_KEY=sk-xxxx # OpenAI API Key
|
||||
OPENAI_BASE_URL=https://api.openai.com/v1 # 可替换为兼容端点
|
||||
LLM_PROVIDER=openai # openai | anthropic | local
|
||||
OPENAI_API_KEY=sk-xxxx # OpenAI / DashScope 等 API Key
|
||||
OPENAI_BASE_URL=https://api.openai.com/v1 # 可替换为任意 OpenAI 兼容端点
|
||||
OPENAI_MODEL=gpt-4o-mini # 默认模型
|
||||
ANTHROPIC_API_KEY= # Anthropic API Key(可选)
|
||||
ANTHROPIC_BASE_URL=https://api.anthropic.com
|
||||
ANTHROPIC_MODEL=claude-sonnet-4-20250514
|
||||
|
||||
# ---- 本地推理(私有化 / 内网,OpenAI 兼容端点:vLLM、Ollama 等) ----
|
||||
# 设置 LLM_PROVIDER=local 即把对话推理切到本地,全程不出公网。
|
||||
# 留空 LOCAL_LLM_API_KEY 即不发送鉴权头(多数本地服务无需密钥)。
|
||||
# vLLM 示例: http://127.0.0.1:8000/v1 Ollama 示例: http://127.0.0.1:11434/v1
|
||||
LOCAL_LLM_BASE_URL=
|
||||
LOCAL_LLM_MODEL= # 例: qwen2.5-7b-instruct / qwen2.5:7b
|
||||
LOCAL_LLM_API_KEY= # 可留空
|
||||
|
||||
# ---- 向量化 Embedding(RAG 知识库检索) ----
|
||||
# 默认走 DashScope;私有化时指向本地 OpenAI 兼容 /v1/embeddings。
|
||||
EMBEDDING_API_KEY= # 云端必填;本地无鉴权可留空并设 EMBEDDING_NO_AUTH=true
|
||||
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
||||
EMBEDDING_MODEL=text-embedding-v3 # 本地示例: bge-m3 / nomic-embed-text
|
||||
EMBEDDING_DIMENSIONS=1024 # 必须与模型及 pgvector 列维度一致
|
||||
EMBEDDING_NO_AUTH=false # 本地无鉴权端点设为 true
|
||||
|
||||
# ---- Dify 对接(知识库/创作中心仍可用) ----
|
||||
DIFY_API_URL=http://localhost:5001/v1
|
||||
DIFY_API_KEY=app-xxxx
|
||||
|
||||
Reference in New Issue
Block a user