| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- server:
- port: 2438
- rag:
- ai-bridge:
- enabled: ${RAG_AI_BRIDGE_ENABLED:false}
- timeout: ${RAG_AI_BRIDGE_TIMEOUT:300s}
- # Python 子进程管理(由 Java 启动并注入 LLM 环境变量,LLM 配置统一从 spring.ai.openai.* 读取)
- host: ${RAG_AI_BRIDGE_HOST:127.0.0.1}
- port: ${RAG_AI_BRIDGE_PORT:18733}
- python-path: ${RAG_AI_BRIDGE_PYTHON_PATH:python}
- script-path: ${RAG_AI_BRIDGE_SCRIPT_PATH:rag-ai-bridge/server.py}
- startup-timeout: ${RAG_AI_BRIDGE_STARTUP_TIMEOUT:60}
- health-check-interval: ${RAG_AI_BRIDGE_HEALTH_CHECK_INTERVAL:60}
- skill:
- # Skill 文件存放目录,请修改为你的实际路径
- # 该目录下的每个子目录被视为一个 Skill,子目录内应包含 SKILL.md
- base-path: ${SKILL_BASE_PATH:./uploads/skills}
- # JSON 文件存储目录(配置类数据:ai_model / tags / categories / workflows)
- app:
- json-store-dir: ${JSON_STORE_DIR:./data/json}
- # ========== 知识库子系统 ==========
- kb:
- # 总开关:false 时所有 kb 接口返回 503(运维应急降级用)
- enabled: ${KB_ENABLED:true}
- upload-dir: ${KB_UPLOAD_DIR:./uploads/kb}
- max-file-size: 52428800 # 50MB
- chunk-size: 1000
- chunk-overlap: 200
- allowed-mime-types:
- - application/pdf
- - application/vnd.openxmlformats-officedocument.wordprocessingml.document
- - application/msword
- - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- - application/vnd.ms-excel
- - application/vnd.openxmlformats-officedocument.presentationml.presentation
- - application/vnd.ms-powerpoint
- - text/plain
- - text/markdown
- - text/html
- # Milvus 向量库(文档向量化)
- milvus:
- enabled: ${MILVUS_ENABLED:true}
- # Java SDK 使用 gRPC 连接 Milvus Lite,不要加 http:// 前缀
- # 本地 Milvus Lite 默认 gRPC 地址:127.0.0.1:19530
- # HTTP REST 端口是 9091,不要混用
- host: ${MILVUS_HOST:127.0.0.1}
- port: ${MILVUS_PORT:19530}
- collection: ${MILVUS_COLLECTION:kb_documents}
- vector-dimension: 1024
- # 本地 Embedding Bridge(稠密+稀疏向量、三级分块、Leaf-only 存储)
- # 使用前需安装依赖: pip install -r backend/embedding-bridge/requirements.txt
- # 首次运行会自动下载 HuggingFace 模型(约 2GB)
- embedding-bridge:
- enabled: ${EMBEDDING_BRIDGE_ENABLED:true}
- host: ${EMBEDDING_BRIDGE_HOST:127.0.0.1}
- port: ${EMBEDDING_BRIDGE_PORT:18732}
- python-path: ${EMBEDDING_BRIDGE_PYTHON_PATH:python}
- script-path: ${EMBEDDING_BRIDGE_SCRIPT_PATH:embedding-bridge/server.py}
- startup-timeout: 120
- health-check-interval: 5
- http-timeout: 600000
- # 访问令牌(为空时自动生成临时 token)
- auth-token: ${EMBEDDING_BRIDGE_AUTH_TOKEN:}
- # 本地 HuggingFace 嵌入模型
- embedding-model: ${EMBEDDING_MODEL:BAAI/bge-m3}
- embedding-device: ${EMBEDDING_DEVICE:cpu}
- dense-embedding-dim: ${DENSE_EMBEDDING_DIM:1024}
- # 三级分块叶子节点参数(L1/L2 按比例放大)
- chunk-size: ${EMBEDDING_CHUNK_SIZE:800}
- chunk-overlap: ${EMBEDDING_CHUNK_OVERLAP:100}
- # ========== SQL Console(结构化数据源管理) ==========
- sql-console:
- query-timeout-seconds: 30
- max-rows: 10000
- forbidden-system-schemas:
- - information_schema
- - mysql
- - sys
- - performance_schema
- - pg_catalog
- # ========== 知识图谱(Neo4j) ==========
- neo4j:
- # 默认值仅供表单预填,实际连接信息存 GraphSource 表(密码 Jasypt 加密)
- # ⚠️ 请改为你的 Neo4j 实例地址与凭据
- default-uri: ${NEO4J_URI:bolt://localhost:7687}
- default-user: ${NEO4J_USER:neo4j}
- default-password: ${NEO4J_PASSWORD:YOUR_NEO4J_PASSWORD_HERE}
- # 查询安全
- query-timeout-seconds: 30
- max-nodes: 1000
- max-edges: 2000
- # 工作流运行目录(永久保留,包含每次运行的文件)
- workflow:
- run-dir: ${WORKFLOW_RUN_DIR:./data/workflow-runs}
- spring:
- datasource:
- # H2 仅保留运行日志(workflow_run / workflow_run_node)
- url: jdbc:h2:file:./data/agent-runs
- driver-class-name: org.h2.Driver
- username: sa
- password:
- jpa:
- hibernate:
- ddl-auto: update
- show-sql: false
- h2:
- console:
- enabled: false
- servlet:
- multipart:
- # 单次上传文件大小上限(工作流运行时上传场景)
- max-file-size: 50MB
- max-request-size: 50MB
- # 排除 Spring AI Milvus 自动配置,由本项目 MilvusConfig 按 app.milvus.enabled 控制
- autoconfigure:
- exclude:
- - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration
- ai:
- openai:
- # LLM 服务地址,默认指向智谱 AI(兼容 OpenAI 协议)
- # 可改为其他兼容服务(如 DeepSeek、Moonshot 等)
- base-url: https://open.bigmodel.cn/api/coding/paas/v4
- # ⚠️ 请填入你的智谱 AI API Key
- # 获取地址:https://open.bigmodel.cn/
- # 该 Key 同时用于:1) Spring AI 直接调用 LLM 节点 2) Hermes Bridge 子进程(hermes.bridge.llm-api-key 为空时回退到此)
- api-key: ${OPENAI_API_KEY:YOUR_ZHIPU_API_KEY_HERE}
- chat:
- completions-path: /chat/completions
- options:
- # 模型名称需与 base-url 对应服务一致
- model: glm-5.2
- temperature: 0.3
- # 智谱 embedding-2(已弃用,文档向量化现由本地 Embedding Bridge 完成)
- # 保留本配置仅为兼容 Spring AI EmbeddingModel bean 创建
- embedding:
- options:
- model: embedding-2
- # 外部 API(/api/v1/**)配置
- # 第三方系统通过 X-API-Key 鉴权后调用工作流,详见 docs/external-workflow-api-spec.md
- external:
- api:
- enabled: ${EXTERNAL_API_ENABLED:true}
- keys:
- - key: ${EXTERNAL_API_KEY_1:}
- workflow-ids: [] # 留空表示不限制;填 [12, 15] 表示仅允许调用这两个工作流
- # Hermes Agent 执行引擎配置
- # 启用后 agent / smartAction 节点将委托 Hermes Bridge(Python AIAgent)执行,
- # 获得 40+ 工具(终端、浏览器、搜索等)与 Skill 系统的实际执行能力。
- # 使用前需安装: pip install -r hermes-bridge/requirements.txt
- # 关闭后 agent / smartAction 节点将退化为 LLM 节点(仅文本对话,无工具能力)
- hermes:
- enabled: ${HERMES_ENABLED:true}
- bridge:
- port: ${HERMES_BRIDGE_PORT:18731}
- # Python 可执行文件路径(Windows 可能需要改为 python)
- python-path: ${HERMES_PYTHON_PATH:python}
- # Bridge 脚本路径(相对于项目根目录)
- script-path: ${HERMES_SCRIPT_PATH:hermes-bridge/hermes_bridge.py}
- # Bridge 启动超时(秒)
- startup-timeout: 30
- # 健康检查间隔(秒),0 表示不检查
- health-check-interval: 60
- # 节点未显式配置时使用的最大工具调用轮次(默认 100)
- # 复杂 Skill(多步工具调用)需要较大值,过小会导致「工具调用次数已达上限」错误
- default-max-iterations: 100
- # Bridge 子进程使用的 LLM API Key(与前端 LLM 节点隔离)
- # 为空时回退到 spring.ai.openai.api-key
- llm-api-key: ${HERMES_BRIDGE_LLM_API_KEY:}
- # Bridge HTTP 端点访问令牌(X-Bridge-Token 头校验)
- # 为空时启动会生成临时 token(推荐显式设置 32+ 字符随机字符串)
- auth-token: ${HERMES_BRIDGE_AUTH_TOKEN:}
- # Jasypt 加密(数据源凭据加密入库)
- # ⚠️ 生产环境务必通过环境变量 JASYPT_KEY 设置强随机密钥,不要使用默认值
- jasypt:
- encryptor:
- password: ${JASYPT_KEY:dev-only-key-replace-me-in-prod}
|