1.4 KiB
1.4 KiB
ChatModel + Embedding 解耦 Specs
可观察行为规格
S1: Chat 接口不变
/api/chat,/api/chat_stream,/api/ai_ops的 HTTP 入参/出参/响应结构完全不变- 功能行为不变:工具调用、Agent 协作、SSE 流式推送照旧工作
S2: 模型切换只需改配置
- 替换 DashScope starter 为 OpenAI starter + 改 yml 配置 → ChatModel 自动注入不同实现
- 替换 embedding 模型只需改 yml 的
dashscope.embedding.model和milvus.vector-dim - 不需要改任何 Java 代码
S3: VECTOR_DIM 从配置读取
MilvusClientFactory.createBizCollection()使用 MilvusProperties.getVectorDim() 而非 MilvusConstants.VECTOR_DIM- 切换 embedding 模型后改 yml 的
milvus.vector-dim即可适配新维度
S4: VectorEmbeddingService 行为不变
- generateEmbedding/generateEmbeddings/generateQueryVector 的签名和返回类型不变
- 内部实现从 DashScope SDK 切换到 Spring AI EmbeddingModel
S5: RagService 流式对话行为不变
- queryStream 方法签名和 StreamCallback 接口不变
- 内部实现从 DashScope Generation 切换到 Spring AI ChatModel.stream()
S6: 混合厂商路由支持(yml 驱动)
model-routing.chat/model-routing.embedding声明启用哪个模型- ModelRoutingConfig 按关键字匹配 Bean:Bean 名优先 → 类名兜底 → 回退第一个
- 切换示例:
chat: deepseek→chat: openai,只改 yml - Service 代码零改动