config.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. """
  2. NER 服务配置
  3. """
  4. import os
  5. from pathlib import Path
  6. from pydantic_settings import BaseSettings
  7. from typing import Optional, List
  8. # Python 服务自身的 application.properties
  9. _APP_PROPS = Path(__file__).parents[2] / "application.properties"
  10. class Settings(BaseSettings):
  11. """应用配置"""
  12. # 服务配置
  13. app_name: str = "NER Service"
  14. app_version: str = "1.0.0"
  15. debug: bool = False
  16. host: str = "0.0.0.0"
  17. port: int = 8002
  18. # NER 模型配置
  19. # rule: 基于规则的简单 NER(开发测试用)
  20. # ollama: 使用本地 Ollama LLM
  21. # deepseek: 使用阿里云百炼 DeepSeek API(推荐)
  22. ner_model: str = "deepseek"
  23. use_gpu: bool = False
  24. max_text_length: int = 50000
  25. # Ollama 配置(用于 ollama 模式)
  26. ollama_url: str = "http://localhost:11434"
  27. ollama_model: str = "hoangquan456/qwen3-nothink:4b" # qwen3 无思考版本,直接输出结果
  28. ollama_timeout: int = 180 # 秒(CPU 模式需要更长时间)
  29. # UniversalNER 专用配置(当 ollama_model 包含 'universal-ner' 时自动启用)
  30. # 模型名: zeffmuks/universal-ner
  31. universal_ner_model: str = "zeffmuks/universal-ner"
  32. # 文本分块配置(用于长文本处理)
  33. chunk_size: int = 2000 # 每个分块的最大字符数
  34. chunk_overlap: int = 200 # 分块重叠字符数
  35. # DeepSeek API 配置(阿里云百炼平台)
  36. deepseek_api_key: str = ""
  37. deepseek_base_url: str = "https://dashscope.aliyuncs.com/compatible-mode"
  38. deepseek_model: str = "deepseek-v3.2-exp"
  39. deepseek_timeout: int = 600
  40. deepseek_temperature: float = 0.1 # NER 任务使用低温度
  41. deepseek_max_tokens: int = 4096
  42. deepseek_max_retries: int = 3
  43. # 实体类型配置
  44. # 注意:这些类型名需要与 prompt 中的定义一致
  45. entity_types: List[str] = [
  46. "PERSON", # 人名(包含职务+姓名)
  47. "ORG", # 机构/组织/部门(完整名称)
  48. "LOC", # 地点/位置
  49. "DATE", # 日期/时间
  50. "NUMBER", # 有意义的数值(带单位,非章节号)
  51. "DEVICE", # 设备/系统
  52. "PROJECT", # 项目/工程名称
  53. "METHOD", # 方法/标准/规范名称
  54. "DOC_ID", # 文件编号/标准编号
  55. "CERT", # 证书/资质/等级
  56. "TITLE", # 职务/职称
  57. "POLICY", # 政策法规名称
  58. ]
  59. # 日志配置
  60. log_level: str = "INFO"
  61. class Config:
  62. env_file = str(_APP_PROPS)
  63. env_file_encoding = "utf-8"
  64. case_sensitive = False
  65. settings = Settings()