所有文章 > 日积月累 > Janitor AI 接入 DeepSeek:实现智能化集成的最佳实践
Janitor AI 接入 DeepSeek:实现智能化集成的最佳实践

Janitor AI 接入 DeepSeek:实现智能化集成的最佳实践

Spring AI 的概述

Spring AI 是一个受 Python 项目 LangChain 和 LlamaIndex 启发的工具,它致力于解决 AI 集成中的复杂问题。这个工具旨在简化开发流程,将企业数据和 API 更轻松地与 AI 模型连接。通过 Spring AI,开发者可以将它视为一个适配器或高层封装,使得不同 AI 模型的集成变得更为简单高效。

统一 API 接口

Spring AI 提供了统一的 API 接口,这使得调用不同 AI 模型变得异常简单。无论是 OpenAI、Hugging Face 还是 DeepSeek 和 Gemini,开发者都可以通过学习 Spring AI 的 API 进行无缝对接。这样的设计减少了对底层实现和差异的深入了解,从而降低了学习曲线。

自动化配置管理

通过自动化配置管理,Spring AI 让开发人员只需在配置文件中定义必要的参数,例如 API 密钥和模型参数。Spring AI 会自动完成初始化和连接,避免了复杂的手动配置过程。这种自动化能力极大地提高了开发效率和代码的可维护性。

灵活的服务切换

Spring AI 的抽象设计使得更换 AI 提供商时,开发者只需修改少量的配置,而不必对业务代码进行大幅度更改。这样的灵活性对于需要根据不同场景需求快速切换 AI 服务的企业尤为重要。

Spring AI 集成 DeepSeek 的两种方式

本文将介绍如何通过两种方式将 DeepSeek 集成到 Spring AI 中,分别是伪装成 OpenAI 和本地化部署。

伪装成 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

调用 API

在代码中通过 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

如果想在本地或内网服务器上部署 DeepSeek,可以采用 Ollama 平台。

安装 Ollama

从官方网站下载并安装 Ollama:https://ollama.com

拉取 DeepSeek 模型

通过 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 服务之间轻松切换,从而提升了系统的适应性和扩展性。

FAQ

  1. 问:Spring AI 如何简化 AI 模型集成?

    • 答:Spring AI 提供统一的 API 接口和自动化配置管理,降低了集成复杂性,使得开发者可以快速对接多种 AI 模型。
  2. 问:DeepSeek 的 OpenAI 兼容模式有什么优势?

    • 答:通过 OpenAI 兼容模式,用户可以使用现有的 OpenAI 结构与 DeepSeek 进行集成,无需大幅修改代码。
  3. 问:如何在本地部署 DeepSeek 模型?

    • 答:通过 Ollama 平台,可以轻松地在本地下载和运行 DeepSeek 模型,适合内网或单机部署需求。
  4. 问:Spring AI 的抽象设计如何帮助企业?

    • 答:Spring AI 的抽象设计允许企业轻松切换 AI 提供商,只需修改配置文件,无需修改业务逻辑代码。
  5. 问:如何确保 API 密钥的安全性?

    • 答:API 密钥应妥善保管,避免在公共代码库中暴露,并建议定期更新以防止安全风险。
#你可能也喜欢这些API文章!