agent-config.yml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. # ════════════════════════════════════════════════════════════
  2. # qaagent67lite — 轻量级知识问答智能体 (BM25 + Wiki)
  3. # ════════════════════════════════════════════════════════════
  4. #
  5. # 适用场景: 资料少 (< 500 文档) 的领域,如财务、清洁、行政等
  6. # 与 qaagent67lambda 的区别:
  7. # lambda: 4 路并行 (BM25+Vector+Graph+Wiki) → 重量级,需要 embedding 服务
  8. # lite: 2 路融合 (BM25+Wiki) → 轻量级,纯 CPU,无外部依赖
  9. #
  10. # Lambda:
  11. # λ = Classify(q)
  12. # >> Par(BM25(q), WikiRead(q))
  13. # >> SimpleMerge(results)
  14. # >> LLM(context, question)
  15. #
  16. # 用法:
  17. # python3 -m agentpaas agent create --name lite-qa \
  18. # --config agentexample/qaagent67lite/agent-config.yml
  19. # python3 -m agentpaas chat lite-qa
  20. #
  21. # 部署:
  22. # 1. 复制本目录到目标机器
  23. # 2. 创建 instance.yml 指定 knowledge.baseDir
  24. # 3. 将原始文件放入 {baseDir}/raw/
  25. # 4. 运行 python scripts/setup.py (一键: 提取→索引→Wiki编译)
  26. # 5. agentpaas agent create + chat
  27. agentId: qaagent67lite-v1
  28. name: lite-qa
  29. description: >
  30. 轻量级知识问答智能体。BM25 关键词检索 + LLM Wiki 编译知识,
  31. 无需向量数据库或 embedding 服务。适合小规模文档集 (< 500 个文件)。
  32. type: react
  33. model:
  34. provider: claude-code
  35. name: sonnet
  36. temperature: 0.3
  37. maxTokens: 4096
  38. fallback:
  39. - anthropic/claude-sonnet-4-20250514
  40. - ollama/qwen2.5:32b
  41. - dashscope/qwen-max
  42. systemPrompt: |
  43. 你是一个精准的领域知识问答助手 (lite-qa)。
  44. ## 工作原理
  45. 你有两种知识来源:
  46. 1. **BM25 检索** — 从原始文档中按关键词搜索相关片段
  47. 2. **Wiki 编译知识** — LLM 预先编译的结构化 wiki 页面
  48. ## 工具
  49. **文档管理**:
  50. - IngestFiles: 导入文件到知识库 (提取文本 + 建 BM25 索引)
  51. - WikiIngest: 将文件编译到 Wiki (LLM 理解 → 写 wiki 页面)
  52. - ListKnowledge: 列出已索引的文件
  53. - WikiStatus: 查看 Wiki 统计和健康评分
  54. **查询**:
  55. - QueryKnowledge: BM25 关键词检索 + LLM 回答
  56. - WikiQuery: 从 Wiki 编译知识回答 (更精准)
  57. **维护**:
  58. - WikiLint: 检查 Wiki 健康 (矛盾/孤页/过期)
  59. - WikiGrow: 主动生长 Wiki (发现缺失概念)
  60. **辅助**:
  61. - ReadFile, ListFiles, SearchContent, Bash
  62. ## 工作流程
  63. - 用户问知识问题 → 先 WikiQuery 查编译知识 → 若不够再 QueryKnowledge 补充
  64. - 用户要导入文件 → IngestFiles (BM25索引) + WikiIngest (Wiki编译) 都做
  65. - 用户要维护 → WikiLint + WikiGrow
  66. ## 回答规则
  67. 1. 只基于检索到的内容回答,不编造
  68. 2. 每个要点标注来源
  69. 3. 存在矛盾时说明
  70. 4. 无相关信息时明确告知
  71. react:
  72. maxSteps: 20
  73. observationEnabled: true
  74. toolTimeout: 120
  75. thinkTimeout: 300
  76. verbose: true
  77. memory:
  78. enabled: true
  79. strategy: local
  80. size: 50
  81. ttl: 14400
  82. mcp:
  83. localTools:
  84. # 文档管理
  85. - IngestFiles
  86. - ListKnowledge
  87. - RemoveKnowledge
  88. # Wiki 知识编译 (v2)
  89. - WikiIngest
  90. - WikiQuery
  91. - WikiLint
  92. - WikiSearch
  93. - WikiStatus
  94. - WikiGrow
  95. # BM25 检索
  96. - QueryKnowledge
  97. # 辅助
  98. - ReadFile
  99. - ListFiles
  100. - SearchContent
  101. - Bash
  102. # 完成
  103. - terminate
  104. policy:
  105. mode: auto
  106. guard:
  107. dangerousCommandBlock: true
  108. highRiskConfirmation: false
  109. maxOutputLength: 50000
  110. retry: 0
  111. fallback: last
  112. persona:
  113. name: lite-qa
  114. style: helpful-precise
  115. template: qaagent
  116. runtime:
  117. engine: cek
  118. costBudget: 0.30
  119. maxSteps: 10000
  120. # ═══ 知识库配置 ═══
  121. # 部署时用 instance.yml 覆盖这些路径
  122. knowledge:
  123. baseDir: ./knowledge
  124. rawDir: ./knowledge/raw
  125. processedDir: ./knowledge/processed
  126. indexFile: ./knowledge/rag_index.json
  127. keywordFile: ./knowledge/rag_index.keywords.json
  128. # ═══ RAG 配置 (仅 BM25,无 Vector) ═══
  129. rag:
  130. enabled: true
  131. chunkSize: 512
  132. chunkOverlap: 64
  133. chunkSeparator: "\n\n"
  134. topK: 8
  135. # ═══ 检索配置 (Lite: BM25 + Wiki only) ═══
  136. retrieval:
  137. mode: lite
  138. skills:
  139. bm25:
  140. enabled: true
  141. topK: 10
  142. embedding:
  143. enabled: false # ← 关掉 Vector
  144. rerank:
  145. enabled: false # ← 关掉 Rerank
  146. graph:
  147. enabled: false # ← 关掉 Graph
  148. wiki:
  149. enabled: true
  150. # 简化的 weight profiles (只有 bm25 和 wiki)
  151. weights:
  152. fact: {bm25: 1.0, wiki: 0.3}
  153. compare: {bm25: 0.5, wiki: 0.9}
  154. process: {bm25: 0.7, wiki: 0.8}
  155. person: {bm25: 0.9, wiki: 0.5}
  156. temporal: {bm25: 1.0, wiki: 0.2}
  157. default: {bm25: 0.8, wiki: 0.6}
  158. orchestration:
  159. classifier:
  160. fastClassify: true
  161. llmFallback: false # lite 模式不用 LLM 分类,省 token
  162. rrfK: 60
  163. parallel: false # 只有 2 路,不需要并行
  164. # ═══ Wiki 配置 ═══
  165. wiki:
  166. dir: ./wiki
  167. relationsFile: ./wiki/relations.json