Spring Boot 整合 Spring AI 实现项目接入ChatGPT(OpenAl的调用,开发属于你自己Al,体验Al的乐趣)本文仅讲解聊天方式的实现,关于gpt的其他东西,参考接下来的文章

Agnoni 2024-07-31 14:31:01 阅读 53

目录

前言

Spring Al与Springboot整合的步骤(本文仅讲解聊天方式的实现,关于gpt的其他东西,参考接下来的文章)

第一步:建项目:创建一个Spring Boot项目(JDK17起步);

第二步:加依赖

2.1 加入spring-ai-openai-spring-boot-starter依赖; 

2.3 配置项目依赖下载的仓库:(因为spring ai在中心仓库还没有依赖,所以需要去网站下载)

 第三步:配文件(这个的api -key就是你自己的,如果没有私信我即可)

第四步: 聊天功能写具体的代码实现

        4.1 因为所有的接口的父接口都继承与Model,可以看到聊天方式的实现就是注入OpenAiChatModel 因为这个springboot自动装配的功能,只需要注入即可

 第一种: 聊天的第一种实现方式(调用call方法,直接传入msg,这个叫做同步API)

   5.1 运行程序结果

 第二种 聊天的程序的第二种实现方式(调用call方法,new一个Prompt对象再传入msg)

  6.1  运行程序结果​编辑

第三种:聊天的程序的第三种实现方式(比上一个方法多了一个关于gpt参数的设置)

7.1 运行程序结果

第四种:聊天的程序的第三种实现方式(调用stream方法,用法和call一样,只不过返回值不一样,Stream返回的是Fiux,叫做数据的序列一序列的数据,一个一个的数据返回,调用Stream叫做流式API)


前言

随着人工智能技术的迅猛发展,越来越多的应用程序开始集成人工智能功能,从而提供更智能、更个性化的体验。诸如ChatGPT等开放性大型语言模型的出现,使得自然语言处理和对话系统的开发变得更加便捷和普及。这些技术已经在社交媒体、客户服务、教育等领域展示出巨大的潜力,对于提升用户体验和提高工作效率起到了关键作用。

Spring Al的官网:Spring | Home

Spring AI提供的API支持跨人工智能提供商的 聊天,文本到图像,和嵌入模型等,同时支持同步和流API选项

开发springAl程序的前期准备准备工作

本机电脑要可以访问OpenAI网站 https://openai.com/;要有OpenAI的API Key;(注册账号或者购买,如果没有可以私信联系我)

Spring Al与Springboot整合的步骤(本文仅讲解聊天方式的实现,关于gpt的其他东西,参考接下来的文章)

第一步:建项目:创建一个Spring Boot项目(JDK17起步);

第二步:加依赖

2.1 加入spring-ai-openai-spring-boot-starter依赖; 

<code><dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-openai-spring-boot-starter</artifactId>

</dependency>

2.2 继承父项目:

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.ai</groupId>

<artifactId>spring-ai-bom</artifactId>

<version>${spring-ai.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

2.3 配置项目依赖下载的仓库:(因为spring ai在中心仓库还没有依赖,所以需要去网站下载)

<repositories>

<repository>

<id>spring-milestones</id>

<name>Spring Milestones</name>

<url>https://repo.spring.io/milestone</url>

<snapshots>

<enabled>false</enabled>

</snapshots>

</repository>

</repositories>

 第三步:配文件(这个的api -key就是你自己的,如果没有私信我即可)

spring:

ai:

openai:

api-key: (换成你的api-key)

base-url: https://api.openai.com(分为代理地址和直连地址)

第四步: 聊天功能写具体的代码实现

        4.1 因为所有的接口的父接口都继承与Model,可以看到聊天方式的实现就是注入OpenAiChatModel 因为这个springboot自动装配的功能,只需要注入即可

 第一种: 聊天的第一种实现方式(调用call方法,直接传入msg,这个叫做同步API)

public class ChatController {

/**

* 自动注入的

*/

@Resource

private OpenAiChatModel openAiChatModel;

/**

* 聊天的方法。底层调用的openAi的方法

* RequestParam 接受参数

* msg 就是我们提的问题

* @return

*/

@RequestMapping("/ai/chat")

public String chat(@RequestParam("msg") String msg){

String called = openAiChatModel.call(msg);

return called;

}

   5.1 运行程序结果

 第二种 聊天的程序的第二种实现方式(调用call方法,new一个Prompt对象再传入msg)

<code>/**

* 聊天的方法。底层调用的openAi的方法

* RequestParam 接受参数

* msg 就是我们提的问题

* ChatResponse 返回的是一个josn串

* chatResponse.getResult().getOutput().getContent();只获取文本

* @return

*/

@RequestMapping("/ai/chat2")

public Object chat2(@RequestParam("msg") String msg){

ChatResponse chatResponse = openAiChatModel.call(new Prompt(msg));

return chatResponse.getResult().getOutput().getContent();

}

  6.1  运行程序结果

第三种:聊天的程序的第三种实现方式(比上一个方法多了一个关于gpt参数的设置)

<code>/**

*OpenAiChatOptions.builder() 传入的一个参数,可以控制大模型的设置

* @param msg

* @return

*/

@RequestMapping("/ai/chat3")

public Object chat3(@RequestParam("msg") String msg){

ChatResponse chatResponse = openAiChatModel.call(new Prompt(msg, OpenAiChatOptions.builder()

//.withModel("gpt-4-32k") //gpt的版本 ,32K是参数,参数越高,回答问题越准确

.withTemperature(0.4F) //温度值,温度越高,回答的准确率越低,温度越低,回答的准确率越高

.build()));

return chatResponse.getResult().getOutput().getContent();

}

7.1 运行程序结果

当然上述的可选参数不仅可以在代码中配置,也可以在配置文件中配置

注意:如果代码中写了关于gpt的参数,配置文件中也配置了参数,那么以代码中为主

第四种:聊天的程序的第三种实现方式(调用stream方法,用法和call一样,只不过返回值不一样,Stream返回的是Fiux,叫做数据的序列一序列的数据,一个一个的数据返回,调用Stream叫做流式API)

<code>/**

*OpenAiChatOptions.builder() gpt的可选参数

* @param msg

* @return

*/

@RequestMapping("/ai/chat4")

public Object chat4(@RequestParam("msg") String msg){

Flux<ChatResponse> flux = openAiChatModel.stream(new Prompt(msg, OpenAiChatOptions.builder()

//.withModel("gpt-4-32k") //gpt的版本 ,32K是参数,参数越高,回答问题越准确

.withTemperature(0.4F) //温度值,温度越高,回答的准确率越低,温度越低,回答的准确率越高

.build()));

return flux.collectList();

}

上述就是关于Spring Boot 整合 Spring AI 实现项目接入ChatGPT,本文仅介绍了关于聊天方面的实现方式,接下来的文章介绍关于如何生成图片以及语言的转换。

源码地址:code-ai: 关于spring ai的各个练习

有任何问题可以私信我,以及欢迎大家加入下面的群聊来探讨。以及关于没有open ai的key 的也可以私信我

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。