4.8 KiB
4.8 KiB
AiChatServiceImpl Coze API 配置优化
优化概述
根据 application.yml 中的 Coze API 配置信息,对 AiChatServiceImpl 进行了全面优化,使其能够正确使用配置文件中定义的参数。
主要优化内容
1. 配置参数更新
1.1 配置路径修正
- 之前: 使用
${coze.api.*}配置路径 - 现在: 使用
${emotion.coze.api.*}配置路径,与application.yml保持一致
1.2 新增配置参数
// 基础配置
@Value("${emotion.coze.api.token:}")
private String cozeApiToken;
@Value("${emotion.coze.api.base-url:https://api.coze.cn}")
private String cozeBaseUrl;
// 聊天功能配置
@Value("${emotion.coze.api.chat.talk.bot-id:}")
private String chatBotId;
@Value("${emotion.coze.api.chat.talk.workflow-id:}")
private String chatWorkflowId;
// 总结功能配置
@Value("${emotion.coze.api.chat.summary.bot-id:}")
private String summaryBotId;
@Value("${emotion.coze.api.chat.summary.workflow-id:}")
private String summaryWorkflowId;
// 超时和重试配置
@Value("${emotion.coze.api.timeout:30000}")
private int timeout;
@Value("${emotion.coze.api.retry-count:3}")
private int retryCount;
@Value("${emotion.coze.api.retry-delay:1000}")
private int retryDelay;
2. 功能分离优化
2.1 聊天和总结功能分离
- 聊天功能: 使用
chatBotId和chatWorkflowId - 总结功能: 使用
summaryBotId和summaryWorkflowId
2.2 新增专用方法
// 聊天消息发送
private Map<String, Object> buildCozeRequest(String conversationId, String userMessage, String userId)
// 总结消息发送
private String sendSummaryMessage(String conversationId, String userMessage, String userId)
private Map<String, Object> buildSummaryRequest(String conversationId, String userMessage, String userId)
3. API URL 构建优化
3.1 动态URL构建
// 之前: 硬编码的URL
private String cozeApiUrl = "https://www.coze.cn/api/message";
// 现在: 基于配置的动态构建
String cozeApiUrl = cozeBaseUrl + "/api/message";
3.2 健康检查URL优化
// 之前
cozeApiUrl.replace("/api/message", "/v1/bot/get_online_info?bot_id=" + cozeBotId)
// 现在
cozeBaseUrl + "/v1/bot/get_online_info?bot_id=" + chatBotId
4. 配置参数对应关系
| 配置文件路径 | 代码变量 | 用途 |
|---|---|---|
emotion.coze.api.token |
cozeApiToken |
API认证令牌 |
emotion.coze.api.base-url |
cozeBaseUrl |
API基础URL |
emotion.coze.api.chat.talk.bot-id |
chatBotId |
聊天机器人ID |
emotion.coze.api.chat.talk.workflow-id |
chatWorkflowId |
聊天工作流ID |
emotion.coze.api.chat.summary.bot-id |
summaryBotId |
总结机器人ID |
emotion.coze.api.chat.summary.workflow-id |
summaryWorkflowId |
总结工作流ID |
emotion.coze.api.timeout |
timeout |
请求超时时间 |
emotion.coze.api.retry-count |
retryCount |
重试次数 |
emotion.coze.api.retry-delay |
retryDelay |
重试延迟 |
5. 实际配置值
根据 application.yml 中的配置:
emotion:
coze:
api:
token: pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO
base-url: https://api.coze.cn
chat:
talk:
bot-id: 7523042446285439016
workflow-id: 7523047462895796287
summary:
bot-id: 7529062814150295595
workflow-id: 7523047462895796287
timeout: 30000
retry-count: 3
retry-delay: 1000
6. 优化效果
6.1 配置管理
- ✅ 统一配置管理,所有参数从
application.yml读取 - ✅ 支持环境变量覆盖
- ✅ 配置参数类型安全
6.2 功能分离
- ✅ 聊天和总结功能使用不同的bot和workflow
- ✅ 代码结构更清晰,职责分离明确
- ✅ 便于后续功能扩展
6.3 错误处理
- ✅ 配置缺失时的默认值处理
- ✅ 服务可用性检查优化
- ✅ 详细的日志记录
6.4 性能优化
- ✅ 支持超时配置
- ✅ 支持重试机制
- ✅ 减少硬编码,提高可维护性
7. 使用示例
7.1 普通聊天
// 使用 chatBotId 和 chatWorkflowId
String reply = aiChatService.sendChatMessage(conversationId, message, userId);
7.2 对话总结
// 使用 summaryBotId 和 summaryWorkflowId
String summary = aiChatService.generateConversationSummary(conversationId, userId);
8. 注意事项
- 配置验证: 确保
application.yml中的配置值正确 - 环境变量: 可以通过环境变量覆盖配置值
- 错误处理: 配置缺失时会使用默认值
- 日志监控: 关注API调用的日志输出
优化完成时间: 2025-07-24
优化状态: ✅ 完成
编译状态: ✅ 成功
配置状态: ✅ 与application.yml一致