利用Spring-ai-openai集成DeepSeek
①、在DeepSeek開放平臺創建API KEY
②、創建springboot項目,引入spring-ai-openai依賴,創建配置文件,配置deepseek的url和api key
③、具體的實現業務應用
@RestController
public class ChatDeepSeekController{@Autowiredprivate 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工程引入依賴
④、業務應用
@RestController
public class ChatDeepSeekController{@Autowiredprivate 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
<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.countListthis.xData = response.data.dateListthis.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模塊
@GetMapping("/getUserCount")
public R getUserCount(){Map<String,Object> map = userInfoService.getUserCount();return R.ok();
}
@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查詢數據庫,得到報表
@PostMapping("/getOrderCount")
public R getOrderCount(@RequestBody OrderSqlVo orderSqlVo){Map<String,Object> map = orderInfoService.getOrderCount(orderSqlVo.getSql());return R.ok(map);
}
@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;
}
<select id="getOrderCount" resultType="hashmap">${sql}
</select>
③、遠程定義模塊(略)
④、shart-statics模塊進行調用
@Configuration
public class RestTmplateConfig{@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}
@Autowired
private RestTemplate restTemplate;@Autowired
private RemoteOrerInfoService remoteOrderInfoService;@GetMapping("/orderData")
public AjaxResult getOrderData(@RequestParam(value="message",defaultValue="hello") String message){//通過restTemplate調用aiString 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);
}
整合前端
export function getOrderCount(message){return request({url:'/sta/orderData?message=' + message,method:'get'})
}