Files
SuperBizAgent-java/devflow/projects/2026-05-29-chatmodel-abstraction/evidence.md
T
2026-05-31 21:45:14 +08:00

1.6 KiB
Raw Blame History

Evidence

Evidence-driven 结论

结论 证据来源 验证方式
ReactAgent.builder().model() 接受 ChatModel 接口 javap 反编译 Agent Framework 静态验证
ChatModel 应通过 Spring Boot 自动注入 DashScope/DeepSeek/OpenAI starter 均自动注册 Bean 脚本验证:ChatAndEmbeddingSmokeTest
RagService 可用 ChatModel.stream() 替代 Generation Spring AI stream(Prompt) 返回 Flux<ChatResponse> 代码审查
EmbeddingModel 支持批量调用 EmbeddingModel.embed(List<String>) 返回 List<float[]> 脚本验证:FullPipelineSmokeTest#embeddingBatchWorks
DeepSeekChatModel 兼容 DeepSeek V4 Flash Spring AI 1.1.7 原生 spring-ai-starter-model-deepseek 脚本验证:FullPipelineSmokeTest#chatDeepSeekWorks
BGE-M3 via SiliconFlow 返回 1024 维向量 OpenAiEmbeddingModel.embed() → 1024-dim float[] 脚本验证:FullPipelineSmokeTest#embeddingBgeM3Works
OpenAiChatModel 不兼容 DeepSeek V4 curl 200, Spring AI 400 Model does not exist 实验对比:curl vs Java, 3 次重试均失败

技术决策依据

  • 用原生 DeepSeek starter 而非 OpenAI 兼容模式:Spring AI 1.1.0 OpenAiChatModel 的请求体含 DeepSeek V4 不识别的字段,原生 DeepSeekChatModel 直接适配
  • SiliconFlow Embedding 独立配置:Chat 和 Embedding 不同厂商、不同 base-url,Spring AI auto-config 不支持单前缀拆两地址,需手动 OpenAiApi
  • yml 驱动路由:model-routing.chat/embedding 关键字 → Bean 名/类名匹配 → @Primary,比硬编码 @Qualifier 更灵活