《SpringAI 配置多环境:大模型应用开发、测试、生产切换技巧》
·
在SpringAI项目中实现多环境配置切换(开发、测试、生产),可通过以下结构化方案实现:
1. 多环境配置文件
创建对应环境的配置文件:
resources/
├── application.yml # 公共配置
├── application-dev.yml # 开发环境
├── application-test.yml # 测试环境
└── application-prod.yml # 生产环境
示例配置application.yml (公共基础):
spring:
ai:
openai:
base-url: ${AI_BASE_URL}
chat:
model: ${AI_MODEL}
temperature: 0.7
application-dev.yml (开发环境):
AI_BASE_URL: https://api.dev.example.com
AI_MODEL: gpt-3.5-turbo
API_KEY: dev_sk-xxxxxxxxxxxx
application-prod.yml (生产环境):
AI_BASE_URL: https://api.prod.example.com
AI_MODEL: gpt-4-turbo
API_KEY: ${ENV_PROD_API_KEY} # 从系统环境变量读取
2. 环境切换机制
(1) 启动时指定环境
# 开发环境
java -jar app.jar --spring.profiles.active=dev
# 生产环境
java -jar app.jar --spring.profiles.active=prod
(2) IDE配置(开发阶段)

在运行配置中设置Active profiles
3. 动态Bean装配
通过@Profile注解实现环境差异化配置:
@Configuration
public class AiConfig {
@Bean
@Profile("dev") // 仅开发环境生效
public ChatClient devChatClient() {
return new OpenAiChatClient("dev_sk-xxxxx", "gpt-3.5-turbo");
}
@Bean
@Profile("prod") // 仅生产环境生效
public ChatClient prodChatClient() {
return new OpenAiChatClient(System.getenv("PROD_API_KEY"), "gpt-4-turbo");
}
}
4. 敏感信息安全管理
生产环境密钥必须加密:
# application-prod.yml
api-key: ${ENCRYPTED_API_KEY} # 使用Jasypt等工具加密
启动时注入密钥:
java -jar app.jar --jasypt.encryptor.password=${MASTER_KEY}
5. 环境验证端点(可选)
添加检查接口确认当前环境:
@RestController
public class EnvCheckController {
@Value("${spring.profiles.active}")
private String env;
@GetMapping("/env")
public String checkEnv() {
return "当前环境: " + env + ", 模型: " + System.getenv("AI_MODEL");
}
}
最佳实践总结
| 环节 | 关键措施 |
|---|---|
| 开发 | 硬编码测试密钥,禁用敏感操作权限 |
| 测试 | 使用沙箱API端点,模拟生产数据量 |
| 生产 | 密钥托管至Vault/K8s Secrets系统 |
| 监控 | 集成Spring Actuator+Prometheus |
重要提示:生产环境必须通过CI/CD管道自动注入密钥,禁止配置文件明文存储密钥。不同环境建议使用独立的大模型账户,避免测试流量影响生产服务稳定性。
更多推荐
所有评论(0)