Files
happy-life-star/backend-single/AICHAT_SERVICE_OPTIMIZATION.md
T

169 lines
4.8 KiB
Markdown

# AiChatServiceImpl Coze API 配置优化
## 优化概述
根据 `application.yml` 中的 Coze API 配置信息,对 `AiChatServiceImpl` 进行了全面优化,使其能够正确使用配置文件中定义的参数。
## 主要优化内容
### 1. 配置参数更新
#### 1.1 配置路径修正
- **之前**: 使用 `${coze.api.*}` 配置路径
- **现在**: 使用 `${emotion.coze.api.*}` 配置路径,与 `application.yml` 保持一致
#### 1.2 新增配置参数
```java
// 基础配置
@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 新增专用方法
```java
// 聊天消息发送
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构建
```java
// 之前: 硬编码的URL
private String cozeApiUrl = "https://www.coze.cn/api/message";
// 现在: 基于配置的动态构建
String cozeApiUrl = cozeBaseUrl + "/api/message";
```
#### 3.2 健康检查URL优化
```java
// 之前
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` 中的配置:
```yaml
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 普通聊天
```java
// 使用 chatBotId 和 chatWorkflowId
String reply = aiChatService.sendChatMessage(conversationId, message, userId);
```
#### 7.2 对话总结
```java
// 使用 summaryBotId 和 summaryWorkflowId
String summary = aiChatService.generateConversationSummary(conversationId, userId);
```
### 8. 注意事项
1. **配置验证**: 确保 `application.yml` 中的配置值正确
2. **环境变量**: 可以通过环境变量覆盖配置值
3. **错误处理**: 配置缺失时会使用默认值
4. **日志监控**: 关注API调用的日志输出
---
**优化完成时间**: 2025-07-24
**优化状态**: ✅ 完成
**编译状态**: ✅ 成功
**配置状态**: ✅ 与application.yml一致