您的位置:首页 > 房产 > 建筑 > Java程序员的AI框架,它带着Spring走来啦

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

2024/12/22 13:22:56 来源:https://blog.csdn.net/qq_37382917/article/details/138329257  浏览:    关键词: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 {@Resourceprivate 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 {@Resourceprivate StreamingChatClient streamingChatClient;@GetMapping(value = "/openai/stream")public Flux<String> stream(String message){// 将流中的内容按顺序返回return streamingChatClient.stream(message).flatMapSequential(Flux::just);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com