利用Spring-ai-openai集成DeepSeek
①、在DeepSeek开放平台创建API KEY
②、创建springboot项目,引入spring-ai-openai依赖,创建配置文件,配置deepseek的url和api key
③、具体的实现业务应用
java
@RestController
public class ChatDeepSeekController{
@Autowired
private OpenAiChatModel chatModel;
@GetMapping("/ai/test")
public String generate(@RequestParam(value="message",defaultValue="hello")String message){
String response = this.chatModel.call(message);
System.out.println("response:" + response);
return response;
}
}

利用spring-ai-ollama访问本地化部署DeepSeek
①、利用DeepSeek本地化部署
②、通过ollama拉取DeepSeek模型

CMD窗口执行复制上面的命令
③、创建springboot工程引入依赖
④、业务应用
java
@RestController
public class ChatDeepSeekController{
@Autowired
private OllamaChatModel ollamaChatModel;
@GetMapping("/ai/test")
public String generate(@RequestParam(value="message",defaultValue="hello")String message){
String response = this.ollamaChatModel.call(message);
System.out.println("response:" + response);
return response;
}
}

项目中应用实现数据报表
ECharts图表方式实现报表

①、前端使用工具ECharts
vue项目中安装ECharts:npm install echarts --save
vue组件中使用ECharts
html
<template>
<div ref="chart" style="width:600px;height:400px;"></div>
</template>
<script>
import * as echarts from 'echarts';
export default {
data(){
return {
searchObj:{
selectYear:''
},
btnDisabled:false,
chart:null,
title:'',
xData:[],
yData:[]
}
},
created(){
this.showChart()
},
method:{
//初始化图表
showChart(){
getUserCount().then(response=>{
this.yData = response.data.countList
this.xData = response.data.dateList
this.setChartData()
})
},
setChartData(){
var myChart = echarts.init(this.$refs.chart)
var option = {
title:{
text:this.title + ''
},
tooltip:{}
legend:{
data:[this.title]
},
xAxis:{
data:this.xData
},
yAxis:{
minInterval:1
},
series:[{
name:this.title,
type:'bar',
data:this.yData
}]
}
//使用刚指定的配置项和数据显示图表
myChart.setOption(option);
},
}
}
</script>
②、后端创建查询统计数据的接口,按照ECharts要求格式返回

share-user模块
java
@GetMapping("/getUserCount")
public R getUserCount(){
Map<String,Object> map = userInfoService.getUserCount();
return R.ok();
}
java
@Override
public Map<String,Object> getUserCount(){
Lit<UerCountVo> list = baseMapper.selectUserCount();
Map<String,Object> map = new HashMap<>();
//创建两个list集合,一个对应所有的日期,一个对应所有的数据
//java中list -- json数组[]
List<String> dateList = list.stream().map(UserCountVo::getRegisterDate).collect(Collectors.toList());
List<Integer> countList = list.stream().map(UserCountVo::getCount).collect(Collectors.toList());
map.put("dateList",dateList);
map.put("countList",countList);
return map;
}
SpringAI集成DeepSeek实现数据报表
- AI生成sql语句

①、创建AI工程
依赖spring-ai-openai-spring-boot-starter


②、shart-order模块中
根据传递的sql查询数据库,得到报表
java
@PostMapping("/getOrderCount")
public R getOrderCount(@RequestBody OrderSqlVo orderSqlVo){
Map<String,Object> map = orderInfoService.getOrderCount(orderSqlVo.getSql());
return R.ok(map);
}
java
@Override
public Map<String,Object> getOrderCount(String sql){
List<Map<String,Object>> list = baseMapper.getOrderCount(sql);
Map<String,Object> dataMap = new HashMap<>();
List<Object> dataList = new ArrayList<>();
List<Object> countList = new ArrayList<>();
for(Map<String,Object> map:list){
dataList.add(map.get("order_date"));
countList.add(map.get("order_count"));
}
dataMap.put("dateList",dateList);
dataMap.put("countList",countList);
return dataMap;
}
xml
<select id="getOrderCount" resultType="hashmap">
${sql}
</select>
③、远程定义模块(略)
④、shart-statics模块进行调用
java
@Configuration
public class RestTmplateConfig{
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
java
@Autowired
private RestTemplate restTemplate;
@Autowired
private RemoteOrerInfoService remoteOrderInfoService;
@GetMapping("/orderData")
public AjaxResult getOrderData(@RequestParam(value="message",defaultValue="hello") String message){
//通过restTemplate调用ai
String sql = restTemplate.getForObject("http://localhost:8899/ai/generateSql?message=" + message,String.class);
//远程调用
OrderSqlVo orderSqlVo = new OrderSqlVo();
orderSqlVo.setSql(sql);
R<Map<String,Object>> result = remoteOrderInfoServce.getOrderCount(orderSqlVo);
Map<String,Object> map = result.getData();
return success(map);
}
整合前端
java
export function getOrderCount(message){
return request({
url:'/sta/orderData?message=' + message,
method:'get'
})
}
