跳到主要内容
📖 本章预览

本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。

第3章 一套代码接入所有主流大模型

3.1 ChatModel 统一抽象接口

3.1.1 接口设计

Spring AI 的核心设计哲学是"面向接口编程"。所有模型提供商都实现同一个 ChatModel 接口,业务代码只依赖接口,不依赖具体实现。

ChatModel(接口)
├── DashScopeChatModel // 通义千问
├── OpenAiChatModel // OpenAI
├── OllamaChatModel // Ollama 本地模型
├── MoonshotChatModel // Moonshot
└── ... // 其他厂商

核心方法:

public interface ChatModel {

/** 最简调用:传入字符串,返回字符串 */
String call(String message);

/** 完整调用:传入 Prompt(消息列表+参数),返回 ChatResponse */
ChatResponse call(Prompt prompt);
}

public interface StreamingChatModel {

/** 流式调用:返回 Flux,实时推送生成内容 */
Flux<ChatResponse> stream(Prompt prompt);
}

3.1.2 为什么这样设计

// 业务代码只依赖 ChatModel 接口
@Service
public class TranslationService {

private final ChatModel chatModel; // 不关心是哪个模型

public TranslationService(ChatModel chatModel) {
this.chatModel = chatModel;
}

public String translate(String text, String targetLanguage) {
SystemMessage system = new SystemMessage(
"你是一个专业翻译,将用户输入翻译为" + targetLanguage
);
UserMessage user = new UserMessage(text);
return chatModel.call(new Prompt(List.of(system, user)))
.getResult().getOutput().getText();
}
}

// 切换模型只需改 pom.xml 依赖和 application.yml 配置
// TranslationService 的代码一个字都不用改

3.2 多模型提供商接入实战

3.2.1 阿里云通义千问(DashScope)

<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
<version>1.0.0</version>
</dependency>
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-plus # 可选:qwen-turbo, qwen-max, qwen-long
temperature: 0.7
max-tokens: 2048
top-p: 0.8
// 通义千问特有参数
@GetMapping("/dashscope")
public String dashScopeChat(@RequestParam String question) {
Prompt prompt = new Prompt(
new UserMessage(question),
DashScopeChatOptions.builder()
.withModel("qwen-max") // 使用最强模型
.withTemperature(0.3)
.withEnableSearch(true) // 开启联网搜索(通义千问特有)


🔒 解锁完整内容

本章剩余内容需要解锁后查看

以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。

加入知识星球你将获得:

  • ✅ 全部 26 章完整内容 + 持续更新
  • ✅ 配套源码 + 实战项目
  • ✅ 一对一答疑 + 面试辅导
  • ✅ 简历优化 + 内推机会

📚 本章完整目录

以下为本章完整目录结构,加入知识星球即可解锁全部内容。

3.2.2 OpenAI / Azure OpenAI

3.2.3 Ollama 本地部署

3.2.4 DeepSeek

3.3 模型参数调优

3.3.1 不同场景的参数推荐

3.4 多模型切换与 Fallback 策略

3.4.1 基于配置的模型切换

3.4.2 Fallback 降级策略