当前位置:   article > 正文

Spring Boot集成Spring AI实现快速接入openAI

Spring Boot集成Spring AI实现快速接入openAI

1.什么是Spring AI?

Spring AI API 涵盖了广泛的功能。每个主要功能都在其专门的部分中进行了详细介绍。为了提供概述,可以使用以下关键功能:

  • 跨 AI 提供商的可移植 API,用于聊天、文本到图像和嵌入模型。支持同步和流 API 选项。还支持下拉访问模型特定功能。我们支持 OpenAI、Microsoft、Amazon、Google、Huggingface 等公司的 AI 模型。

  • 跨 Vector Store 提供商的可移植 API,包括同样可移植的新颖的类似 SQL 的元数据过滤器 API。支持 8 个矢量数据库。

  • 函数调用。Spring AI 使 AI 模型可以轻松调用 POJO java.util.Function 对象。

  • AI 模型和向量存储的 Spring Boot 自动配置和启动器。

  • 数据工程的 ETL 框架。这为将数据加载到矢量数据库提供了基础,有助于实现检索增强生成模式,使您能够将数据引入 AI 模型以纳入其响应中。

Chat Completion API

  • 聊天 API 使开发人员能够将人工智能支持的聊天功能集成到他们的应用程序中。它利用预先训练的语言模型,例如 GPT(生成式预训练变压器),以自然语言对用户输入生成类似人类的响应。

  • API 通常通过向 AI 模型发送提示或部分对话来工作,然后 AI 模型根据其训练数据和对自然语言模式的理解生成对话的完成或延续。然后,完成的响应将返回到应用程序,应用程序可以将其呈现给用户或将其用于进一步处理。

  • Spring AI Chat Completion API 被设计为一个简单且可移植的接口,用于与各种 AI 模型交互,允许开发人员以最少的代码更改在不同模型之间切换。这种设计符合 Spring 的模块化和可互换性理念。

  • 此外,在输入封装 Prompt 和输出处理 ChatResponse 等配套类的帮助下,聊天完成 API 统一了与 AI 模型的通信。它管理请求准备和响应解析的复杂性,提供直接且简化的 API 交互。

2.openapi相关环境准备

参考链接:https://www.rebelmouse.com/openai-account-set-up

免费提供api-key

加博主微信,免费送apikey尝试

ee1777802249437a52340ac4cde16dea.png

3.代码工程

实验目的:实现聊天功能api

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.2.1</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>ai</artifactId>
  12. <properties>
  13. <maven.compiler.source>17</maven.compiler.source>
  14. <maven.compiler.target>17</maven.compiler.target>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-web</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-autoconfigure</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.ai</groupId>
  32. <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  33. <version>0.8.0-SNAPSHOT</version>
  34. </dependency>
  35. </dependencies>
  36. <repositories>
  37. <repository>
  38. <id>spring-snapshots</id>
  39. <name>Spring Snapshots</name>
  40. <url>https://repo.spring.io/snapshot</url>
  41. <releases>
  42. <enabled>false</enabled>
  43. </releases>
  44. </repository>
  45. </repositories>
  46. </project>

application.yaml

  1. server:
  2. port: 8088
  3. spring:
  4. ai:
  5. openai:
  6. base-url: https://api.openai.com/
  7. api-key: sk-xxx
  8. embedding:
  9. options:
  10. model: text-davinci-003
  11. chat:
  12. #指定某一个API配置(覆盖全局配置)
  13. api-key: sk-xxx
  14. base-url: https://api.openai.com/
  15. options:
  16. model: gpt-3.5-turbo # 模型配置

controller

  1. package com.et.ai.controller;
  2. import jakarta.annotation.Resource;
  3. import org.springframework.ai.chat.ChatClient;
  4. import org.springframework.ai.chat.prompt.Prompt;
  5. import org.springframework.ai.embedding.EmbeddingClient;
  6. import org.springframework.ai.embedding.EmbeddingResponse;
  7. import org.springframework.ai.openai.OpenAiChatClient;
  8. import org.springframework.ai.openai.api.OpenAiApi;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.web.bind.annotation.GetMapping;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. @RestController
  18. public class HelloWorldController {
  19. @Autowired
  20. EmbeddingClient embeddingClient;
  21. @Autowired
  22. ChatClient chatClient;
  23. @GetMapping("/ai/embedding")
  24. public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
  25. EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(List.of(message));
  26. return Map.of("embedding", embeddingResponse);
  27. }
  28. @GetMapping("/ai/chat")
  29. public String chat(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
  30. Prompt prompt = new Prompt(message);
  31. return chatClient.call(prompt).getResult().getOutput().getContent();
  32. }
  33. }

DemoApplication.java

  1. package com.et.ai;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class DemoApplication {
  6. public static void main(String[] args) {
  7. SpringApplication.run(DemoApplication.class, args);
  8. }
  9. }

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo

4.测试

  • 启动Spring Boot应用

  • 访问http://127.0.0.1:8088/ai/chat,返回响应消息

Why couldn't the bicycle stand up by itself? Because it was two tired!

5.参考引用

  • https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.htm

  • http://www.liuhaihua.cn/archives/710471.html

  • https://springboot.io/t/topic/5166

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

闽ICP备14008679号