冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • 开篇:专栏介绍

    • 开篇:AI智能问答系统正式开撸
  • 第01部分:需求设计

    • 第01节:AI智能问答系统的需求与流程设计
  • 第02部分:落地实现

    • 第01节:AI智能问答系统简单对话模型的设计与实现
    • 第02节:AI智能问答系统历史会话模型的设计与实现
    • 第03节:AI智能问答系统知识库模型的设计与实现
    • 第04节:AI智能问答系统前端页面的设计与实现
  • 第03部分:功能测试

    • 第01节:AI智能问答系统整体功能性测试
  • 第04部分:专栏总结

    • 总结:AI智能问答系统整体专栏总结

《AI智能问答系统》落地实现-第04节:AI智能问答系统前端页面的设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.site
文章汇总:https://binghe.site/md/all/all.html
源码获取地址:https://t.zsxq.com/0dhvFs5oR

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:对AI智能问答系统的前端页面进行设计和实现,从全局角度掌握AI智能问答系统的核心设计思路和设计方法。重点掌握对接公网AI大模型的通用设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

大家好,我是冰河~~

AI智能问答系统的后端服务已经基本撸完,是不是非常简单?没错,这个AI智能问答系统就是这么简单。先带大家做一个入门级的简单AI智能问答系统,让大家从总体上感受下对接AI公网大模型的流程和实现效果。随后,会带着大家一步步深入设计和手撸复杂的AI大模型系统。

一、前言

AI智能问答系统的设计是非常简单的,后端服务主要实现了简单对话模型、历史会话模型和知识库模型。三种模型都可以与硅基流动平台进行交互。接下来,我们就开始实现前端页面部分。

二、本节诉求

对AI智能问答系统的前端页面进行设计和实现,从全局角度掌握AI智能问答系统的核心设计思路和设计方法。重点掌握对接公网AI大模型的通用设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

三、编码实现

对于前端页面来说,我们将其放到项目工程的src/reources/static目录下。例如,在项目的 src/reources/static目录下新建ai-qa.html文件,文件内容如下所示。

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>AI智能问答系统</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                max-width: 800px;
                margin: 0 auto;
                padding: 20px;
            }
            .container {
                border: 1px solid #ddd;
                border-radius: 5px;
                padding: 20px;
                margin-top: 20px;
            }
            .question-form {
                margin-bottom: 20px;
            }
            #question {
                width: 100%;
                padding: 10px;
                margin-bottom: 10px;
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            button {
                padding: 10px 15px;
                background-color: #4CAF50;
                color: white;
                border: none;
                border-radius: 4px;
                cursor: pointer;
            }
            button:hover {
                background-color: #45a049;
            }
            .answer {
                margin-top: 20px;
                padding: 15px;
                background-color: #f9f9f9;
                border-radius: 4px;
                white-space: pre-wrap;
            }
            .loading {
                color: #888;
                font-style: italic;
                display: none;
            }
        </style>
    </head>
    <body>
        <h1>AI只能问答系统</h1>

        <div class="container">
            <div class="question-form">
                <h2>请输入您的问题</h2>
                <textarea id="question" rows="4" placeholder="例如:什么是Spring AI?"></textarea>
                <button id="ask-button">提问</button>
                <p class="loading" id="loading">AI正在思考中,请稍候...</p>
            </div>
        
            <div class="answer" id="answer-container" style="display:none;">
                <h2>回答</h2>
                <div id="answer-text"></div>
            </div>
        </div>

        <script>
            document.getElementById('ask-button').addEventListener('click', async function() {
                const question = document.getElementById('question').value.trim();

                if (!question) {
                    alert('请输入问题');
                    return;
                }

                // 显示加载状态
                document.getElementById('loading').style.display = 'block';
                document.getElementById('answer-container').style.display = 'none';

                try {
                    // 简单对话模式   /api/ai/simple-ask
                    // 历史会话模式   /api/ai/session-ask
                    // 知识库模式     /api/ai/knowledge-ask
                    const response = await fetch('/api/ai/simple-ask', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify({ question: question, sessionId: '12345' })
                    });

                    if (!response.ok) {
                        throw new Error('服务器错误');
                    }

                    const data = await response.json();

                    // 显示回答
                    document.getElementById('answer-text').textContent = data.answer;
                    document.getElementById('answer-container').style.display = 'block';
                } catch (error) {
                    console.error('Error:', error);
                    document.getElementById('answer-text').textContent = '发生错误: ' + error.message;
                    document.getElementById('answer-container').style.display = 'block';
                } finally {
                    // 隐藏加载状态
                    document.getElementById('loading').style.display = 'none';
                }
            });
        </script>
    </body>
