SpringBoot使用SpringAI接入通义大模型

前提条件

1、开发环境

  • JDK 11 或更高版本
  • Maven 或 Gradle(本文以 Maven 为例)
  • Spring Boot 项目(建议使用 3.x 版本)
  • 通义大模型的 API Key(需要从阿里云获取)

2、获取通义大模型API Key

阿里云百炼大模型官网:通义大模型_企业拥抱 AI 时代首选-阿里云

具体步骤可参考这篇文章:

如何获取通义千问 API Key 密钥(分步指南) - 幂简集成


第一步:创建SpringBoot项目,配置pom.xml

这应该不用为我说了吧,相信各位大佬都可以完成创建项目这一步(手动dog)。

下面是对pom.xml文件的配置

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Spring AI Alibaba(通义大模型支持) -->
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter</artifactId>
            <version>1.0.0-M6.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-core</artifactId>
            <version>1.0.0-M6</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-autoconfigure</artifactId>
            <version>1.0.0-M6.1</version>
        </dependency>
    </dependencies>

    <!-- 添加 Spring Snapshot 仓库(若使用快照版本) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

特别注意:通义大模型的依赖可以去 Maven Central 网站获取最新版


第二步:配置通义大模型

application.yml 文件中

spring:
  ai:
    dashscope:
      api-key: your api-key
      chat:
        model: qwq-32b  # 这里我用的是通义千问-QwQ-32B

第三步:编写代码调用通义大模型

直接在controller文件中书写一下代码

package com.ai.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AIController {
    private final ChatClient chatClient;

    public AIController(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder.build();
    }

    @GetMapping("/chat")
    public String chat(@RequestParam("message") String message) {
        return chatClient.prompt()
                .user(message)
                .call()
                .content();
    }
}

第四步:运行与测试

测试方法:

1. curl

curl "http://localhost:8080/ai/chat?message=你好,请介绍你自己?"

2. Postman

localhost:8080/chat?message=介绍一下你自己

测试结果:


高级功能:

1、提示模板

    @GetMapping("/template")
    public String templateChat(@RequestParam("topic") String topic) {
        PromptTemplate template = new PromptTemplate("请用简洁的语言解释 {topic}");
        return chatClient.prompt()
                .user(template.render(Map.of("topic", topic)))
                .call()
                .content();
    }

测试结果:

2、流式响应

    @GetMapping("/stream")
    public Flux<String> streamChat(@RequestParam String message) {
        return chatClient.prompt()
                .user(message)
                .stream()
                .content();
    }

测试结果:

3、对话记忆

首先在config中

@Configuration
public class ChatConfig {
    @Bean
    public ChatMemory chatMemory() {
        return new InMemoryChatMemory();
    }
}

然后再controller中--记得注释之前的AIcontroller,如果你是新开的class(当我没说)

    // 注入 ChatClient.Builder 和 ChatMemory
    public AIController(ChatClient.Builder chatClientBuilder, ChatMemory chatMemory) {
        this.chatClient = chatClientBuilder
                .defaultAdvisors(new PromptChatMemoryAdvisor(chatMemory)) // 添加 ChatMemoryAdvisor
                .build();
    }

    @GetMapping("/ai/chat")
    public String chatAi(@RequestParam String message) {
        return chatClient.prompt()
                .user(message)
                .call()
                .content();
    }

测试结果:

localhost:8080/ai/chat?message=你好,我是小明

localhost:8080/ai/chat?message=你还记得我吗


感兴趣的同学还可以构建前端页面来是聊天更加美观。

若有错误,欢迎大佬指正!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值