Spring AI
Spring AI简介
Spring AI官方文档
Spring AI 是一个面向人工智能工程的应用框架,它类似于一个客户端,可以实现向不同厂商对应的AI模型服务发送请求获取响应
SpringAI目前能够支持的AI模型

Spring AI实践
Open ai Api Key第三方平台
在该平台上注册可以免费获取一定的使用额度

参考SpringAI openAI官方文档,快速搭建一个应用
引入pom依赖
1 2 3 4
| dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency>
|
进行相关配置
1 2 3 4 5 6 7 8
| spring.ai.openai.base-url=https://api.xty.app
spring.ai.openai.api-key=sk-yJ86bNiRwQJVyczO122aF307B7554905A0F53eF6B3B27132
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.ai.openai.chat.options.temperature=0.7
|
编写一个简单controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @RestController public class ChatController {
private final OpenAiChatClient chatClient;
@Autowired public ChatController(OpenAiChatClient chatClient) { this.chatClient = chatClient; } @GetMapping("/ai/generate") public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { return Map.of("generation", chatClient.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 chatClient.stream(prompt); } }
|
测试
构造请求:http://localhost:8080/ai/generate?message=%E5%AD%A6%E4%B9%A0Java%E8%B7%AF%E7%BA%BF
得到的响应:

其他应用
调用openAI相关模型生成图片
官方文档参考
相关配置
1 2 3 4
| spring.ai.openai.image.enabled=true
spring.ai.openai.image.options.model=dall-e-3
|
controller代码
1 2 3 4 5 6 7 8 9 10 11
| @Autowired OpenAiImageClient openAiImageClient; @GetMapping("/ai/image") public String generateImage(String prompt){ ImageResponse response = openAiImageClient.call(new ImagePrompt(prompt)); return response.getResult().getOutput().getUrl(); }
|
测试
构造请求:http://localhost:8080/ai/image?prompt=一个女孩坐在苹果树下
响应结果:

在浏览器直接输入上述url即可显示下图

扩展
AnythingLLM:基于RAG方案构专属私有知识库(开源|高效|可定制)
我们可以使用AnythingLLM 配合 Ollama 构建自己的知识库,可以通过给本地模型喂入一些文本文档,使其具有一些特殊领域的知识
比如:我们选择本地Ollama模型,直接提问得到的结果如下

我们给其上传一个文本txt文件,文本内容如下:
然后上传该文本文件,喂入模型

再次提问:

也可以直接给一个网页链接,其可以自动爬取网页内容训练模型
比如我们给其输入网页:https://eic.hust.edu.cn/info/1195/7541.htm

喂入数据模型之前提问结果:

喂入数据之后模型提问结果:
