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链接。

相关推荐
没书读了7 分钟前
ssm框架-spring-spring声明式事务
java·数据库·spring
----云烟----8 分钟前
QT中QString类的各种使用
开发语言·qt
lsx20240612 分钟前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·14 分钟前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic37 分钟前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it38 分钟前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
懒洋洋大魔王39 分钟前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康44 分钟前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神1 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
宅小海2 小时前
scala String
大数据·开发语言·scala