config.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. # agent/config.py
  2. """
  3. Agent配置文件
  4. 定义所有Agent相关的配置参数,便于调优
  5. 配置说明:
  6. - 所有阈值参数都支持运行时调整,无需重启应用
  7. - 置信度参数范围通常在 0.0-1.0 之间
  8. - 迭代次数参数影响性能和准确性的平衡
  9. """
  10. AGENT_CONFIG = {
  11. # ==================== 问题分类器配置 ====================
  12. "classification": {
  13. # 高置信度阈值:当规则分类的置信度 >= 此值时,直接使用规则分类结果,不再调用LLM
  14. # 建议范围:0.7-0.9,过高可能错过需要LLM辅助的边界情况,过低会增加LLM调用成本
  15. "high_confidence_threshold": 0.8,
  16. # 低置信度阈值:当规则分类的置信度 <= 此值时,启用LLM二次分类进行辅助判断
  17. # 建议范围:0.2-0.5,过高会频繁调用LLM,过低可能错过需要LLM辅助的情况
  18. "low_confidence_threshold": 0.4,
  19. # 最大置信度上限:规则分类计算出的置信度不会超过此值,防止过度自信
  20. # 建议范围:0.8-1.0,通常设为0.9以保留不确定性空间
  21. "max_confidence": 0.9,
  22. # 基础置信度:规则分类的起始置信度,会根据匹配的关键词数量递增
  23. # 建议范围:0.3-0.6,这是匹配到1个关键词时的基础置信度
  24. "base_confidence": 0.5,
  25. # 置信度增量步长:每匹配一个额外关键词,置信度增加的数值
  26. # 建议范围:0.05-0.2,过大会导致置信度增长过快,过小则区分度不够
  27. "confidence_increment": 0.1,
  28. # LLM分类失败时的默认置信度:当LLM调用异常或解析失败时使用
  29. # 建议范围:0.3-0.6,通常设为中等水平,避免过高或过低的错误影响
  30. "llm_fallback_confidence": 0.5,
  31. # 不确定分类的默认置信度:当规则分类无法明确判断时使用
  32. # 建议范围:0.1-0.3,应设为较低值,表示确实不确定
  33. "uncertain_confidence": 0.2,
  34. },
  35. # ==================== 数据库Agent配置 ====================
  36. "database_agent": {
  37. # Agent最大迭代次数:防止无限循环,每次迭代包含一轮工具调用
  38. # 建议范围:3-10,过少可能无法完成复杂查询,过多会影响响应时间
  39. # 典型流程:1.生成SQL → 2.执行SQL → 3.生成摘要 = 3次迭代
  40. "max_iterations": 5,
  41. # 是否启用详细日志:True时会输出Agent的详细执行过程,便于调试
  42. # 生产环境建议设为False以减少日志量,开发环境建议设为True
  43. "enable_verbose": True,
  44. # 早停策略:当Agent认为任务完成时的停止方法
  45. # 可选值:"generate"(生成完成即停止) | "force"(强制完成所有步骤)
  46. # "generate"更高效,"force"更稳定但可能产生冗余步骤
  47. "early_stopping_method": "generate",
  48. },
  49. # ==================== 聊天Agent配置 ====================
  50. "chat_agent": {
  51. # 聊天Agent最大迭代次数:聊天场景通常比数据库查询简单,迭代次数可以更少
  52. # 建议范围:1-5,通常1-2次就能完成聊天响应
  53. "max_iterations": 3,
  54. # 是否启用详细日志:同数据库Agent,控制日志详细程度
  55. "enable_verbose": True,
  56. # 是否注入分类上下文信息:True时会将分类原因作为上下文传递给聊天Agent
  57. # 帮助聊天Agent更好地理解用户意图,但会增加prompt长度
  58. "enable_context_injection": True,
  59. },
  60. # ==================== 健康检查配置 ====================
  61. "health_check": {
  62. # 健康检查使用的测试问题:用于验证系统基本功能是否正常
  63. # 建议使用简单的问候语,避免复杂查询影响检查速度
  64. "test_question": "你好",
  65. # 是否启用完整流程测试:True时会执行完整的问题处理流程
  66. # False时只检查基本组件状态,True时更全面但耗时更长
  67. "enable_full_test": True,
  68. },
  69. # ==================== 性能优化配置 ====================
  70. "performance": {
  71. # 是否启用Agent实例重用:True时会预创建Agent实例并重复使用
  72. # 优点:减少初始化时间,提高响应速度
  73. # 缺点:占用更多内存,可能存在状态污染风险
  74. # 生产环境建议启用,内存受限环境可关闭
  75. "enable_agent_reuse": True,
  76. },
  77. }
  78. def get_nested_config(config: dict, key_path: str, default=None):
  79. """
  80. 获取嵌套配置值
  81. Args:
  82. config: 配置字典
  83. key_path: 嵌套键路径,如 "classification.high_confidence_threshold"
  84. default: 默认值,当配置项不存在时返回
  85. Returns:
  86. 配置值或默认值
  87. Example:
  88. >>> config = {"classification": {"high_confidence_threshold": 0.8}}
  89. >>> get_nested_config(config, "classification.high_confidence_threshold", 0.5)
  90. 0.8
  91. >>> get_nested_config(config, "classification.missing_key", 0.5)
  92. 0.5
  93. """
  94. keys = key_path.split('.')
  95. current = config
  96. try:
  97. for key in keys:
  98. current = current[key]
  99. return current
  100. except (KeyError, TypeError):
  101. return default
  102. def get_current_config() -> dict:
  103. """
  104. 获取当前配置
  105. Returns:
  106. 完整的Agent配置字典
  107. Note:
  108. 此函数返回的是配置的引用,修改返回值会影响全局配置
  109. 如需修改配置,建议创建副本后再修改
  110. """
  111. return AGENT_CONFIG