当前位置: 首页 > news >正文

AI模拟器

一、介绍
基于鸿蒙Next模拟一个ai对话过程
二、场景需求
客户服务、数据分析、个性化推荐、图像和视频处理、智能家居、交通管理、教育行业、制造等等。

三、业务步骤
第一步:输入框提出问题,发送问题,
第二部:下次发送,先清除之前提问,避免重复提问
第三步:获取ai反馈相关问题答案,目前虚拟数据,可自行设置答案结果
四、效果展示

五:代码展示:

import { MsgRoleEnum } from ‘…/common/CommonConstant’
import { MsgP, textShow } from ‘…/common/MsgPassageway’
import { HidingHeadVerseData } from ‘…/database/HidingHeadVerse’@Entry
@Component
struct Index02{
@State textShowArr: MsgP[] = textShow
@State textMsg: string = ‘’
@State inputValue: string = ‘’//获取输入文本数据
@State inputText: string = ‘’ // 输入框展示文本数据
@State btnMsg: string = “发送”
@State btnInputShow: boolean = true // 清除/发送build(){
Column(){
List(){
ForEach(this.textShowArr,(item:MsgP,index:number)=>{
if (item.role === MsgRoleEnum.Mine) {
ListItem(){
Row(){
//用户消息
Row(){
Text(item.msg)
.fontSize(16)
.textAlign(TextAlign.End)
.padding(6)
.backgroundColor(0xffcbebff)
.borderRadius(4)
}.width(“67%”)
.justifyContent(FlexAlign.End)
//用户头像
Image($r(‘app.media.ic_user_portrait’)).width(30).height(30).margin({left:10,right:10})}.width("100%").padding({top:4,bottom:4}).justifyContent(FlexAlign.End).alignItems(VerticalAlign.Top)}}else {ListItem(){Row(){//AI头像Image($r('app.media.ic_gallery_ai_photography_on')).width(30).height(30).margin({left:10,right:10})//AI返回消息Row(){Text(item.msg + this.textMsg).fontSize(16).textAlign(TextAlign.Start).padding(6).backgroundColor(0xffffff).borderRadius(4)}.width("67%").justifyContent(FlexAlign.Start)}.width("100%").padding({top:4,bottom:4}).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Top)}}},(item:string)=>item)}Blank()//填充容器组件//底部输入框if (this.btnInputShow){//底部输入框Row(){//输入框TextInput({text:this.inputText,placeholder:"请输入您的关键词~"}).width("80%").backgroundColor(0x999999).height(40).margin({left:12,right:12}).borderRadius(4).backgroundColor(0xeeeeee).onChange((value:string)=>{this.inputValue = valuethis.inputText = value})//发送图标Text(this.btnMsg).margin({right:12}).fontColor(0x0091FF).onClick(()=>{if (this.btnMsg === "清除"){this.textShowArr = []this.btnMsg = "发送"}else {this.textMsg = ""this.HidingHeadVerseFun()}})}.width("100%").height(70).backgroundColor(0xffffff).alignItems(VerticalAlign.Center).justifyContent(FlexAlign.Start)}}
.width("100%")
.height("100%")
.borderRadius({ bottomLeft:12,bottomRight:12 })
.backgroundColor(0xeeeeee)
.justifyContent(FlexAlign.Start)
}HidingHeadVerseFun(){
if (this.inputValue !== “”) {
this.textShowArr.push({
role:0,
msg:this.inputText
})
this.inputText = “”
this.btnMsg = “清除”
this.Search_HidingHeadVerseFun()
}else {
console.info(“输入文本数据为空”)
}
}
//打字机效果
HidingHeadVerseTypewriter(v_idx:number){
if (v_idx == 999) {
let strLen = “我还在成长中,试试以下关键词:时间的片段、陌生的信…”
let idx = 0
let timer = setInterval(()=>{
if (idx < strLen.length) {
this.textMsg += strLen[idx++];
} else {
clearInterval(timer);
}
},100)
}else {
let strLen = HidingHeadVerseData[v_idx].title as string + HidingHeadVerseData[v_idx].content as string
let idx = 0
let timer = setInterval(()=>{
if (idx < strLen.length) {
this.textMsg += strLen[idx++];
} else {
clearInterval(timer);
}
},100)
}
}Search_HidingHeadVerseFun(){
let searchStr = this.inputValue.includes(“时间的片段”) || this.inputValue.includes(“时间”)
let searchStr2 = this.inputValue.includes(“陌生的信”) || this.inputValue.includes(“陌生的信”)
if (searchStr) {
this.textShowArr.push({
role: 1,
msg: “”
})
this.HidingHeadVerseTypewriter(0)
}if (searchStr2){
this.textShowArr.push({
role: MsgRoleEnum.Other,
msg: “”
})
this.HidingHeadVerseTypewriter(2)

六、代码结构及原理:
1.整体结构:
使用了ArkTS的装饰器语法,如@Entry和@Component组件。使用了ArkTS的渲染语法if/else等
2.状态管理:
组件使用@State装饰器定义了几个响应式状态变量,如btnInputShow这些变量的变化会自动触发UI的更新。
3.UI结构:
界面使用嵌套的Column和Row组件构建。使用了ForEach遍历循环数据信息。
4.数据传递:
当点击"发送"按钮时,会调用HidingHeadVerseFun()回调函数,先获取用户问题数据,然后在数据库中对比,调用Search_HidingHeadVerseFun()回调函数,获取答案数据信息。

总的来说,这段代码展示了如何使用ArkTS和ArkUI框架创建一个交互式的ai问答界面。它利用了声明式UI、响应式编程和组件化的概念,使得代码结构清晰,易于理解和维护。

相关文章:

AI模拟器

一、介绍 基于鸿蒙Next模拟一个ai对话过程二、场景需求 客户服务、数据分析、个性化推荐、图像和视频处理、智能家居、交通管理、教育行业、制造等等。 三、业务步骤 第一步&#xff1a;输入框提出问题&#xff0c;发送问题&#xff0c; 第二部&#xff1a;下次发送&#xff0…...

【C++二分查找 前缀和】1658. 将 x 减到 0 的最小操作数

本文涉及的基础知识点 C二分查找 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1658. 将 x 减到 0 的最小操作数 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&am…...

验证实战知识点--(2)

1.seq中的pre_start pre_start 是 uvm_sequence 类的一个虚拟方法&#xff0c;用于在序列开始执行之前进行初始化和设置。这个方法在调用 start 方法前立即执行&#xff0c;提供了一个执行自定义初始化代码的机会。 start 方法用于启动序列的执行&#xff0c;而 pre_start 可以…...

【图文并茂】ant design pro 如何优雅地把删除和批量删除功能合并到一起,并抽出来成为组件

如上图所示&#xff0c;其实批量删除和删除应该算是一个功能 只是删除一个或多个的区别 那么接口应该用的同一个 删除一个的时候呢&#xff0c;就传 一个对象_id 过去 删除多个的时候&#xff0c;就传 多个 对象 _id 的数组过去 后端 const deleteMultipleRoles handleAs…...

监控篇之利用dcgm-exporter监控GPU指标并集成grafana大盘

一、应用场景 当环境中包含GPU节点时&#xff0c;需要了解GPU应用使用节点GPU资源的情况&#xff0c;例如GPU利用率、显存使用量、GPU运行的温度、GPU的功率等。 在获取GPU监控指标后&#xff0c;用户可根据应用的GPU指标配置弹性伸缩策略&#xff0c;或者根据GPU指标设置告警…...

获取当前路由器的外网IP(WAN IP)

GPT-4o (OpenAI) 获取当前路由器的外网IP&#xff08;WAN IP&#xff09;可以通过以下几种方法&#xff1a; 1. 访问路由器管理页面&#xff1a; - 通常路由器的管理页面可以通过在浏览器中输入路由器的IP地址来访问&#xff08;例如&#xff0c;192.168.0.1 或 192.168.1…...

QT Creator UI中文输入跳出英文

笔者用的是QQ拼音输入&#xff0c;发现只要在UI中加入了QTableWidget&#xff0c;输入多几次中文&#xff0c;就会跳入英文。 后面改用搜狗拼音稍微好一些&#xff0c;但是偶尔还是插入了空格。...

Java基础核心知识学习笔记

方法重载 请记住下面重载的条件 方法名称必须相同。参数列表必须不同&#xff08;个数不同、或类型不同、参数类型排列顺序不同等&#xff09;。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。重载是发生在编译时的&#xff0c;因为编译器可以根…...

Leetcode 237.19.83.82 删除链表重复结点 C++实现

Leetcode 237. 删除链表中的节点 问题&#xff1a;有一个单链表的head&#xff0c;我们想删除它其中的一个节点node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点head。链表的所有值都是唯一的&#xff0c;并且保证给定的节点 node不是链表中的最后一个节点。删除…...

Spring OAuth2.0资源服务源码解析

主要分析spring-security-oauth2-resource-server的源码&#xff0c;介绍OAuth2.0授权码模式下Spring Boot OAuth2资源服务的运行流程&#xff0c;分析其是如何对令牌进行认证的&#xff0c;并展示资源服务配置 代码版本信息 Spring Boot 2.7.10 spring-security-oauth2-resou…...

JavaScript 原型与原型链

原型与原型链 要讨论原型与原型链&#xff0c;就要先了解什么是 构造函数 &#xff0c;构造函数与普通函数没有太大的区别&#xff0c;使用 new关键字 创建实例对象的函数&#xff0c;就叫做构造函数。 在js中&#xff0c;每一个函数类型的数据都有一个 .prototype 的属性&am…...

Spring Boot实现简单的Oracle数据库操作

使用到的技术&#xff1a; 1. Spring Boot&#xff1a;用于简化Spring应用的开发。 2. Dynamic DataSource&#xff1a;实现动态多数据源的访问和切换 3. Oracle JDBC Driver&#xff1a;与Oracle数据库进行连接和交互。 4. Mybatis-Plus&#xff1a;简化SQL映射和数据库访问。…...

微软发布 Phi-3.5 系列模型,涵盖端侧、多模态、MOE;字节 Seed-ASR:自动识别多语言丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...

笔记:Echarts柱状图 实现滚轮条 数据太多

效果&#x1f447;&#x1f447;&#x1f447; 配置&#xff1a;&#x1f447; let option {dataZoom: [{type: "slider",show: true,zoomLock: true,start: 0,end: 20,bottom: 60,height: 10,textStyle: {color: "transparent",fontSize: 9,},fillerColo…...

嵌入式学习day17(数据结构)

大纲 数据结构、算法数据结构&#xff1a; 1. 线性表&#xff1a;顺序表、链表&#xff08;单向链表&#xff0c;单向循环链表&#xff0c;双向链表&#xff0c;双向循环链表&#xff09;、栈&#xff08;顺序栈&#xff0c;链式栈&#xff09;、队列&#xff08;循…...

网站怎么做敏感词过滤,敏感词过滤的思路和实践

敏感词过滤是一种在网站、应用程序或平台中实现内容审查的技术&#xff0c;用于阻止用户发布包含不适当、非法或不符合政策的内容。我们在实际的网站运营过程中&#xff0c;往往需要担心某些用户发布的内容中包含敏感词汇&#xff0c;这些词汇往往会导致我们的网站被用户举报&a…...

【峟思】如何使用投入式水位计才能确保测量准确性

在水利、环保、工业监测等众多领域&#xff0c;水位测量是一项至关重要的任务&#xff0c;它不仅直接关系到水资源的合理利用与保护&#xff0c;还影响到防洪、供水、排水等多个方面的安全与效率。投入式水位计作为一种常见的水位测量工具&#xff0c;以其结构简单、测量准确、…...

供应链管理系统(SCM) —— 企业物流的智能枢纽

SAP 供应链管理系统以打造数字化和集成化的供应链管理平台为使命&#xff0c;将传统的仓储管理系统、制造执行系统、产品管理系统等软件进行升级和上云管理&#xff0c;为企业提供面向客户、合作伙伴及员工的数字化SCM系统平台。 SAP SCM系统从设计到运维&#xff0c;全面优化供…...

计算机视觉(CV)技术的优势和挑战。

计算机视觉&#xff08;CV&#xff09;技术在许多领域中具有广泛的应用&#xff0c;并且具有一些优势和挑战。 优势&#xff1a; 1. 高效性&#xff1a;CV技术能够快速处理大量的图像和视频数据&#xff0c;以实现实时的分析和决策。 2. 自动化&#xff1a;CV技术可以自动化地…...

数据库MySQL多表设计、查询

目录 1.概述 2.一对多 3.一对一 4.多对多 5.多表查询 5.1内连接 5.2外连接 5.3子查询 1.概述 项目开发中,在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个…...

Stable-Diffusion-v1-5-archive生产环境部署:异常自动拉起+日志监控+多用户隔离方案

Stable-Diffusion-v1-5-archive生产环境部署&#xff1a;异常自动拉起日志监控多用户隔离方案 1. 引言 如果你正在寻找一个稳定、可靠、易于管理的Stable Diffusion v1.5生产环境部署方案&#xff0c;那么你来对地方了。SD1.5作为文生图领域的经典模型&#xff0c;虽然新模型…...

告别重复造轮子:用快马ai一键生成代码管理工具提升效率

作为一个经常需要复用代码片段的开发者&#xff0c;我最近发现了一个能显著提升工作效率的方法——用InsCode(快马)平台快速生成代码管理工具。这个方案完美解决了我在日常开发中遇到的三个痛点&#xff1a; 重复代码难管理&#xff1a;每次遇到相似功能都要翻历史项目或重新搜…...

从异或到AES:Java类文件加密的3种实现方式对比(含性能测试)

从异或到AES&#xff1a;Java类文件加密的3种实现方式对比&#xff08;含性能测试&#xff09; 在Java开发领域&#xff0c;代码保护始终是开发者关注的焦点。当项目涉及商业机密或核心算法时&#xff0c;防止class文件被反编译成为刚需。本文将深入剖析三种不同安全级别的clas…...

如何在广告泛滥的时代找到纯粹的音乐净土?铜钟音乐的极简听歌方案

如何在广告泛滥的时代找到纯粹的音乐净土&#xff1f;铜钟音乐的极简听歌方案 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特&#xff01;(密码重置功能已回归) 项目地址: https://gitcode.com/Gi…...

Visio网络拓扑图绘制实战:从基础操作到高级定制

1. Visio网络拓扑图绘制入门指南 第一次接触Visio画网络拓扑图时&#xff0c;我也被那些复杂的图标和连接线搞得头晕眼花。但用顺手后发现&#xff0c;这玩意儿比PS简单多了&#xff0c;就像用Word画图一样自然。先说说最基础的准备工作&#xff1a;安装Visio时记得勾选"网…...

SD2.0时钟与时序:从基础模式到高速传输的实战解析

1. SD2.0时钟与时序基础入门 第一次接触SD2.0规范时&#xff0c;我也被那些密密麻麻的时序参数搞得头晕眼花。直到在项目里实际调试SD卡读写失败的问题后&#xff0c;才发现理解时钟和时序的配合有多重要。简单来说&#xff0c;时钟就像两个人对话的节奏&#xff0c;而时序则是…...

千亿之后,华为与伙伴的下一场战役

在AI加速演进的背景下&#xff0c;“伙伴华为”体系正全面转向AI时代的运行逻辑。文&#xff5c;赵艳秋编&#xff5c;牛慧在华为中国合作伙伴大会2026上&#xff0c;最热的关键词无疑是“AI”、“智能体&#xff08;Agent&#xff09;”&#xff0c;以及现象级产品OpenClaw。会…...

3个实用技巧:Qwen Code多语言支持让开发者效率提升40%

3个实用技巧&#xff1a;Qwen Code多语言支持让开发者效率提升40% 【免费下载链接】qwen-code Qwen Code is a coding agent that lives in the digital world. 项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code 在全球化协作日益频繁的开发环境中&#xff…...

别再死记硬背了!用‘抽奖游戏’和‘股票涨跌’轻松搞懂马尔可夫链的几种变体

用生活故事解锁马尔可夫链的三种高级玩法 想象你正站在商场抽奖转盘前&#xff0c;每次转动都可能改变你的命运——这像极了马尔可夫链中状态的随机跃迁。但真实世界远比简单转盘复杂&#xff1a;朋友的喜怒无常像隐藏在表情背后的秘密&#xff08;隐马尔可夫模型&#xff09;…...

BERT文本分割-中文-通用领域开发者指南:源码路径/usr/local/bin/webui.py解析

BERT文本分割-中文-通用领域开发者指南&#xff1a;源码路径/usr/local/bin/webui.py解析 1. 项目简介 随着在线教学、远程会议等应用的普及&#xff0c;口语化文档的数量正在快速增长。这些文档通常以会议记录、讲座内容、采访稿等形式存在。但通过自动语音识别系统生成的文…...