-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathai_config.py
More file actions
81 lines (62 loc) · 2.07 KB
/
Copy pathai_config.py
File metadata and controls
81 lines (62 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import os
import socket
DEFAULT_ENV = 'default'
def get_local_ip():
try:
return socket.gethostbyname(socket.gethostname())
except OSError:
return None
def _load_dotenv():
try:
from config_loader import load_dotenv_if_available
load_dotenv_if_available()
except ImportError:
pass
def _profile_env_name(env_name):
return env_name.upper().replace('-', '_')
def _parse_ip_routing():
"""解析 AI_IP_ROUTING,格式:IP前缀:环境名,IP前缀:环境名"""
routing = os.getenv('AI_IP_ROUTING', '').strip()
if not routing:
return []
rules = []
for item in routing.split(','):
item = item.strip()
if not item or ':' not in item:
continue
prefix, env_name = item.split(':', 1)
prefix = prefix.strip()
env_name = env_name.strip()
if prefix and env_name:
rules.append((prefix, env_name))
return rules
def auto_select_env():
"""根据本机 IP 前缀选择 AI 环境,规则来自 AI_IP_ROUTING。"""
explicit_env = os.getenv('AI_ENV')
if explicit_env:
return explicit_env
local_ip = get_local_ip()
if local_ip:
for prefix, env_name in _parse_ip_routing():
if local_ip.startswith(prefix):
return env_name
return os.getenv('AI_ENV_DEFAULT', DEFAULT_ENV)
def get_env_config():
"""读取 AI 服务配置,URL / 模型 / 密钥均来自环境变量。"""
_load_dotenv()
env_name = auto_select_env()
suffix = _profile_env_name(env_name)
url = os.getenv('AI_API_URL') or os.getenv(f'AI_{suffix}_URL', '')
api_key = os.getenv('AI_API_KEY') or os.getenv(f'AI_{suffix}_API_KEY', '')
model = os.getenv('AI_MODEL') or os.getenv(f'AI_{suffix}_MODEL', '')
return {
'env': env_name,
'url': url.strip(),
'api_key': api_key.strip(),
'model': model.strip(),
'provider': (
os.getenv('AI_PROVIDER')
or os.getenv(f'AI_{suffix}_PROVIDER')
or 'openai'
).strip().lower(),
}