application.yml.example 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. server:
  2. port: 2438
  3. rag:
  4. ai-bridge:
  5. enabled: ${RAG_AI_BRIDGE_ENABLED:false}
  6. timeout: ${RAG_AI_BRIDGE_TIMEOUT:300s}
  7. # Python 子进程管理(由 Java 启动并注入 LLM 环境变量,LLM 配置统一从 spring.ai.openai.* 读取)
  8. host: ${RAG_AI_BRIDGE_HOST:127.0.0.1}
  9. port: ${RAG_AI_BRIDGE_PORT:18733}
  10. python-path: ${RAG_AI_BRIDGE_PYTHON_PATH:python}
  11. script-path: ${RAG_AI_BRIDGE_SCRIPT_PATH:rag-ai-bridge/server.py}
  12. startup-timeout: ${RAG_AI_BRIDGE_STARTUP_TIMEOUT:60}
  13. health-check-interval: ${RAG_AI_BRIDGE_HEALTH_CHECK_INTERVAL:60}
  14. skill:
  15. # Skill 文件存放目录,请修改为你的实际路径
  16. # 该目录下的每个子目录被视为一个 Skill,子目录内应包含 SKILL.md
  17. base-path: ${SKILL_BASE_PATH:./uploads/skills}
  18. # JSON 文件存储目录(配置类数据:ai_model / tags / categories / workflows)
  19. app:
  20. json-store-dir: ${JSON_STORE_DIR:./data/json}
  21. # ========== 知识库子系统 ==========
  22. kb:
  23. # 总开关:false 时所有 kb 接口返回 503(运维应急降级用)
  24. enabled: ${KB_ENABLED:true}
  25. upload-dir: ${KB_UPLOAD_DIR:./uploads/kb}
  26. max-file-size: 52428800 # 50MB
  27. chunk-size: 1000
  28. chunk-overlap: 200
  29. allowed-mime-types:
  30. - application/pdf
  31. - application/vnd.openxmlformats-officedocument.wordprocessingml.document
  32. - application/msword
  33. - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  34. - application/vnd.ms-excel
  35. - application/vnd.openxmlformats-officedocument.presentationml.presentation
  36. - application/vnd.ms-powerpoint
  37. - text/plain
  38. - text/markdown
  39. - text/html
  40. # Milvus 向量库(文档向量化)
  41. milvus:
  42. enabled: ${MILVUS_ENABLED:true}
  43. # Java SDK 使用 gRPC 连接 Milvus Lite,不要加 http:// 前缀
  44. # 本地 Milvus Lite 默认 gRPC 地址:127.0.0.1:19530
  45. # HTTP REST 端口是 9091,不要混用
  46. host: ${MILVUS_HOST:127.0.0.1}
  47. port: ${MILVUS_PORT:19530}
  48. collection: ${MILVUS_COLLECTION:kb_documents}
  49. vector-dimension: 1024
  50. # 本地 Embedding Bridge(稠密+稀疏向量、三级分块、Leaf-only 存储)
  51. # 使用前需安装依赖: pip install -r backend/embedding-bridge/requirements.txt
  52. # 首次运行会自动下载 HuggingFace 模型(约 2GB)
  53. embedding-bridge:
  54. enabled: ${EMBEDDING_BRIDGE_ENABLED:true}
  55. host: ${EMBEDDING_BRIDGE_HOST:127.0.0.1}
  56. port: ${EMBEDDING_BRIDGE_PORT:18732}
  57. python-path: ${EMBEDDING_BRIDGE_PYTHON_PATH:python}
  58. script-path: ${EMBEDDING_BRIDGE_SCRIPT_PATH:embedding-bridge/server.py}
  59. startup-timeout: 120
  60. health-check-interval: 5
  61. http-timeout: 600000
  62. # 访问令牌(为空时自动生成临时 token)
  63. auth-token: ${EMBEDDING_BRIDGE_AUTH_TOKEN:}
  64. # 本地 HuggingFace 嵌入模型
  65. embedding-model: ${EMBEDDING_MODEL:BAAI/bge-m3}
  66. embedding-device: ${EMBEDDING_DEVICE:cpu}
  67. dense-embedding-dim: ${DENSE_EMBEDDING_DIM:1024}
  68. # 三级分块叶子节点参数(L1/L2 按比例放大)
  69. chunk-size: ${EMBEDDING_CHUNK_SIZE:800}
  70. chunk-overlap: ${EMBEDDING_CHUNK_OVERLAP:100}
  71. # ========== SQL Console(结构化数据源管理) ==========
  72. sql-console:
  73. query-timeout-seconds: 30
  74. max-rows: 10000
  75. forbidden-system-schemas:
  76. - information_schema
  77. - mysql
  78. - sys
  79. - performance_schema
  80. - pg_catalog
  81. # ========== 知识图谱(Neo4j) ==========
  82. neo4j:
  83. # 默认值仅供表单预填,实际连接信息存 GraphSource 表(密码 Jasypt 加密)
  84. # ⚠️ 请改为你的 Neo4j 实例地址与凭据
  85. default-uri: ${NEO4J_URI:bolt://localhost:7687}
  86. default-user: ${NEO4J_USER:neo4j}
  87. default-password: ${NEO4J_PASSWORD:YOUR_NEO4J_PASSWORD_HERE}
  88. # 查询安全
  89. query-timeout-seconds: 30
  90. max-nodes: 1000
  91. max-edges: 2000
  92. # 工作流运行目录(永久保留,包含每次运行的文件)
  93. workflow:
  94. run-dir: ${WORKFLOW_RUN_DIR:./data/workflow-runs}
  95. spring:
  96. datasource:
  97. # H2 仅保留运行日志(workflow_run / workflow_run_node)
  98. url: jdbc:h2:file:./data/agent-runs
  99. driver-class-name: org.h2.Driver
  100. username: sa
  101. password:
  102. jpa:
  103. hibernate:
  104. ddl-auto: update
  105. show-sql: false
  106. h2:
  107. console:
  108. enabled: false
  109. servlet:
  110. multipart:
  111. # 单次上传文件大小上限(工作流运行时上传场景)
  112. max-file-size: 50MB
  113. max-request-size: 50MB
  114. # 排除 Spring AI Milvus 自动配置,由本项目 MilvusConfig 按 app.milvus.enabled 控制
  115. autoconfigure:
  116. exclude:
  117. - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration
  118. ai:
  119. openai:
  120. # LLM 服务地址,默认指向智谱 AI(兼容 OpenAI 协议)
  121. # 可改为其他兼容服务(如 DeepSeek、Moonshot 等)
  122. base-url: https://open.bigmodel.cn/api/coding/paas/v4
  123. # ⚠️ 请填入你的智谱 AI API Key
  124. # 获取地址:https://open.bigmodel.cn/
  125. # 该 Key 同时用于:1) Spring AI 直接调用 LLM 节点 2) Hermes Bridge 子进程(hermes.bridge.llm-api-key 为空时回退到此)
  126. api-key: ${OPENAI_API_KEY:YOUR_ZHIPU_API_KEY_HERE}
  127. chat:
  128. completions-path: /chat/completions
  129. options:
  130. # 模型名称需与 base-url 对应服务一致
  131. model: glm-5.2
  132. temperature: 0.3
  133. # 智谱 embedding-2(已弃用,文档向量化现由本地 Embedding Bridge 完成)
  134. # 保留本配置仅为兼容 Spring AI EmbeddingModel bean 创建
  135. embedding:
  136. options:
  137. model: embedding-2
  138. # 外部 API(/api/v1/**)配置
  139. # 第三方系统通过 X-API-Key 鉴权后调用工作流,详见 docs/external-workflow-api-spec.md
  140. external:
  141. api:
  142. enabled: ${EXTERNAL_API_ENABLED:true}
  143. keys:
  144. - key: ${EXTERNAL_API_KEY_1:}
  145. workflow-ids: [] # 留空表示不限制;填 [12, 15] 表示仅允许调用这两个工作流
  146. # Hermes Agent 执行引擎配置
  147. # 启用后 agent / smartAction 节点将委托 Hermes Bridge(Python AIAgent)执行,
  148. # 获得 40+ 工具(终端、浏览器、搜索等)与 Skill 系统的实际执行能力。
  149. # 使用前需安装: pip install -r hermes-bridge/requirements.txt
  150. # 关闭后 agent / smartAction 节点将退化为 LLM 节点(仅文本对话,无工具能力)
  151. hermes:
  152. enabled: ${HERMES_ENABLED:true}
  153. bridge:
  154. port: ${HERMES_BRIDGE_PORT:18731}
  155. # Python 可执行文件路径(Windows 可能需要改为 python)
  156. python-path: ${HERMES_PYTHON_PATH:python}
  157. # Bridge 脚本路径(相对于项目根目录)
  158. script-path: ${HERMES_SCRIPT_PATH:hermes-bridge/hermes_bridge.py}
  159. # Bridge 启动超时(秒)
  160. startup-timeout: 30
  161. # 健康检查间隔(秒),0 表示不检查
  162. health-check-interval: 60
  163. # 节点未显式配置时使用的最大工具调用轮次(默认 100)
  164. # 复杂 Skill(多步工具调用)需要较大值,过小会导致「工具调用次数已达上限」错误
  165. default-max-iterations: 100
  166. # Bridge 子进程使用的 LLM API Key(与前端 LLM 节点隔离)
  167. # 为空时回退到 spring.ai.openai.api-key
  168. llm-api-key: ${HERMES_BRIDGE_LLM_API_KEY:}
  169. # Bridge HTTP 端点访问令牌(X-Bridge-Token 头校验)
  170. # 为空时启动会生成临时 token(推荐显式设置 32+ 字符随机字符串)
  171. auth-token: ${HERMES_BRIDGE_AUTH_TOKEN:}
  172. # Jasypt 加密(数据源凭据加密入库)
  173. # ⚠️ 生产环境务必通过环境变量 JASYPT_KEY 设置强随机密钥,不要使用默认值
  174. jasypt:
  175. encryptor:
  176. password: ${JASYPT_KEY:dev-only-key-replace-me-in-prod}