Files
SuperBizAgent-java/devflow/projects/2026-05-29-chatmodel-abstraction/decisions.md
T
2026-05-29 21:38:16 +08:00

2.0 KiB
Raw Blame History

ChatModel Abstraction Decisions

Question Pool

# 维度 问题 模式 状态
Q1 术语 ChatModel 注入方式:Spring Boot 自动注入 vs 手动工厂创建 evidence-driven 已解决
Q2 边界 RagService 流式对话:Spring AI ChatModel.stream() 替代 DashScope Generation evidence-driven 已解决
Q3 验收 VECTOR_DIM 是否需要动态化 user-interview 已解决
Q4 边界 VectorEmbeddingService 批量向量化:EmbeddingModel 支持批量调用 evidence-driven 已解决

Evidence-driven

结论 证据来源 是否已汇报用户
ReactAgent.builder().model() 接受 ChatModel 接口 javap 反编译 已汇报
ChatModel 应通过 Spring Boot 自动注入 DashScope starter 自动注册 ChatModel Bean 已汇报
RagService 可用 ChatModel.stream() 替代 Generation Spring AI 接口有 stream(Prompt) 返回 Flux 已汇报
EmbeddingModel 支持批量调用 EmbeddingModel.call(EmbeddingRequest) 接受多条文本 已汇报

User-interview

问题原文 用户原话 确认状态 OpenSpec 回写
VECTOR_DIM 怎么处理? "配置文件动态化" 已确认 已回写 proposal

关键取舍

  • 决策:本次只解耦不替换实现
    • 原因:先验证抽象层正确再换模型
    • 影响:代码改动不改变运行行为
    • 风险接受:用户同意先只做解耦
  • 决策:VECTOR_DIM 从配置文件读取
    • 原因:换模型时改 yml 即可
    • 影响:MilvusConstants.VECTOR_DIM 改为从 MilvusProperties 读取

架构审计

  • 风险1:RagService 流式适配 — DashScope Generation 和 Spring AI ChatModel.stream() 返回结构不同,需验证 thinking/content 分离逻辑
  • 风险2:DashScopeConfig 通用性 — 硬编码 dashscope 配置键,换模型后需改为通用键
  • 风险3:ChatModel Bean 冲突 — 多 starter 并存时需 @Primary 或条件注解
  • 低风险/无风险:VectorEmbeddingService、MilvusClientFactory 直接替换无问题