spring-ai快速集成deepseek大模型

一、Spring AI简介:Spring AI致力于简化AI项目的开发与部署流程,使Java开发者能够更高效地将AI技术集成到业务系统中。它提供了开箱即用的工具和接口,方便集成和管理各种AI模型。


目前,Spring AI 支持的 AI 平台包括:OpenAI (ChatGPT)、Azure OpenAI、Hugging Face、Google、DeepSeek等。


在最新的Spring AI 版本中,DeepSeek 大模型被正式加入进来,我可以用 Spring AI 直接访问 DeepSeek 的大模型服务。

二、完整代码如下

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.8</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>spring.ai.deepseek.example</groupId>
	<artifactId>spring-ai-deepseek-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-ai-deepseek-demo</name>
	<description>Spring AI , getting started example, using Open AI</description>
	<url/>
	<licenses>
		<license/>
	</licenses>
	<developers>
		<developer/>
	</developers>
	<scm>
		<connection/>
		<developerConnection/>
		<tag/>
		<url/>
	</scm>
	<properties>
		<java.version>17</java.version>
		<spring-ai.version>1.0.0-M5</spring-ai.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>${spring-ai.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

application.properties配置文件:

server.port=8899
spring.application.name=spring-ai-deepseek-demo
 
spring.ai.openai.api-key=<DEEPSEEK_API_KEY>
spring.ai.openai.base-url=https://api.deepseek.com
spring.ai.openai.chat.options.model=deepseek-chat
spring.ai.openai.chat.options.temperature=0.7

# The DeepSeek API doesn't support embeddings, so we need to disable it.
spring.ai.openai.embedding.enabled=false

启动类:

@SpringBootApplication
public class SpringAiDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringAiDemoApplication.class, args);
	}
	
	/*@Bean
	public CommandLineRunner runner(ChatClient.Builder builder) {
	    return args -> {
	        ChatClient chatClient = builder.build();
	        String response = chatClient.prompt("Tell me a joke").call().content();							
	        System.out.println(response);
	    };
	}*/	
	
}

Controller类:

@RestController
public class ChatDeepSeekController {

    private final OpenAiChatModel chatModel;

    @Autowired
    public ChatDeepSeekController(OpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", this.chatModel.call(message));
    }

    @GetMapping("/ai/generateStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }
}

访问地址:http://127.0.0.1:8899/ai/generate?message=Tell me a joke

三、参考文档:
https://spring.io/projects/spring-ai
https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html

完整源码项目:完整源码地址

注意事项:

SpingBoot 3.3 需要java17 版本

<think>好的,我现在需要帮助用户解决如何使用spring-ai-ollama-spring-boot-starter调用DeepSeek模型的问题。首先,我得先理解用户的问题。用户提到了Spring Boot应用,以及相关的starter库,可能对Spring AI和Ollama集成有一定了解,但需要具体的配置步骤。 首先,我需要确认用户是否正确引用了相关的依赖。根据用户提供的引用,他们提到了LangChain4j和Spring Boot的集成,但用户现在问的是spring-ai-ollama-spring-boot-starter和DeepSeek模型。可能需要检查是否这两个库兼容,或者是否有其他配置步骤。 接下来,我需要回忆Spring AI和Ollama的关系。Ollama是一个用于本地运行大型语言模型的工具,而Spring AI的Ollama starter可能提供了与Ollama服务交互的便捷方式。而DeepSeek模型可能需要通过Ollama来加载,或者需要特定的模型名称。例如,Ollama支持许多模型,用户可能需要先在本地Ollama中下载或配置DeepSeek模型。 然后,配置方面,用户需要在application.properties或application.yml中设置Ollama的基础URL,比如默认是http://localhost:11434,以及模型名称,这里应该是DeepSeek对应的模型名,例如"deepseek-chat"。用户需要确认他们的Ollama实例是否已经正确安装并运行,并且已经拉取了DeepSeek的模型文件。 另外,用户可能需要编写一个服务类,使用@AiClient注解来创建客户端,并通过@SystemMessage设置系统提示。这里可能需要参考引用中的例子,比如引用[1]提到使用AI Services,引用[3]提到注入Bean。因此,用户需要创建一个接口,定义生成方法,然后注入到控制器或其他组件中使用。 还有可能遇到的问题,比如模型名称是否正确,Ollama是否支持DeepSeek模型。如果Ollama官方没有提供DeepSeek模型,用户可能需要自行导入或转换模型格式,比如使用Modelfile。这时候可能需要用户先通过Ollama的命令行拉取或创建相应的模型配置。 另外,用户提到的引用中有关于OpenAI的配置,比如设置API key,但这里使用的是本地Ollama,所以不需要API key,但需要确保Ollama服务正在运行。可能用户会混淆不同starter的配置,需要提醒他们检查配置是否正确指向本地Ollama实例。 最后,生成相关问题的时候,需要考虑用户可能的后续疑问,比如配置验证、自定义模型参数、异常处理等,以及如何整合到实际应用中,比如REST API的创建。 总结步骤应该是:添加依赖、配置Ollama连接和模型名称、创建AI服务接口、注入并使用。同时,需要验证Ollama是否正确加载了DeepSeek模型,否则用户会遇到模型找不到的错误。</think>### 使用 `spring-ai-ollama-spring-boot-starter` 调用 DeepSeek 模型的步骤 #### 1. 添加依赖 首先在 `pom.xml` 中引入依赖(需确认版本兼容性): ```xml <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> <version>0.8.1</version> <!-- 根据实际版本调整 --> </dependency> ``` #### 2. 配置 Ollama 服务 确保已安装并启动 Ollama 服务(默认地址为 `http://localhost:11434`),并已通过命令行拉取或配置 DeepSeek 模型: ```bash ollama run deepseek-chat # 假设模型名为 "deepseek-chat" ``` #### 3. 配置 Spring Boot 应用 在 `application.properties` 或 `application.yml` 中添加配置: ```properties spring.ai.ollama.base-url=http://localhost:11434 spring.ai.ollama.chat.options.model=deepseek-chat # 模型名称需与 Ollama 中一致 ``` #### 4. 创建 AI 服务接口 定义接口并注入 AI 客户端: ```java @AiService public interface DeepSeekAIService { @SystemMessage("你是一个由DeepSeek训练的AI助手") String generate(String userMessage); } ``` #### 5. 注入并使用服务 在 Controller 或其他组件中调用: ```java @RestController public class ChatController { @Autowired private DeepSeekAIService deepSeekService; @GetMapping("/chat") public String chat(@RequestParam String message) { return deepSeekService.generate(message); } } ``` #### 关键验证点 1. **Ollama 服务状态**:通过 `curl http://localhost:11434/api/tags` 查看可用模型列表[^3]。 2. **模型名称一致性**:配置的 `spring.ai.ollama.chat.options.model` 需与 Ollama 中的模型名完全匹配。 3. **依赖版本冲突**:需确保 Spring Boot 与 Spring AI 版本兼容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值