当前位置:   article > 正文

(详解!)五分钟搞定SpringAi 快速引入Chartgpt,让你少走坑!!!快速体验!!!_spring ai接入chat gpt

spring ai接入chat gpt

目录

1.创建项目:

2.依赖配置

3.编码环节

配置文件

编码环节

4.项目效果演示


1.创建项目:

    打开我们心爱的IDEA, 简单创建一个SpringBoot工程,JDK必须17版本以上别拿你的1.8版本来哈!)这里我们就选择17版本,使用Maven进行依赖管理

Spring Boot 3版本都可以,然后这里依赖项我们只选择Spring Web 跟Lombok就可以,不选也可以,下面我会提供Maven全面依赖文件,你只需CV到你的POM文件就可以了

清理一下用不到的文件,开始进行依赖配置

2.依赖配置

  1. <dependency>
  2. <groupId>org.springframework.ai</groupId>
  3. <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  4. <version>0.8.1</version>
  5. </dependency>

配置Spring 仓库

仓库是一定要配置着的,它这个AI去那个仓库去找,整个依赖去哪里找。

  1. <repositories>
  2. <repository>
  3. <id>spring-milestones</id>
  4. <name>Spring Milestones</name>
  5. <url>https://repo.spring.io/milestone</url>
  6. <snapshots>
  7. <enabled>false</enabled>
  8. </snapshots>
  9. </repository>
  10. <repository>
  11. <id>spring-snapshots</id>
  12. <name>Spring Snapshots</name>
  13. <url>https://repo.spring.io/snapshot</url>
  14. <releases>
  15. <enabled>false</enabled>
  16. </releases>
  17. </repository>
  18. </repositories>

   :其次就是我们很多人使用的这个Maven的时候,会把Maven那个默认仓库源改掉我们国内的阿里云,又因为阿里云仓库暂时还没有对应的Spring-ai-openai-spring-boot-starter 依赖,导致我们去拉起依赖的时候会报错,找不到AI这个依赖。所以Maven的仓库源需要使用Maven默认的仓库源,在Maven\conf\setting.xml中进行修改即可

  1. <mirror>
  2. <id>maven-default-http-blocker</id>
  3. <mirrorOf>external:http:*</mirrorOf>
  4. <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  5. <url>http://0.0.0.0/</url>
  6. <blocked>true</blocked>
  7. </mirror>

当然你也可以在官网下一个和你当下不同版本的Maven来使用也是可以的 官网连接https://maven.apache.org/download.cgi 

需要的可以去下载

整体pom.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.2.5</version>
  9. <relativePath/>
  10. </parent>
  11. <groupId>com.abu</groupId>
  12. <artifactId>abu-ai-demo</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>abu-ai-demo</name>
  15. <description>abu-ai-demo</description>
  16. <properties>
  17. <java.version>17</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.projectlombok</groupId>
  26. <artifactId>lombok</artifactId>
  27. <optional>true</optional>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-test</artifactId>
  32. <scope>test</scope>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.ai</groupId>
  36. <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  37. <version>0.8.1</version>
  38. </dependency>
  39. </dependencies>
  40. <build>
  41. <plugins>
  42. <plugin>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-maven-plugin</artifactId>
  45. <configuration>
  46. <excludes>
  47. <exclude>
  48. <groupId>org.projectlombok</groupId>
  49. <artifactId>lombok</artifactId>
  50. </exclude>
  51. </excludes>
  52. </configuration>
  53. </plugin>
  54. </plugins>
  55. </build>
  56. <repositories>
  57. <repository>
  58. <id>spring-milestones</id>
  59. <name>Spring Milestones</name>
  60. <url>https://repo.spring.io/milestone</url>
  61. <snapshots>
  62. <enabled>false</enabled>
  63. </snapshots>
  64. </repository>
  65. <repository>
  66. <id>spring-snapshots</id>
  67. <name>Spring Snapshots</name>
  68. <url>https://repo.spring.io/snapshot</url>
  69. <releases>
  70. <enabled>false</enabled>
  71. </releases>
  72. </repository>
  73. </repositories>
  74. </project>

Mavne 进行刷新,开始编码环节了

3.编码环节

  3.1配置文件

  这里是 .yml 格式文件 ,默认是.properties格式 修改下后缀即可。

  1. server:
  2. port: 8080
  3. spring:
  4. application:
  5. name: springai
  6. ai:
  7. openai:
  8. # openAi的key
  9. api-key: sk-xxxxxxxxxxxxxxxxxx
  10. # 对应的请求地址,如果使用中中转地址国内即可使用不需魔法 如果没有默认官方地址: api.openai.com 需要魔法
  11. base-url: https://api.openai.com
  12. # 使用AI模型 默认3.5 可选gpt-4 gpt-4-32k
  13. chat:
  14. options:
  15. model: gpt-3.5-turbo
  16. #异步调用超时设置
  17. mvc:
  18. async:
  19. request-timeout: -1

 没有openai-key的可以自行淘宝买一个 。需要中转地址的可以评论区666 我会免费提供给你!

3.2编码环节

可以直接官网cv 即可 https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html

点击复制 到我们项目中

2个接口,一个是咱们把消息发过去,那边吧消息编辑好了,在一起返回给我们。第二个是采用流式的风格,把文字一点一点传过来,一会看我们测试效果!!!

  1. package com.example.springai;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.ai.chat.ChatResponse;
  4. import org.springframework.ai.chat.messages.UserMessage;
  5. import org.springframework.ai.chat.prompt.Prompt;
  6. import org.springframework.ai.openai.OpenAiChatClient;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.RequestParam;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import reactor.core.publisher.Flux;
  12. import java.util.Map;
  13. @Slf4j
  14. @RestController
  15. public class ChatController {
  16. private final OpenAiChatClient chatClient;
  17. @Autowired
  18. public ChatController(OpenAiChatClient chatClient) {
  19. this.chatClient = chatClient;
  20. // StringUtils.hasLength()
  21. }
  22. @GetMapping("/ai/generate")
  23. public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
  24. log.info("发送的消息:{}",message);
  25. String result = chatClient.call(message);
  26. log.info("返回来的消息:{}",result);
  27. return Map.of("generation", result);
  28. }
  29. @GetMapping("/ai/generateStream")
  30. public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
  31. log.info("发送的消息:{}",message);
  32. Prompt prompt = new Prompt(new UserMessage(message));
  33. log.info("返回来的消息:{}",prompt);
  34. return chatClient.stream(prompt);
  35. }
  36. }

4.项目效果演示

我们通过Postman 来访问一下 看看效果

 返回的是一个支持Markdown的文本,还是不错的,另外一个流式的我们也试试 看看效果

 

每一个流的详细内容   

就以流的一个形式响应回来,每一个都包含着一个文字,我们可以对这个方法体做解析,一个一个解析出来,如果传到前端,前端也可以以流的形式一点一点吐出来。

以上:就成功把AI集成到我们SpringBoot中了,当然我这里只是简单尝试了一下,一个普通对话,一个流式对话。大家有兴趣可以去Spring 官方

https://spring.io/projects/spring-ai

 参考文档 ,不仅集成了聊天模型,还有文生图模型,语音转文字模型,一系列模型等等。后续有空我也会继续更新一些!!! 编写不易,希望大家可以多多支持!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/684220
推荐阅读
相关标签
  

闽ICP备14008679号