vue 实现简单AI聊天程序(一) elementui 聊天框编写

news2024/11/15 11:45:23

这个系列的目标是开发一个AI聊天前端界面+后端问答程序,
探索前端界面开发。
尝试后端对接阿里云千问大模型,后续还会更新自己部署的大模型。

这一期用elmentui来开发一个聊天框的前端,根据用户发送的内容,AI会返回一个一模一样的内容,在纯前端模拟聊天的效果。同时界面可以自适应当前浏览器的大小,聊天记录如果超过了聊天框的界面,则可以滚动。

开发完的效果如下:
在这里插入图片描述
在这里插入图片描述

1 开发前端

新建一个Chat.vue,里面采用el-card

<template>
  <el-card>
    <div class="chat-box" ref="chatBox">
      <div v-for="(msg, index) in messages" :key="index" class="message">
        <div v-if="msg.type === 'user'" class="user-message">
          <img :src="avatar" alt="User" class="avatar" />
          <div class="message-content user-message-content">{{ msg.content }}</div>
        </div>
        <div v-if="msg.type === 'bot'" class="bot-message">
          <img :src="avatar_bot" alt="Bot" class="avatar" />
          <div class="message-content bot-message-content">{{ msg.content }}</div>
        </div>
      </div>
    </div>
    <div class="input-area">
      <el-input
          v-model="input"
          placeholder="请输入您的问题..."
          @keyup.enter.native="sendMessage"
          class="input-field"
          :style="{ maxWidth: 'calc(100% - 100px)' }"
      ></el-input>
      <el-button type="primary" @click="sendMessage">发送</el-button>
    </div>
  </el-card>
</template>

需要注意的是这段代码,通过这个可以实现按键盘的enter发送消息的功能:

@keyup.enter.native="sendMessage"

script部分

<script>
export default {
  data() {
    return {
      input: '',
      messages: [],
      avatar: localStorage.getItem('avatar'),
      avatar_bot: require('@/assets/robot.png')
    };
  },
  methods: {
    sendMessage() {
      console.log('消息:', this.input)
      if (this.input.trim() === '') return;

      this.messages.push({ type: 'user', content: this.input });
      const userInput = this.input;
      this.input = '';

      setTimeout(() => {
        this.messages.push({ type: 'bot', content: `
        您说了: ${userInput} \n
        ` });
        this.scrollToBottom();
      }, 500);

      this.scrollToBottom();
    },
    scrollToBottom() {
      this.$nextTick(() => {
        this.$refs.chatBox.scrollTop = this.$refs.chatBox.scrollHeight;
      });
    }
  }
};
</script>

style部分:


<style scoped>
.chat-box {
  height: calc(100vh - 210px);
  overflow-y: auto;
  padding: 10px;
  border-bottom: 1px solid #dcdfe6;
}
.input-area {
  display: flex;
  align-items: center;
  margin-top: 10px;
}
.message {
  margin: 10px 0;
  display: flex;
  align-items: center;
}
.user-message, .bot-message {
  margin-top: 2px;
  display: flex;
  align-items: center;
}
.avatar {
  border-radius: 50%;
  margin-right: 10px;
  width: 50px;
  height: 50px;
}
.input-field {
  flex: 1;
  margin-right: 10px;
  max-width: calc(100% - 100px);
}
.message-content {
  max-width: 100%; /* 确保消息内容框不超过聊天框宽度 */
  background-color: #f0f0f0; /* 随意选择背景颜色 */
  border-radius: 5px; /* 圆角 */
  padding: 10px; /* 内边距 */
  overflow-wrap: break-word; /* 使长文本换行 */
  white-space: normal; /* 允许文本在标签内换行 */
  word-wrap: break-word; /* 兼容旧版浏览器 */
}
.user-message-content {
  background-color: #d1e7dd; /* 用户消息的背景颜色 */
}
.bot-message-content {
  background-color: #cfe2ff; /* 机器人消息的背景颜色 */
}
</style>

完成一个简单前端聊天界面的开发了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中山大学和联想研究院提出文本到服装生成模型GarmentAligner,解决服装生成中语义对齐、数量、位置和相互关系等问题。

中山大学和联想研究院提出一个能够根据文字描述生成服装图像的智能工具GarmentAligner。它可以从已有服装图像中提取出各个组成部分&#xff0c;并记录下它们的位置和数量。接着根据你的描述进行匹配&#xff0c;找出最吻合的服装组件进行组合。而为了确保生成的图像能够准确反…

Nosql数据库redis集群配置详解

一、Redis的安装 环境介绍&#xff1a; 一主双从&#xff1a;10&#xff08;redis-node1&#xff09;主&#xff0c;20&#xff08;redis-node2&#xff09; 30&#xff08;redis-node3&#xff09;从——使用的是红帽9.1系统 源码安装redis [rootredis-node1 ~]# tar zxf red…

【yarn publish : 报错 passed folder/tarball doesn‘t exist 】

当执行yarn publish 时报错&#xff0c;具体命令类似 yarn publish --new-version ${NEW_VERSION} ${my-node-moudle-path}/my-node-modules 报错内容&#xff0c; 网上搜了一圈&#xff0c;基本没有这个报错的相关内容&#xff0c;最后分析并解决了&#xff0c;这里记录分享下…

NoSql数据库 - Redis Cluster集群详解及案例实现

Redis Cluster集群&#xff08;无中心化设计&#xff09; 1.1 Redis Cluster 工作原理 在哨兵sentinel机制中&#xff0c;可以解决redis高可用问题&#xff0c;即当master故障后可以自动将slave提升为master&#xff0c;从而可以保证redis服务的正常使用&#xff0c;但是无法…

查看exe文件所需要依赖库的方法