</html>

随后,在 src/resources 目录下,新增application.yml文件,内容如下所示。

server:
  port: 8080

spring:
  ai:
    openai:
      api-key: your_api_key # 替换为你自己的硅基流动平台的api-key
      base-url: https://api.siliconflow.cn/
      embedding:
        options:
          model: BAAI/bge-m3
      chat:
        options:
          model: deepseek-ai/DeepSeek-V3

注意:需要将api-key替换为自己的硅基流动平台的api-key。至于如何获取硅基流动平台的api-key,在后续测试章节会给大家说明。

此时,AI问题系统的页面基本开发完毕。

四、测试页面

这里,将application.yml文件中的api-key替换为自己的硅基流动平台的api-key后,启动项目,在浏览器输入http://localhost:8080/ai-qa.html 。


如果能正常展示上述页面,说明前端页面正常。

五、本节总结

本节,主要对AI智能问答系统的前端页面进行了简单的实现。

最后,可以在评论区写下你学完本章节的收获,祝大家都能学有所成,我们一起AI智能问答系统项目。

六、写在最后

在冰河的知识星球除了AI智能问答系统外,还有其他十几个项目,像实战AI大模型、手写高性能Redis组件、手写高性能敏组件、手写线程池、手写高性能SQL引擎、手写高性能Polaris网关、手写高性能熔断组件、手写通用指标上报组件、手写高性能数据库路由组件、手写分布式IM即时通讯系统、手写Seckill分布式秒杀系统、手写高性能RPC、实战高并发设计模式、简易商城系统等等。

这些项目的需求、方案、架构、落地等均来自互联网真实业务场景,让你真正学到互联网大厂的业务与技术落地方案,并将其有效转化为自己的知识储备。

值得一提的是:冰河自研的Polaris高性能网关比某些开源网关项目性能更高,并且冰河也正在为企业级高性能RPC框架录制视频,全程带你分析原理和手撸代码。

你还在等啥?不少小伙伴经过星球硬核技术和项目的历练,早已成功跳槽加薪,实现薪资翻倍,而你,还在原地踏步,抱怨大环境不好。抛弃焦虑和抱怨,我们一起塌下心来沉淀硬核技术和项目,让自己的薪资更上一层楼。


目前,加入星球就可以跟冰河一起学习《实战AI大模型》、《手写高性能Redis组件》、《手写高性能脱敏组件》、《手写线程池》、《手写高性能SQL引擎》、《手写高性能Polaris网关》、《手写高性能RPC项目》、《分布式Seckill秒杀系统》、《分布式IM即时通讯系统》《手写高性能通用熔断组件项目》、《手写高性能通用监控指标上报组件》、《手写高性能数据库路由组件》、《手写简易商城脚手架项目》、《Spring6核心技术与源码解析》和《实战高并发设计模式》,从零开始介绍原理、设计架构、手撸代码。

花很少的钱就能学这么多硬核技术、中间件项目和大厂秒杀系统与分布式IM即时通讯系统,比其他培训机构不知便宜多少倍,硬核多少倍,如果是我,我会买他个十年!

加入要趁早,后续还会随着项目和加入的人数涨价,而且只会涨,不会降,先加入的小伙伴就是赚到。

另外,还有一个限时福利,邀请一个小伙伴加入,冰河就会给一笔 分享有奖 ,有些小伙伴都邀请了50+人,早就回本了!

七、其他方式加入星球

  • 链接 :打开链接 http://m6z.cn/6aeFbs 加入星球。
  • 回复 :在公众号 冰河技术 回复 星球 领取优惠券加入星球。

特别提醒: 苹果用户进圈或续费,请加微信 hacker_binghe 扫二维码,或者去公众号 冰河技术 回复 星球 扫二维码加入星球。

好了,今天就到这儿吧,我是冰河,我们下期见~~

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Prev
第03节:AI智能问答系统知识库模型的设计与实现
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接