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

相关推荐
deep_drink几秒前
1.1、Python 与编程基础:开发环境、基础工具与第一个 Python 项目
开发语言·人工智能·python·llm
码农很忙1 分钟前
Spring Boot 3.x 整合 Redis 实现高性能缓存的完整指南
java·spring boot·redis
峡谷电光马仔1 分钟前
要成为AI的主人,而不是被它所绑架
人工智能·chatgpt·ai编程·ai红线·清醒的使用ai
禾小西3 分钟前
Spring AI 流式输出底层原理解析
java·人工智能·spring
丸辣,我代码炸了6 分钟前
如何手搓序列化器(以java为例)
java·开发语言·kafka
快乐柠檬不快乐8 分钟前
基于Java+SpringBoot+SSM攻防靶场实验室平台
java·开发语言·spring boot
lly2024069 分钟前
SQL AND & OR 操作符详解
开发语言
伐尘9 分钟前
【图形学】CS:GO 的 “Uber 着色器” 是啥?
开发语言·golang·着色器
爱丽_10 分钟前
Spring Boot 启动链路:自动装配、条件注解与排错方法论
java·spring boot·后端
weixin_4250230012 分钟前
Spring Boot 2.7+JDK8+WebSocket对接阿里云百炼Qwen3.5-Plus 实现流式对话+思考过程实时展示
java·spring boot·websocket·ai编程