169 lines
4.8 KiB
Markdown
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一致 |