马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
基于Spring AI alibaba组件AI问答功能开发示例
功能效果图:
http://localhost:9999/ai/test
http://localhost:9999/ai/chat?input=ai
设置 application.yaml 指定 API-KEY(可通过访问阿里云百炼模子服务平台获取,有免费额度可用。)
阿里云百炼
阿里云百炼模子服务平台
https://ai.aliyun.com/
架构版本
JDK17
SpringBoot3.3.3
Spring-AI 1.0.0-M3
Spring-AI-Alibaba1.0.0-M3.1
vue3
- 架构版本JDK17
- SpringBoot3.3.3
- Spring-AI 1.0.0-M3
- Spring-AI-Alibaba1.0.0-M3.1
- vue3
复制代码 aiApplication.java入口类
- package com.cwgis;
- import com.cwgis.pg.function.MockOrderService;
- import com.cwgis.pg.function.Response;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Description;
- import java.util.function.Function;
- /**
- * Hello world!
- */
- @SpringBootApplication
- public class aiApplication {
-
-
- public static void main(String[] args) {
-
-
- SpringApplication.run(aiApplication.class, args);
- System.out.println("===============");
- System.out.println("ai服务正在运行中!");
- System.out.println("===============");
- }
- @Bean
- @Description("根据用户编号和订单编号查询订单信息")
- public Function<MockOrderService.Request, Response> getOrderFunction(
- MockOrderService mockOrderService) {
-
-
- return mockOrderService::getOrder;
- }
- }
复制代码 ChatController.java问答服务类
- package com.cwgis;
- import com.cwgis.pg.core.AjaxResult;
- import com.cwgis.pg.function.MJDLTBService;
- import com.cwgis.pg.function.MockWeatherService;
- import org.springframework.ai.chat.client.ChatClient;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import reactor.core.publisher.Flux;
- import java.util.Objects;
- @RestController
- @RequestMapping("/ai")
- public class ChatController {
-
-
- private final ChatClient chatClient;
- public ChatController(ChatClient.Builder builder) {
-
-
- this.chatClient = builder.build();
- }
- @GetMapping("/test")
- public AjaxResult test() {
-
-
- String r= this.chatClient.prompt().user("测试").call().content();
- return AjaxResult.success(r);
- }
- //自动加载自定义function函数
- @PostMapping("/chat")
- public AjaxResult chat(String input) {
-
-
- String r= this.chatClient.prompt()
- .function("getWeather", "根据城市查询天气", new MockWeatherService())
- .functions("getOrderFunction") //获取aiApplication类中注册的Bean函数
- .function("MJDLTBService","根据城市和地类名称查询地类图斑面积",new MJDLTBService())
- .user(input).call().content();
- return AjaxResult.success(r);
- }
- @PostMapping("/stream")
- public AjaxResult stream(String input) {
-
-
- Flux<String> content = this.chatClient.prompt().user(input).stream().content();
- String r= Objects.requireNonNull(content.collectList().block()).stream().reduce((a, b) -> a + b).get();
- return AjaxResult.success(r);
- }
- //函数调用
- @PostMapping("/weather-service")
- public AjaxResult weatherService(String subject) {
-
-
- String r= chatClient.prompt()
- .function("getWeather", "根据城市查询天气", new MockWeatherService())
- .user(subject)
- .call()
- .content();
- return AjaxResult.success(r);
- }
- @PostMapping("/order-detail")
- public AjaxResult orderDetail() {
-
-
- String r= chatClient.prompt()
- .functions("getOrderFunction") //获取aiApplication类中注册的Bean函数
- .user("帮我查询一下订单, 用户编号为1001, 订单编号为2001")
- .call()
- .content();
- return AjaxResult.success(r);
- }
- //
- }
复制代码 MJDLTBService.java自界说服务函数
- package com.cwgis.pg.function;
- import com.fasterxml.jackson.annotation.JsonClassDescription;
- import com.fasterxml.jackson.annotation
复制代码 |