当前位置: 首页 > article >正文

Java调用chatgpt

目前openai的chatgpt在国内使用有一定难度,不过国内的大模型在大部分情况下已经不弱于chatgpt,而且还更便宜,又能解决国内最敏感的内容安全问题。本文后续以spring ai调用国内chatgpt厂商实现为例,讲解怎么构建一个java调用chatgpt的应用。在构建java调用chatgpt的应用过程中,我们将使用java编程语言来编写代码,并通过spring框架来整合chatgpt的功能。通过调用国内chatgpt厂商提供的接口,我们可以实现与chatgpt的交互,从而构建出一个功能强大的java应用。在应用中,我们可以使用java代码来处理用户输入,并通过调用chatgpt的接口来获取相应的回复。这样,我们就可以在java应用中实现与chatgpt的对话功能,为用户提供智能化的服务。通过使用java调用chatgpt,我们可以构建出更加智能化的应用,为用户提供更好的体验。

 24年12月截止了,赶紧来拿奖金!总计30万,Spring AI Alibaba 应用框架挑战赛开赛点此了解

Spring AI介绍

Spring AI是一个专为AI工程设计的应用框架,它继承了Spring生态系统的优良传统,比如可移植性、模块化设计等。该框架致力于将POJOs(Plain Old Java Objects)作为构建块应用于AI领域,使得开发者能够利用熟悉的Java语言和面向对象编程范式来创建复杂的AI应用程序。Spring AI最核心的优势在于提供了一套统一的接口标准,允许开发者编写一次代码即可轻松切换不同的AI服务提供商(例如OpenAI、Azure、阿里云等),极大地简化了跨平台迁移的工作量。此外,其对Spring生态系统的完美兼容性意味着现有基于Spring的应用可以无缝集成AI功能,进一步降低了开发门槛。

Spring AI alibaba介绍

Spring AI Alibaba是基于Spring AI框架构建的实现,专注于接入阿里云百炼系列的大模型服务。通过Spring AI Alibaba,开发者可以轻松地利用通义大模型进行文本生成、图像生成、语音合成等任务。其核心优势在于提供了统一的API接口,使得开发者能够以一致的方式调用不同类型的AI服务,并且只需修改配置即可切换不同的AI提供者,极大地简化了开发过程中的复杂度。此外,Spring AI Alibaba还支持本地部署及多种主流AI框架(如OpenAI和Ollama)的集成,进一步增强了其灵活性与适用性。

基于spring ai alibaba 生成做聊天的详细例子


基于Spring AI Alibaba生成做聊天的详细例子,我们将依照给定的知识来分析并提供详细的步骤。首先,要实现一个允许用户输入信息并通过流(Flux)返回响应的聊天API,需要理解的是整个过程依赖于对通义千问大模型的服务调用。下面将逐步说明如何通过配置和编写代码来完成这一目标。

前置条件

确保您的开发环境满足以下要求:

  • JDK版本至少为17。
  • Spring Boot版本为3.3.x或更高。
  • 已经在阿里云上申请了通义千问服务的API Key,并且已经按照指示将其设置到了系统变量中。

配置阿里云API Key

根据我了解的信息中的描述,在命令行中设置环境变量或者直接在application.properties文件里配置阿里云API Key:

export AI_DASHSCOPE_API_KEY=你的实际API-Key值

或者在application.properties中添加:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}

Maven仓库配置

由于Spring AI的部分库尚未发布到Maven中央仓库,因此需要额外配置Spring自己的仓库地址至项目的pom.xml中:

<repositories>
    <repository>
        <id>sonatype-snapshots</id>

        <url>https://oss.sonatype.org/content/repositories/snapshots</url>

        <snapshots><enabled>true</enabled></snapshots>

    </repository>

    <repository>
        <id>spring-milestones</id>

        <name>Spring Milestones</name>

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

        <snapshots><enabled>false</enabled></snapshots>

    </repository>

    <repository>
        <id>spring-snapshots</id>

        <name>Spring Snapshots</name>

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

        <releases><enabled>false</enabled></releases>

    </repository>

</repositories>

添加项目依赖

在pom.xml中引入必要的依赖项,特别是spring-ai-alibaba-starter以及指定Spring Boot的版本作为父级依赖,以确保自动装配机制能够正确工作:

<parent>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>3.3.4</version>

    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>

        <artifactId>spring-ai-alibaba-starter</artifactId>

        <version>1.0.0-M2</version>

    </dependency>

    <!-- 其他依赖... -->
</dependencies>

创建Controller处理聊天请求

接下来创建一个控制器类用于接收用户的输入并通过聊天客户端向AI发送请求,同时利用Flux进行流式响应:

@RestController
@RequestMapping("/ai")
@CrossOrigin(origins = "*")
public class ChatController {

    private final ChatClient chatClient;
    @Value("classpath:correct-and-expand.st")
    Resource resource;

    public ChatController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    @GetMapping("/chatStream")
    public Flux<String> chatSteam(@RequestParam String input) {
        PromptTemplate promptTemplate = new PromptTemplate(resource);
        Prompt prompt = promptTemplate.create(Map.of("input", input));
        return chatClient.prompt(prompt).stream().content();
    }
}

此控制器定义了一个名为/chatStream的GET方法端点,该端点接受一个名为input的查询参数,并使用它构造一个提示语句给到聊天客户端。最终结果会以流的形式被客户端消费。

