Java程序员的AI框架,它带着Spring走来啦

Spring AI旨在简化包含人工智能功能的应用程序的开发,而不会造成不必要的复杂性。

该项目从著名的 Python 项目中汲取灵感,例如 LangChain 和 LlamaIndex,但 Spring AI 并不是这些项目的直接移植。该项目成立的信念是,下一波生成式 AI 应用程序将不仅适用于 Python 开发人员,而且将在许多编程语言中无处不在。

Spring AI 的核心是提供抽象,作为开发 AI 应用程序的基础。这些抽象具有多种实现,只需最少的代码更改即可轻松交换组件。

1.Spring AI 提供以下功能

  1. 支持所有主要的模型提供商,如OpenAI,Microsoft,Amazon,Google和Huggingface。
  2. 支持的模型类型包括聊天和文本到图像,还有更多类型正在开发中。
  3. 跨 AI 提供商的可移植 API,用于聊天和嵌入模型。支持同步和流 API 选项。还支持下拉以访问特定于模型的功能。
  4. 将 AI 模型输出映射到 POJO。
  5. 支持所有主要的矢量数据库提供商,例如 Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate
  6. 跨 Vector Store 提供程序的可移植 API,包括一个类似 SQL 的新颖元数据过滤器 API,该 API 也是可移植的。
  7. Function calling 函数调用
  8. 用于 AI 模型和矢量存储的 Spring Boot 自动配置和启动器。
  9. 用于数据工程的 ETL 框架

2.快速开始

创建一个简单的spring项目,注意这里jdk需要17以上,然后在pom文件中添加依赖

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>

 接下来在application.properties文件中添加配置

spring.ai.openai.api-key=YOUR_API_KEY
spring.ai.openaibase-url=https://api.openai.com

这样一个简单的环境就完成了。 

 3.简单使用

创建一个OpenAiController类,将ChatClient(SpringBoot启动时,会为我们自动注入注入进来,并编写一个简单的接口进行测试:

@RestController
@RequestMapping("/chat")
public class OpenAiController {

    @Resource
    private ChatClient chatClient;

    @GetMapping("/openai/test")
    public Map<String, String> completion(@RequestParam(value = "message") String message) {
        return Map.of("generation", chatClient.call(message));
    }
}

代码chatClient.call(message)中message是我们输入到chartgpt的文本,返回结果即时ChartGPT生成的内容,AI模型默认gpt-3.5-turbo,Spring AI对参数和请求做了封装,简单的一行代码就完成了ChartGPT的对接。

4.流式对话

        流式对话即流式对话传输,只要AI有输出,就进行服务端内容的推送,而不需要等到AI生成完后一起发送,一定程度上能够提高使用上的响应速度,增加对话的体验。

        Spring AI 流式对话接口采用的是Spring WebFlux异步网络框架实现。

@RestController
@RequestMapping("/chat")
public class OpenAiStreamController {

    @Resource
    private StreamingChatClient streamingChatClient;

    @GetMapping(value = "/openai/stream")
    public Flux<String> stream(String message){
        // 将流中的内容按顺序返回
        return streamingChatClient.stream(message).flatMapSequential(Flux::just);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苜蓿花乐园

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值