Support .env for server-local Ollama config to avoid git pull conflicts.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
# Trading Studio 服务器本地配置(复制为 .env 后修改,不会被 git 跟踪)
|
||||||
|
# cp .env.example .env
|
||||||
|
|
||||||
|
# Ollama 局域网地址(按实际环境修改)
|
||||||
|
OLLAMA_HOST=192.168.8.64
|
||||||
|
OLLAMA_PORT=11434
|
||||||
|
|
||||||
|
# 可选:覆盖默认模型名
|
||||||
|
# MODEL_NAME=huihui_ai/gemma-4-abliterated:e4b
|
||||||
@@ -41,6 +41,7 @@ Thumbs.db
|
|||||||
# 环境变量与密钥
|
# 环境变量与密钥
|
||||||
.env
|
.env
|
||||||
.env.*
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
# Gradio 临时
|
# Gradio 临时
|
||||||
gradio_cached_examples/
|
gradio_cached_examples/
|
||||||
|
|||||||
@@ -41,6 +41,20 @@
|
|||||||
|
|
||||||
> **Git 认证:** 若 `git clone` 需要登录,请先在 root 下配置 HTTPS 凭据或 SSH 密钥,再执行部署脚本。
|
> **Git 认证:** 若 `git clone` 需要登录,请先在 root 下配置 HTTPS 凭据或 SSH 密钥,再执行部署脚本。
|
||||||
|
|
||||||
|
> **服务器本地配置(Ollama IP 等):** 不要直接改 `config.py`,请使用 `.env` 文件:
|
||||||
|
> ```bash
|
||||||
|
> cp .env.example .env
|
||||||
|
> nano .env # 修改 OLLAMA_HOST=你的局域网IP
|
||||||
|
> pm2 restart trading_studio
|
||||||
|
> ```
|
||||||
|
|
||||||
|
> **git pull 报本地修改冲突?** 执行:
|
||||||
|
> ```bash
|
||||||
|
> git stash push -m "backup" -- config.py llm_service.py
|
||||||
|
> git pull
|
||||||
|
> pm2 restart trading_studio
|
||||||
|
> ```
|
||||||
|
|
||||||
### 0.2 首次一键部署
|
### 0.2 首次一键部署
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,20 +1,55 @@
|
|||||||
"""
|
"""
|
||||||
Trading Studio 全局配置模块
|
Trading Studio 全局配置模块
|
||||||
统一存放局域网节点、模型名称、固定 Prompt 及本地路径。
|
统一存放局域网节点、模型名称、固定 Prompt 及本地路径。
|
||||||
|
|
||||||
|
服务器本地覆盖:复制 .env.example 为 .env 并修改(不入 Git),无需改 config.py。
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def _load_dotenv() -> None:
|
||||||
|
"""加载项目根目录 .env(简单 KEY=VALUE 格式,无第三方依赖)。"""
|
||||||
|
env_path = Path(__file__).resolve().parent / ".env"
|
||||||
|
if not env_path.is_file():
|
||||||
|
return
|
||||||
|
for raw in env_path.read_text(encoding="utf-8").splitlines():
|
||||||
|
line = raw.strip()
|
||||||
|
if not line or line.startswith("#") or "=" not in line:
|
||||||
|
continue
|
||||||
|
key, val = line.split("=", 1)
|
||||||
|
key = key.strip()
|
||||||
|
val = val.strip().strip('"').strip("'")
|
||||||
|
if key and key not in os.environ:
|
||||||
|
os.environ[key] = val
|
||||||
|
|
||||||
|
|
||||||
|
_load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
def _env_str(key: str, default: str) -> str:
|
||||||
|
return os.environ.get(key, default).strip()
|
||||||
|
|
||||||
|
|
||||||
|
def _env_int(key: str, default: int) -> int:
|
||||||
|
try:
|
||||||
|
return int(os.environ.get(key, str(default)).strip())
|
||||||
|
except ValueError:
|
||||||
|
return default
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 网络与服务
|
# 网络与服务
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 远程 Ollama 节点(局域网大模型审查润色)
|
# 远程 Ollama 节点(局域网大模型审查润色)
|
||||||
OLLAMA_HOST = "192.168.8.64"
|
# 生产环境请在 .env 中设置 OLLAMA_HOST,避免 git pull 冲突
|
||||||
OLLAMA_PORT = 11434
|
OLLAMA_HOST = _env_str("OLLAMA_HOST", "192.168.8.64")
|
||||||
|
OLLAMA_PORT = _env_int("OLLAMA_PORT", 11434)
|
||||||
OLLAMA_URL = f"http://{OLLAMA_HOST}:{OLLAMA_PORT}/api/chat"
|
OLLAMA_URL = f"http://{OLLAMA_HOST}:{OLLAMA_PORT}/api/chat"
|
||||||
|
|
||||||
# 指定无限制版 Gemma4 模型
|
# 指定无限制版 Gemma4 模型
|
||||||
MODEL_NAME = "huihui_ai/gemma-4-abliterated:e4b"
|
MODEL_NAME = _env_str("MODEL_NAME", "huihui_ai/gemma-4-abliterated:e4b")
|
||||||
|
|
||||||
# Gradio 中控固定端口(硬性死规则)
|
# Gradio 中控固定端口(硬性死规则)
|
||||||
HOST = "0.0.0.0"
|
HOST = "0.0.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user