1.6 KiB
1.6 KiB
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 更灵活