以上步骤详尽地介绍了如何从零开始构建一个基于Spring AI Alibaba支持Prompt与流式输出的聊天API。遵循上述指南,您可以顺利地为您的应用添加强大的AI对话能力。请注意保持所有配置和代码片段的一致性,并根据实际情况调整相关细节如版本号等。

基于Spring AI Alibaba生成一个图片的详细例子

根据我了解的信息提供的信息,我们将基于Spring Boot集成Spring AI Alibaba来实现动漫美女图的图像生成。以下是详细的步骤说明:

1. 确认前置要求

  • JDK版本需要在JDK17(含)以上。
  • Spring Boot版本需为3.3.x或更高。

2. 申请阿里云资源及API KEY

首先,您需要访问阿里云百炼页面并按照以下步骤操作:

  • 登录您的阿里云账号。
  • 开通“百炼大模型推理”服务,并等待开通成功的短信通知。
  • 成功后再次登录阿里云百炼页面,点击右上角的小人图标 -> API-KEY -> 创建新的API-KEY。
  • 记录生成的API-KEY,这将在稍后的配置中使用。

接着,设置环境变量以存储API KEY:

export AI_DASHSCOPE_API_KEY=YOUR_GENERATED_API_KEY

3. 开通通义万象图像生成模型

  • 进入百炼控制台。
  • 在左侧菜单选择“模型广场”,查找并选择图像生成类目下的通义万象模型。
  • 点击该模型的“API调用”按钮,在打开的页面顶部复制模型英文名(例如wanx-v1),用于后续代码配置。

4. 配置项目依赖

添加仓库地址

在您的pom.xml文件中加入如下仓库配置以便获取最新版的Spring AI Alibaba组件:

<repositories>
    <repository>
      <id>sonatype-snapshots</id>

      <url>https://oss.sonatype.org/content/repositories/snapshots</url>

      <snapshots>
        <enabled>true</enabled>

      </snapshots>

    </repository>

    <repository>
      <id>spring-milestones</id>

      <name>Spring Milestones</name>

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

      <snapshots>
        <enabled>false</enabled>

      </snapshots>

    </repository>

    <repository>
      <id>spring-snapshots</id>

      <name>Spring Snapshots</name>

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

      <releases>
        <enabled>false</enabled>

      </releases>

    </repository>

</repositories>
添加依赖项

同样地,在pom.xml内添加必要的依赖包:

<parent>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>3.3.4</version>

    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>

        <artifactId>spring-ai-alibaba-starter</artifactId>

        <version>1.0.0-M2.1</version>

    </dependency>

    <!-- 其他必要依赖 -->
</dependencies>

5. 配置应用属性

编辑application.properties文件,设置API KEY等信息:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}

6. 编写控制器代码

创建一个新的REST控制器ImageModelController.java,内容如下所示:

@RestController
@RequestMapping("/ai")
public class ImageModelController {

    private final ImageModel imageModel;

    @Autowired
    public ImageModelController(ImageModel imageModel) {
        this.imageModel = imageModel;
    }

    @GetMapping("/image")
    public ResponseEntity<String> generateImage(@RequestParam String input) {
        try {
            ImageOptions options = new ImageOptionsBuilder()
                .withWidth(1024)
                .withHeight(1024)
                .withModel("wanx-v1") // 使用从阿里云获取到的具体模型名称
                .withN(1)
                .build();
            
            ImagePrompt prompt = new ImagePrompt(input, options);
            ImageResponse response = imageModel.call(prompt);
            List<ImageGeneration> results = response.getResults();
            if (results.isEmpty()) {
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("No image generated.");
            }
            String imageUrl = results.get(0).getOutput().getUrl();
            return ResponseEntity.ok(imageUrl);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
        }
    }
}

7. 测试接口

启动应用程序后,通过浏览器或者Postman等工具访问http://localhost:8080/ai/image?input=动漫美女这样的URL来请求生成图像。返回的结果应该是一个指向新生成图片的URL链接。


http://www.kler.cn/a/371728.html

相关文章:

  • CH569开发前的测试
  • 【python】OpenCV—findContours(4.3)
  • 数据结构 之 二叉树遍历 ------中序(根)遍历 和 后序(根)遍历(六)
  • [JAVAEE] 面试题(二) - CAS 和 原子类
  • Java面试经典 150 题.P26. 删除有序数组中的重复项(003)
  • 在 Elasticsearch 中顺利管理季节性时间变化
  • Linux | win11-cmd窗口 ping centos7不通的一种解决方法
  • yolov8训练及测试(ubuntu18.04、tensorrt、ros)
  • 2025前端面试-浏览器的事件循环和浏览器的事件循环的区别是什么---002
  • 开发者视角:探索技术无垠,肩负时代重任
  • 政务网站如何选择SSL证书?JoySSL提供一年期免费证书!
  • 【C++系列】-----------内存管理
  • 手机备忘录怎么导出到电脑,
  • Python自动化测试一文详解
  • 利索能及:全球专利信息尽在掌握,轻松实现专利保护
  • 微服务分布式事务
  • 带哨兵的单向链表(改动版)
  • Zookeeper 理论基础
  • 10.22.2024刷华为OD C题型(三)--for循环例子
  • 使用SpringCloudSleuth和Zipkin进行分布式链路跟踪
  • linux驱动—在自己的总线目录下创建属性文件
  • 微信小程序live-pusher和video同时使用,video播放声音时时大时小
  • qemu-9.1+linux-kernel-6.11+busybox-1.36.1+NFS挂载
  • Java设计模式—观察者模式详解
  • 问题排查思路
  • 记录一次mmpretrain训练数据并转onnx推理