模型抽象层
ChatModel / EmbeddingModel 接口设计及实现
ChatModel — 对话模型核心接口
1 2 3 4 5 6 7 8 9 10
| package org.springframework.ai.model;
public interface ChatModel extends Model {
ChatResponse call(ChatRequest request);
Flux<ChatResponse> stream(ChatRequest request); }
|
Request / Response 结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class ChatRequest { List<Message> messages; ChatOptions options; String model; }
public class ChatResponse { String id; String model; List<Choice> choices; Usage usage; }
|
Message 类型
1 2 3 4 5 6 7 8 9 10 11
| public interface Message { String getContent(); Role getRole(); }
public enum Role { SYSTEM, USER, ASSISTANT, FUNCTION }
|
EmbeddingModel — 向量化模型接口
1 2 3 4 5 6 7
| public interface EmbeddingModel {
EmbeddingResponse embed(Request<EmbeddingOptions> request);
int dimensions(); }
|
使用场景:RAG 的文档向量化存储、相似度搜索。
1 2 3 4
| @Autowired private EmbeddingModel embeddingModel;
float[] vector = embeddingModel.embed("Spring AI 是什么");
|
主流实现
| 实现类 | 模型 |
|---|
OpenAiChatModel | GPT-4o / GPT-4o-mini |
AzureOpenAiChatModel | Azure OpenAI |
AnthropicChatModel | Claude 3/4 |
OllamaChatModel | Llama / Qwen 本地模型 |
BambuChatModel | 阿里云通义 |