Windows 1.dumpbin /dependendsv [file_path]; 2.Qt windeployqt.exe打包 在exe的同一目录下生成需要的文件和库&#xff1b;如果不是qt程序结果如下&#xff1a;

发那科机床设备数据 转IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集发那科机床数据 2 5 用IEC61850协议转发数据 5 6 网关使用多个逻辑设备和逻辑节点的方法 7 7 案例总结 8 1 案例说明 设置网关采集发那科机床数据把采集的数据转成IEC61850协议转发给其他系统。 2 VFBOX网关…

Google Search Console:完整教程

Google 提供了各种工具来收集和分析网站数据&#xff0c;其中最有价值的工具之一是 Google Search Console &#xff08;GSC&#xff09;。前身为 Google Webmaster Tools&#xff0c;它为 SEO 提供了对网站性能的宝贵见解。自 2015 年推出以来&#xff0c;该平台取得了长足的发…

分库分表学习笔记(一)

图源&#xff08;鹅厂技术架构师公众号&#xff09; MySQL执行顺序&#xff1a; FROM&#xff1a;确定数据来源。JOIN&#xff1a;执行表之间的连接操作。WHERE&#xff1a;过滤记录。GROUP BY&#xff1a;对记录进行分组。HAVING&#xff1a;对分组结果进行过滤。SELECT&#…

如何用Java SpringBoot+Vue搭建美容美发管理系统?实战解析

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

47.【C语言】指针(重难点)(J)

目录 26.自制排序函数(★★) *分析 *代码 往期推荐 26.自制排序函数 *分析 之前在42.【C语言】冒泡排序写过一个排序函数&#xff0c;可以将此自制一个类似qsort的函数 画圈的地方是需要修改的 #include <stddef.h> void bubble_sort(void* base, size_t num,size_t w…

Mac Cocos2d-x工程通过xcode编译时,提示无法找到SDK的解决办法

经过对整个macOS的升级&#xff0c;发现原来的Cocos2d-x4.0可编译的工程&#xff0c;无法运行。 Xcode错误提示 mac cocos2d-x 4 Showing All Messages unable to find sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.…

2024年不可错过的7款最佳UI和UX设计工具推荐

在数字产品的成功中&#xff0c;用户界面 (UI) 和用户体验 (UX) 都起着至关重要的作用。UI 和 UX 是网页设计中相互补充的两个重要方面。UI 主要关注用户界面的设计&#xff0c;而 UX 则涵盖用户与产品或服务互动时的整体体验。在本文中&#xff0c;我们将深入探讨 UX 和 UI 的…

vc矩阵计算(转置,点乘,逆矩阵)

vc计算矩阵的转置,矩阵的点乘,矩阵的逆矩阵,参考网上的例子 矩阵点乘的例子: 矩阵逆矩阵计算例子: #include "stdafx.h" #include <math.h> //#include<complex.h> #include <iostream> #include <complex> #include <cstdli…

短视频SDK解决方案,代码逻辑结构清晰,接入便捷

美摄科技凭借其在多媒体处理领域的深厚积累&#xff0c;推出了高效、易用的短视频SDK解决方案&#xff0c;为开发者及内容创作者提供了一站式的短视频创作与编辑工具&#xff0c;让每一份灵感都能轻松转化为引人入胜的视觉盛宴。 一、技术领先&#xff0c;打造极致体验 美摄科…

非局部均值降噪算法(NLM)原理及实现

文章目录 一、概述二、算法原理三、算法流程四、MATLAB实现五、C实现参考文献 一、概述 在日常生活中&#xff0c;最常见的 CT 图像噪声是高斯白噪声。目前&#xff0c;针对高斯白噪声的处理方法&#xff0c;主要有空间域中的以平滑为基本思想的均值滤波、高斯滤波、局部滤波等…

案例研究丨MaxKB+Ollama:深圳市公共信用中心探索信用服务创新

深圳市公共信用中心隶属于深圳市市场监督管理局&#xff0c;主要负责对外提供深圳市企业公共信用信息报告查询和深圳市企业注册登记档案查询等服务。作为深圳市信用信息的权威发布机构&#xff0c;深圳市公共信用中心一直致力于为公众提供准确、及时的信用信息服务。 深圳信用…

2024年医疗行业关键词:精益管理

随着医疗技术的飞速发展、患者需求的日益多元化以及医疗资源的日益紧张&#xff0c;精益管理作为一种高效、科学的管理模式&#xff0c;正逐步成为医疗行业转型升级的关键驱动力。具体表现如深圳天行健企业管理咨询公司下文所述&#xff1a; 1. 优化服务流程 首先&#xff0c;…

Windows电脑本地安装跨平台文生音乐AI应用MusicGPT详细教程

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 今天和大家分享一下在Windows系统电脑上本地快速部署一个文字生成音乐的AI创作服务MusicGPT&#xff0c;并结合cpolar内网穿透工具实现随时随地远程访问使用进行AI音…

(一) 初入MySQL 【认识和部署】

前置资源 一、数据库概述 1.1、数据库基本概念 数据(Data) 描述事物的符号记录称为数据。数字、文字、图形、图像、声音、档案记录等都是数据。数据是以“记录”的形式按照统一的格式进行存储的&#xff0c;而不是杂乱无章的。 相同格式和类型的数据统一存放在一起&#xff0…

阿里云OSS文件存储

文章目录 参考准备创建bucketendpoint 和 bucket域名的访问路径AccessKey和OSS的开发文档 Springboot整合OSS引入依赖AliyunOssConfigAliyunOssPropertiesapplicatioin.yml简单上传和下载使用签名URL进行临时授权访问生成以PUT方法访问的签名URL来上传文件通过签名URL临时授权简…