SpringAI——Java生态接入LLM

本文介绍了SpringAI,一个专为人工智能工程设计的Spring生态框架,支持多种AI模型和API,以及Ollama,一个轻量级本地运行大型语言模型的框架。文章详细阐述了两个框架的特点、支持的模型和使用方法,展示了如何结合它们进行实际应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,Spring官网发布了SpringAI,可点此查看https://spring.io/blog/2024/03/12/spring-ai-0-8-1-released,对于SpringAI的介绍,可看官方文档:https://spring.io/projects/spring-ai#overview
本文将使用SpringAI配合Ollama完成SpringAI的体验,下面分别介绍SpringAI和Ollama。

一、Spring AI

Spring AI是一个专为人工智能工程而设计的应用框架。它的目标是将Spring生态系统的设计原则,如可移植性和模块化设计,应用于人工智能领域,并推广使用纯Java对象(POJO)作为AI领域应用程序的构建块。

1.Spring AI的核心特性
  • 跨AI提供商的API支持:Spring AI提供了一套可移植的API,支持与多个AI服务提供商的聊天、文本到图像和嵌入模型进行交云。
  • 同步和流式API选项:框架支持同步和流式API,为开发者提供了灵活的交互方式。
  • 模型特定功能访问:允许开发者通过配置参数访问特定模型的功能,提供了更细致的控制。
2.支持的模型
  • 聊天模型:包括OpenAI、Azure Open AI、Amazon Bedrock、Cohere’s Command、AI21 Labs’ Jurassic-2、Meta’s LLama 2、Amazon’s Titan、Google Vertex AI Palm、Google Gemini、HuggingFace(包括Meta的Llama2等数千种模型)、Ollama(本地运行AI模型)、MistralAI等。
  • 文本到图像模型:如OpenAI的DALL-E、StabilityAI等。
  • 嵌入模型:包括OpenAI、Azure Open AI、Ollama、ONNX、PostgresML、Bedrock Cohere、Bedrock Titan、Google VertexAI、Mistal AI等。
3.向量存储API和向量数据库

Spring AI提供了跨不同提供商的向量存储API,具有类似SQL的元数据过滤API,保持了可移植性。支持的向量数据库包括Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Redis、Weaviate、Qdrant等。

4.函数调用和ETL框架

Spring AI允许开发者声明java.util.Function实

### SpringAI与DeepSeek集成教程 对于希望将SpringAI框架同DeepSeek模型相结合的应用场景而言,虽然官方并没有直接提供名为“SpringAI”的特定产品或库[^1],可以推测提问者可能是指基于Spring生态系统的应用来调用或是部署像DeepSeek这样的大型语言模型。 #### 准备工作 为了实现两者的集成,开发者应当先熟悉Spring Boot的基础开发流程以及RESTful API的设计原则。与此同时,在准备阶段还需要获取到DeepSeek模型的服务端点地址或者是通过Hugging Face平台下载对应的预训练权重文件并搭建本地服务环境。 #### 创建Spring Boot项目 利用Spring Initializr快速创建一个新的Spring Boot工程,确保选中Web依赖项以便能够构建HTTP接口用于后续向DeepSeek发起请求: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` #### 配置访问DeepSeek服务 假设已经拥有了一个可以通过网络访问的DeepSeek实例,则可以在application.properties配置文件里定义该API的位置和其他必要的参数设置: ```properties deepseek.api.url=https://api.example.com/v1/models/deepseek:predict deepseek.api.key=your_api_key_here ``` 接着编写Java类封装对上述属性读取逻辑,并且构造出发送POST请求所需的数据结构体,通常情况下这会涉及到JSON格式的消息体传递给远程服务器处理。 #### 实现业务逻辑控制器 最后一步是在应用程序内部建立相应的Controller层组件负责接收前端传来的输入数据,经过简单校验之后转发至目标LLM执行推理任务;待收到响应后再解析返回结果反馈给客户端展示出来。 ```java @RestController @RequestMapping("/chat") public class ChatController { @Autowired private RestTemplate restTemplate; @Value("${deepseek.api.url}") private String apiUrl; @PostMapping("/ask") public ResponseEntity<String> askQuestion(@RequestBody Map<String, Object> payload){ HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<Map<String,Object>> entity = new HttpEntity<>(payload,headers); try{ ResponseEntity<String> response = restTemplate.postForEntity(apiUrl,entity,String.class); return response; }catch(Exception e){ log.error(e.getMessage()); return new ResponseEntity<>("Error occurred", HttpStatus.INTERNAL_SERVER_ERROR); } } } ``` 以上代码片段展示了如何在一个典型的Spring Web MVC架构下完成从接收入口到最后发出对外部微服务调用的整体链路设计思路。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我姜同学

何其幸运遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值