uniapp对接ChatGPT 简单实现对话功能
最近很火的ChatGPT来了!我也是做了一个最最基础的模型,让大家更通俗易懂!
先看效果:
接下来直接上代码:
<template>
<view class="content">
<view class="text-area">
<textarea class="aa" placeholder-style="color:#F76260" placeholder="智能提问" v-model='title' />
<button class="button" @click="getAi">提问</button>
</view>
<view class="answer">
<textarea disabled class="aa cc" placeholder-style="color:#F76260" placeholder="回答" v-model='answer' />
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '列举几条法律',
answer: "",
}
},
onLoad() {
// this.getAi()
},
methods: {
getAi() {
let that = this
console.log(this.title, 8888)
if (!this.title) {
uni.showToast({
title: '请先输入问题!',
});
return
}
let answer = '正在思考请稍后...'
let index = 0;
that.answer = ''
let interval = setInterval(function() {
that.answer += answer[index];
index++;
// 当打印完成时,清除定时器
if (index >= answer.length) {
clearInterval(interval);
}
},
150); // 每隔50毫秒打印一个字符
let dataVal = JSON.stringify({
"prompt": that.title,
"max_tokens": 2048,
"temperature": 0.5,
"top_p": 1.0,
"frequency_penalty": 0.8,
"presence_penalty": 0.0,
"model": "text-davinci-003"
});
// {
// "model": "text-davinci-003",
// "prompt": "",
// "temperature": 0.5,
// "max_tokens": 60,
// "top_p": 1.0,
// "frequency_penalty": 0.8,
// "presence_penalty": 0.0
// }
uni.request({
url: 'https://api.openai.com/v1/completions', //仅为示例,并非真实接口地址。
data: dataVal,
method: "POST",
header: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-xxxxxxxxxxxxx', //自定义请求头信息
},
success: (xhr) => {
if (xhr.statusCode === 200) {
console.log('xhr', xhr)
var json = xhr.data;
var response = json.choices[0].text;
// 将CHATGPT的返回值输出到文本框
var indexxx = 0;
that.answer = ''
// 创建一个定时器,每隔一段时间打印一个字符
var intervals = setInterval(function() {
that.answer += response[indexxx];
indexxx++;
// 当打印完成时,清除定时器
if (indexxx >= response.length) {
clearInterval(intervals);
}
},
50); // 每隔50毫秒打印一个字符
}
console.log(xhr);
}
});
},
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {}
.aa {
border: solid 1px red;
}
.cc {
height: 600rpx;
}
.button {
width: 300rpx;
height: 100rpx;
margin: 30rpx auto;
background: red;
line-height: 100rpx;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
最后附一个openAI的地址(科学):
还有不明白的欢迎留言,我会一一解答~
感兴趣的小伙伴去试试吧~
uniapp对接ChatGPT 简单实现对话功能的更多相关文章
- linux下实现两人、三人无序对话功能
序:引子 对话功能实际上就是利用管道见得通信.最原始的是一方发另一方收,不能进项交互,发送方的代码如下: /*============================================ ...
- python 全栈开发,Day129(玩具开机提示语,为多个玩具发送点播,聊天界面,app录音,app与服务器端文件传输,简单的对话)
一.玩具开机提示语 先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.2.zi ...
- 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人
最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...
- ASP.NET MVC 学习4、Controller中添加SearchIndex页面,实现简单的查询功能
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-method ...
- Web---创建Servlet的3种方式、简单的用户注册功能
说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...
- js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2
js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...
- Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能
本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...
- Django文件上传三种方式以及简单预览功能
主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...
- 运用socket实现简单的ssh功能
在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是: ...
- Jenkins实现简单的CI功能
步骤一:安装JDK.Tomcat,小儿科的东西不在此详细描述 步骤二:下载安装Jenkins下载链接:https://jenkins.io/download/ 步骤三:将下载的jenkins.war部 ...
随机推荐
- 电脑微信小程序抓包
电脑微信小程序抓包 在渗透的过程中,对于网站找不出什么漏洞的时候我们就可以,对目标进行小程序和公众号漏洞的发掘 0x01 设置微信代理使用Burp抓取数据包 发现我们抓取的数据包很多都是乱码 Prox ...
- 如何在WSL下交叉编译openwrt
首先我们需要准备一个大小写敏感的文件夹. 然后拉取代码,并且执行代码的先决条件脚本. 注意,如果过程中某项条件不符,你可能要临时修复. 假如下图的组件判定失败(即出现ok=>fail) 那么你就 ...
- JSP第十一次作业
1.第十二周上机作业(邮件功能)的控制层代码改用为servlet实现.2.学习通发布了考试,截止到本周六. com.gd.dao BaseDao 1 package com.gd.dao; 2 3 ...
- NetCoreWebApi3.0-------MiniProfiler使用教程
参考博客:ASP.NET Core WebAPI中的分析工具MiniProfiler - LamondLu - 博客园 (cnblogs.com) 注意事项: 1.不要盲目copy别人的代码 var ...
- 登山(等级考试4级 测试卷 T1)
这道题目与 重启系统(等级考试4级 2021-03 T4)重启系统(等级考试4级 2021-03 T4) - 王浩泽 - 博客园 (cnblogs.com) 非常相似,于是乎呢就在这个程序上面改一改就 ...
- 剑指Offer 05. 替换空格(java解题)
目录 1. 题目 2. 解题思路(通用 3. 数据类型功能函数总结 4. java代码 1. 题目 请实现一个函数,把字符串 s 中的每个空格替换成%20. 示例 1: 输入:s = "We ...
- HTTPS基础原理和配置 - 1
近期又碰到了SSL相关的事情, 就心血来潮开个新专题 - <HTTPS基础原理和配置> 本文是第一篇文章, 主要介绍SSL TLS加密协议的相关内容. 加密协议历史概要 SSL TLS加密 ...
- 亲测有效! Super PhotoCut Pro 超级抠图工具 V2.8.8 for mac 破解版
亲测有效! Super PhotoCut Pro 超级抠图工具 V2.8.8 for mac 破解版 Super PhotoCut 是一款专业的,非常易于使用的图片抠图工具.它能够准确地覆盖你想要去 ...
- 高效字符串匹配算法——BM 算法详解(C++)
定义 BM 算法是由 Boyer 和 Moore 两人提出的一种高效的字符串匹配算法,被认为是一种亚线性算法(即平均的时间复杂度低于线性级别),其时间效率在一般情况下甚至比 KMP 还要快 3 ~ 5 ...
- Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题
Spring是目前Java开发中最流行的框架了,它的事务管理我们在开发中常常的用到,但是很多人不理解它事务的原理,导致开发中遇到事务方面的问题往往都要用很长的时间才能解决,下面就带着大家去深入了解Sp ...