借助SpringAI在Spring Boot里整合通义大模型
前提条件
- 开发环境
- JDK 11或更高版本
- Maven或者Gradle(本文以Maven为例)
- Spring Boot项目(建议使用3.x版本)
- 通义大模型的API Key(需从阿里云获取)
- 获取通义大模型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中(若为新开的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=你还记得我吗
有兴趣的同学还可以构建前端页面让聊天界面更美观。
若有错误,欢迎大佬指正!!!
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12930.html