
从零开始掌握Reddit获取API密钥与数据分析
Spring AI 是一个受 Python 项目 LangChain 和 LlamaIndex 启发的工具,它致力于解决 AI 集成中的复杂问题。这个工具旨在简化开发流程,将企业数据和 API 更轻松地与 AI 模型连接。通过 Spring AI,开发者可以将它视为一个适配器或高层封装,使得不同 AI 模型的集成变得更为简单高效。
Spring AI 提供了统一的 API 接口,这使得调用不同 AI 模型变得异常简单。无论是 OpenAI、Hugging Face 还是 DeepSeek 和 Gemini,开发者都可以通过学习 Spring AI 的 API 进行无缝对接。这样的设计减少了对底层实现和差异的深入了解,从而降低了学习曲线。
通过自动化配置管理,Spring AI 让开发人员只需在配置文件中定义必要的参数,例如 API 密钥和模型参数。Spring AI 会自动完成初始化和连接,避免了复杂的手动配置过程。这种自动化能力极大地提高了开发效率和代码的可维护性。
Spring AI 的抽象设计使得更换 AI 提供商时,开发者只需修改少量的配置,而不必对业务代码进行大幅度更改。这样的灵活性对于需要根据不同场景需求快速切换 AI 服务的企业尤为重要。
本文将介绍如何通过两种方式将 DeepSeek 集成到 Spring AI 中,分别是伪装成 OpenAI 和本地化部署。
DeepSeek 提供了 OpenAI 兼容模式,允许用户在请求头中添加 api_key
来伪装成 OpenAI 用户。Spring AI 的 openai starter 本质上是通过 RestTemplate 发起请求,我们只需修改 URL 和认证方式即可。
在项目的 pom.xml
文件中添加以下依赖:
org.springframework.ai
spring-ai-openai-spring-boot-starter
0.8.1
在 application.yml
中设置 DeepSeek 的 OpenAI 式端点和 API 密钥:
spring:
ai:
openai:
base-url: https://api.deepseek.com/v1
api-key: sk-your-deepseek-key-here
chat.options:
model: deepseek-chat
在代码中通过 ChatClient 调用 DeepSeek 的 API:
@RestController
@RequestMapping("/ai")
@Slf4j
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
@GetMapping("/chat")
public String generate(@RequestParam(value = "message") String message) {
log.info("Generating response");
return chatClient.prompt(message).call().content();
}
}
通过在 Prompt
调用中添加请求选项,可以覆盖默认配置,例如设置模型和温度:
ChatResponse response = chatModel.call(
new Prompt(
"Generate the names of 5 famous pirates.",
OpenAiChatOptions.builder()
.withModel("deepseek-chat")
.withTemperature(0.4)
.build()
));
如果想在本地或内网服务器上部署 DeepSeek,可以采用 Ollama 平台。
从官方网站下载并安装 Ollama:https://ollama.com
通过 Ollama 下载 DeepSeek 模型:
ollama pull deepseek-r1:1.5b
ollama list deepseek
更多版本可以在 https://ollama.com/library/deepseek-r1 查看。
在项目的 pom.xml
文件中添加以下依赖:
org.springframework.ai
spring-ai-ollama-spring-boot-starter
0.8.1
在 application.yml
中设置本地模型名称对应的配置:
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: deepseek-r1:1.5b
@RestController
@RequestMapping("/ai")
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder chatClient) {
this.chatClient = chatClient.build();
}
@GetMapping("/chat")
public ResponseEntity<Flux> chat(@RequestParam(value = "message") String message) {
try {
Flux response = chatClient.prompt(message).stream().content();
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.badRequest().build();
}
}
}
通过 Spring AI 集成 DeepSeek,无论是伪装成 OpenAI 还是通过 Ollama 本地部署,都是非常简单且灵活的选择。Spring AI 的设计使得企业可以在不同的 AI 服务之间轻松切换,从而提升了系统的适应性和扩展性。
问:Spring AI 如何简化 AI 模型集成?
问:DeepSeek 的 OpenAI 兼容模式有什么优势?
问:如何在本地部署 DeepSeek 模型?
问:Spring AI 的抽象设计如何帮助企业?
问:如何确保 API 密钥的安全性?