【Spring AI】基于专属知识库的RAG智能问答小程序开发——完备项目(含完备 ...

打印 上一主题 下一主题

主题 968|帖子 968|积分 2904

系列文章目次


  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——完备项目(含完备前端+后端代码)
  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲:焦点ChatClient对象相干构造函数
<hr>
  
<hr> 项目效果展示


1.开发工具及环境

IntelliJ IDEA
微信开发者工具
JDK版本 >= 17
Spring Boot版本 >= 3.3.x
阿里云百炼api_keyu获取:阿里云百炼官网api获取教程
2.前端代码(原生微信小程序开发)

2.1.前端文件架构:


2.2.index.js文件

  1. // index.js
  2. Page({
  3.    
  4.   onLoad() {
  5.    
  6.     // const systemInfo = wx.getDeviceInfo();
  7.     const systemInfo = wx.getSystemInfoSync();
  8.     this.setData({
  9.    
  10.       statusBarHeight: systemInfo.statusBarHeight,
  11.       navBarHeight: systemInfo.platform === 'android' ? 48 : 44
  12.     });
  13.    
  14.     if (this.data.messages.length === 0) {
  15.    
  16.       this.setData({
  17.    
  18.         messages: [{
  19.    
  20.           content: '用户您好,我是百晓生,了解金融行业的各类信息,您有什么问题吗?',
  21.           role: 'bot',
  22.           timestamp: new Date().getTime()
  23.         }]
  24.       })
  25.     }
  26.   },
  27.   data: {
  28.    
  29.     messages: [],       // 消息列表
  30.     inputValue: '',    // 输入框内容
  31.     isLoading: false,   // 加载状态
  32.     scrollTop: 0,        // 滚动位置
  33.     statusBarHeight: 20, // 默认状态栏高度
  34.     navBarHeight: 44,    // 导航栏默认高度
  35.     inputContainerHeight: 100 // 初始高度对应min-height
  36.   },
  37.   onInput(e) {
  38.    
  39.     this.setData({
  40.     inputValue: e.detail.value });
  41.   },
  42.   sendMessage() {
  43.    
  44.     const question = this.data.inputValue.trim();
  45.     if (!question) return;
  46.     // 添加用户消息
  47.     const newMessage = {
  48.    
  49.       content: question,
  50.       role: 'user',
  51.       timestamp: new Date().getTime()
  52.     };
  53.     this.setData({
  54.    
  55.       messages: [...this.data.messages, newMessage],
  56.       inputValue: '',
  57.       key: Date.now(), // 强制重置textarea
  58.       isLoading: true,
  59.       scrollTop: 99999
  60.     });
  61.     // 调用后端接口
  62.     wx.request({
  63.    
  64.       url: 'http://localhost:8080/ai/ragChat',
  65.       method: 'POST',
  66.       header: {
  67.    
  68.         'Content-Type': 'application/json'
  69.       },
  70.       timeout: 200000, // 增加5分钟超时设置(300秒=300000毫秒)
  71.       data: {
  72.    
  73.         input: question
  74.       },
  75.       success: (res) => {
  76.    
  77.         if (res.statusCode === 200) {
  78.    
  79.           const answer = {
  80.    
  81.             content: res.data,
  82.             role: 'bot',
  83.             timestamp: new Date().getTime()
  84.           };
  85.           this.setData({
  86.    
  87.             messages: [...this.data.messages, answer],
  88.             isLoading: false,
  89.             scrollTop: 99999
  90.           });
  91.         }
  92.       },
  93.       fail: (err) => {
  94.    
  95.         console.error('请求失败', err);
  96.         let title = '请求失败,请重试';
  97.         // 添加超时特定提示
  98.         if (err.errMsg && err.errMsg.includes('timeout')) {
  99.    
  100.           title = '请求超时,请检查网络或稍后再试';
  101.         }
  102.         this.setData({
  103.    
  104.           isLoading: false
  105.         })
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表