1
+ import os
2
+
3
+ from dotenv import load_dotenv
4
+
5
+ from biz .llm .factory import Factory
6
+ from biz .utils .log import logger
7
+
8
+ # 指定环境变量文件路径
9
+ ENV_FILE_PATH = "conf/.env"
10
+ load_dotenv (ENV_FILE_PATH )
11
+
12
+
13
+ REQUIRED_ENV_VARS = [
14
+ "LLM_PROVIDER" ,
15
+ ]
16
+
17
+ # 允许的 LLM 供应商
18
+ LLM_PROVIDERS = {"zhipuai" , "openai" , "deepseek" , "ollama" }
19
+
20
+ # 每种供应商必须配置的键
21
+ LLM_REQUIRED_KEYS = {
22
+ "zhipuai" : ["ZHIPUAI_API_KEY" , "ZHIPUAI_API_MODEL" ],
23
+ "openai" : ["OPENAI_API_KEY" , "OPENAI_API_MODEL" ],
24
+ "deepseek" : ["DEEPSEEK_API_KEY" , "DEEPSEEK_API_MODEL" ],
25
+ "ollama" : ["OLLAMA_API_BASE_URL" , "OLLAMA_API_MODEL" ],
26
+ }
27
+
28
+
29
+ def check_env_vars ():
30
+ """检查环境变量"""
31
+ missing_vars = [var for var in REQUIRED_ENV_VARS if var not in os .environ ]
32
+ if missing_vars :
33
+ logger .warning (f"缺少环境变量: { ', ' .join (missing_vars )} " )
34
+ else :
35
+ logger .info ("所有必要的环境变量均已设置。" )
36
+
37
+
38
+ def check_llm_provider ():
39
+ """检查 LLM 供应商的配置"""
40
+ llm_provider = os .getenv ("LLM_PROVIDER" )
41
+
42
+ if not llm_provider :
43
+ logger .error ("LLM_PROVIDER 未设置!" )
44
+ return
45
+
46
+ if llm_provider not in LLM_PROVIDERS :
47
+ logger .error (f"LLM_PROVIDER 值错误,应为 { LLM_PROVIDERS } 之一。" )
48
+ return
49
+
50
+ required_keys = LLM_REQUIRED_KEYS .get (llm_provider , [])
51
+ missing_keys = [key for key in required_keys if not os .getenv (key )]
52
+
53
+ if missing_keys :
54
+ logger .error (f"当前 LLM 供应商为 { llm_provider } ,但缺少必要的环境变量: { ', ' .join (missing_keys )} " )
55
+ else :
56
+ logger .info (f"LLM 供应商 { llm_provider } 的配置项已设置。" )
57
+
58
+ def check_llm_connectivity ():
59
+ client = Factory ().getClient ()
60
+ logger .info (f"正在检查 LLM 供应商的连接..." )
61
+ if client .ping ():
62
+ logger .info ("LLM 可以连接成功。" )
63
+ else :
64
+ logger .error ("LLM连接可能有问题,请检查配置项。" )
65
+
66
+ def check_config ():
67
+ """主检查入口"""
68
+ logger .info ("开始检查配置项..." )
69
+ check_env_vars ()
70
+ check_llm_provider ()
71
+ check_llm_connectivity ()
72
+ logger .info ("配置项检查完成。" )
0 commit comments