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

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 聊天和总结功能分离

  • 聊天功能: 使用 chatBotIdchatWorkflowId
  • 总结功能: 使用 summaryBotIdsummaryWorkflowId

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. 注意事项

  1. 配置验证: 确保 application.yml 中的配置值正确
  2. 环境变量: 可以通过环境变量覆盖配置值
  3. 错误处理: 配置缺失时会使用默认值
  4. 日志监控: 关注API调用的日志输出

优化完成时间: 2025-07-24
优化状态: 完成
编译状态: 成功
配置状态: 与application.yml一致