Java简化AI服务集成的利器SpringAI 入门使用实战教程
Spring AI是一个基于Spring框架的AI服务集成工具,它简化了与外部AI平台(如OpenAI、Ollama等)的集成过程。通过Spring AI,我们可以轻松地与不同的AI模型进行交互,并将其功能集成到Spring Boot应用中。
1. 项目基础配置
1.1 创建Spring Boot项目
首先,我们需要创建一个Spring Boot项目,建议使用Spring Initializr(https://start.spring.io)生成项目。在项目中,选择以下依赖:
- Spring Web:用于构建Web服务。
- Spring Boot DevTools:便于开发过程中自动重启。
- Spring AI:集成Spring AI模块,简化与AI平台的交互。
然后,生成项目并导入到IDE中。
1.2 添加Spring AI依赖
在pom.xml
中,添加Spring AI依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter</artifactId>
<version>最新版本</version>
</dependency>
请根据Spring AI的最新版本更新版本号。有关版本的最新信息,请参考Spring AI官方文档。
1.3 配置OpenAI API
在application.yml
或application.properties
文件中,配置OpenAI API密钥。以下是application.yml
的配置示例:
spring:
ai:
openai:
api-key: "你的OpenAI API密钥"
1.4 配置Ollama API
如果你还需要接入Ollama,除了OpenAI配置外,可以在application.yml
中添加Ollama的配置:
spring:
ai:
ollama:
api-key: "你的Ollama API密钥"
2. 使用OpenAI服务
2.1 创建OpenAI客户端
Spring AI为与OpenAI进行交互提供了便捷的API。你只需注入OpenAIService
并调用相关方法即可。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.ai.openai.OpenAIService;
@RestController
public class OpenAIController {
@Autowired
private OpenAIService openAIService; // 注入OpenAIService
@GetMapping("/openai/chat")
public String chatWithOpenAI(@RequestParam String prompt) {
// 调用OpenAI API生成回应
String response = openAIService.chatCompletion(prompt);
return response; // 返回生成的回复
}
}
中文注释说明:
OpenAIService
:Spring AI提供的服务,用于与OpenAI模型进行交互。它封装了与OpenAI的API调用,简化了请求的处理过程。chatCompletion(prompt)
:该方法发送一个聊天请求,传递用户输入的提示,返回OpenAI生成的回复。
2.2 OpenAI返回示例
调用上述接口时,访问http://localhost:8080/openai/chat?prompt=你好
,你会收到类似的响应:
{
"choices": [
{
"text": "你好!有什么我可以帮你的吗?"
}
]
}
Spring AI自动处理了与OpenAI的通信和API响应,你只需要关注请求和响应的格式。
3. 使用Ollama服务
3.1 创建Ollama客户端
与OpenAI类似,Spring AI也提供了与Ollama模型交互的功能。我们只需注入OllamaService
并调用相关方法。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.ai.ollama.OllamaService;
@RestController
public class OllamaController {
@Autowired
private OllamaService ollamaService; // 注入OllamaService
@GetMapping("/ollama/chat")
public String chatWithOllama(@RequestParam String prompt) {
// 调用Ollama API生成回应
String response = ollamaService.chatCompletion(prompt);
return response; // 返回生成的回复
}
}
中文注释说明:
OllamaService
:Spring AI封装的服务,用于与Ollama进行交互。它简化了与Ollama的请求和响应处理。chatCompletion(prompt)
:该方法发送用户输入的提示请求,并返回Ollama生成的回复。
3.2 Ollama返回示例
通过访问http://localhost:8080/ollama/chat?prompt=你好
,你将收到类似以下的响应:
{
"choices": [
{
"text": "你好!有什么我可以帮你解答的问题吗?"
}
]
}
4. 进阶使用:企业级集成
在企业级应用中,可能需要更复杂的配置,比如同时使用多个AI模型、动态选择服务、管理API密钥等。Spring AI提供了灵活的配置和扩展能力,下面我们来看一些进阶的使用示例。
4.1 配置多个AI服务
假设你需要同时接入多个AI服务(例如,OpenAI和Ollama),可以在application.yml
中配置多个AI服务:
spring:
ai:
openai:
api-key: "你的OpenAI API密钥"
ollama:
api-key: "你的Ollama API密钥"
Spring会自动加载配置并将相应的服务注入到应用中。
4.2 动态选择AI服务
有时你可能需要根据不同的业务需求动态选择使用OpenAI或Ollama。例如,用户可以选择自己想要的模型或AI提供者。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.ai.openai.OpenAIService;
import org.springframework.ai.ollama.OllamaService;
@RestController
public class DynamicAIController {
@Autowired
@Qualifier("openAIService") // 注入OpenAIService
private OpenAIService openAIService;
@Autowired
@Qualifier("ollamaService") // 注入OllamaService
private OllamaService ollamaService;
@GetMapping("/dynamic-chat")
public String chat(@RequestParam String prompt, @RequestParam String serviceType) {
if ("openai".equalsIgnoreCase(serviceType)) {
return openAIService.chatCompletion(prompt); // 使用OpenAI服务
} else if ("ollama".equalsIgnoreCase(serviceType)) {
return ollamaService.chatCompletion(prompt); // 使用Ollama服务
} else {
return "请选择有效的服务类型:openai 或 ollama";
}
}
}
中文注释说明:
@Qualifier("openAIService")
:通过@Qualifier
注解指定注入的具体服务,这样你可以选择性地注入不同的AI服务。chat(prompt, serviceType)
:根据serviceType
参数动态选择使用的AI服务。用户可以指定openai
或ollama
。
4.3 配置文件分离与管理
在生产环境中,通常会将API密钥和敏感信息存储在安全的位置,比如环境变量、Spring Cloud Config等。你可以在application.yml
中通过占位符来动态加载密钥:
spring:
ai:
openai:
api-key: "${OPENAI_API_KEY}"
ollama:
api-key: "${OLLAMA_API_KEY}"
在运行时,Spring会自动从环境变量中加载OPENAI_API_KEY
和OLLAMA_API_KEY
。
5. 高级功能:日志、监控与优化
5.1 日志和监控
在企业级应用中,监控和日志记录是至关重要的。Spring Boot与Spring AI一起,可以通过Spring Boot Actuator来监控API的使用情况。你可以使用Spring Boot的默认日志机制来记录AI模型的调用信息:
logging.level.org.springframework.ai=DEBUG
这将启用Spring AI相关的详细日志,帮助你追踪API的调用和响应。
5.2 性能优化
在高并发场景下,API调用可能会遇到性能瓶颈。可以通过以下方式进行优化:
- 使用异步调用(例如,
@Async
注解)处理AI请求,避免阻塞主线程。 - 对常用的AI请求结果进行缓存,减少重复请求,提高效率。
通过Spring AI,我们可以简洁地集成多种AI服务(如OpenAI和Ollama),并使用Spring的强大功能进行灵活配置和扩展。无论是简单的聊天机器人,还是复杂的企业级AI集成,Spring AI都能提供高效的支持。
本教程介绍了Spring AI的基础使用方法,包括如何接入OpenAI和Ollama服务。你可以根据实际需求进一步扩展和优化应用,充分发挥Spring框架的优势。
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/dev/java-spring-ai-demo.html
转载时须注明出处及本声明