https://yn.dinnuokeji.com/Uploads/2023-05-17/22344442233233.txt //php文件
<?php
header("Content-type: text/html; charset=utf-8");
header('Access-Control-Allow-Origin:*');
header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods:POST,GET');
header('Access-Control-Expose-Headers:*');
$appkey = "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";
$str = $_GET['prompt'];
$array = array(
"prompt" => $str,
"max_tokens"=>2048,
"temperature"=>0.5,
"top_p"=>1,
"frequency_penalty"=>0,
"presence_penalty"=>0,
"model"=>"text-davinci-003"
);
$url = "https://api.openai.com/v1/completions";
$result = https_request($url, $array, $appkey);
if (isset($result['choices'])) {
echoJson($result['choices'][0]['text'], 200, '这就是我的回答!');
}else{
echoJson('', 201, 'chatgpt累了,过一会再试试吧!');
}
function echoJson($data, $status, $msg = "")
{
echo json_encode(['data' => $data, 'msg' => $msg, 'status' => $status]);
exit();
}
function https_request($url, $data, $appkey, $json = true)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {
if ($json && is_array($data)) {
$data = json_encode($data);
}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
if ($json) {
// 发送JSON数据
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array(
'Authorization:Bearer ' . $appkey,
'Content-Type: application/json'
)
);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_PROXY, "pr.roxlabs.cn");
curl_setopt($curl, CURLOPT_PROXYPORT, 4600);
curl_setopt($curl, CURLOPT_PROXYUSERPWD, "user-hyz6869131-sessid-Ffa0WPXd-sesstime-1-keep-true:hyz6865968");
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
$res = curl_exec($curl);
$errorno = curl_errno($curl);
if ($errorno) {
return array('errorno' => false, 'errmsg' => $errorno);
}
curl_close($curl);
return json_decode($res, true);
}
//前端代码
.xchat {
position: fixed;
z-index: 9999999;
bottom: 0;
top: 180px;
left: 25px;
width: 380px;
height: 490px;
background: rgb(252, 252, 252);
box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 40px;
border-radius: 5px;
overflow: hidden;
}
.xtop {
width: 100%;
height: 60px;
background-image: linear-gradient(122deg,#1b4bf7 0,#2146f7 41%,#1d41f7 100%);
box-sizing: border-box;
padding: 10px;
position: relative;
}
.xlogo {
float: left;
width: 40px;
height: 40px;
border-radius: 50%;
}
.xsname {
float: left;
height: 40px;
font-size: 14px;
color: white;
line-height: 40px;
margin-left: 10px;
}
.xclose {
position: absolute;
top:2px;
right:3px;
cursor: pointer;
width:20px;
height:20px;
}
.smallclose {
position: absolute;
top:2px;
right:22px;
cursor: pointer;
width:18px;
height:18px;
}
.xmid {
width: 100%;
height: 320px;
box-sizing: border-box;
padding: 10px;
overflow-y: auto;
background:#f3f3f3;
}
.xmsg {
max-width: calc(100% - 50px);
height: auto;
overflow: hidden;
margin: 0 0 10px 0;
}
.xmid > div {
overflow: hidden;
}
.xfrom {
width: 100%;
height: 25px;
line-height: 16px;
font-size: 12px;
color: rgb(178, 178, 178);
margin: 0 0 3px 0;
display:flex;
flex-wrap:nowrap;
justify-content: flex-start;
align-items: center;
}
.xmessage {
display: inline-block;
max-width: 100%;
height: auto;
border-radius: 3px;
padding: 10px;
box-sizing: border-box;
font-size: 13px;
text-align: justify !important;
word-break: break-all;
line-height: 22px;
}
.xa > .xmessage {
color: #333;
background: white;
}
.xa {
float: left;
}
.xb {
float: right;
text-align: right;
}
.xb > p {
text-align: right;
}
.xb > .xmessage {
color: white;
background-image: linear-gradient(122deg,#1d42f5 0,#1e4ef8 41%,#1b4bf7 100%);
}
.xbottom {
width: 100%;
height: 98px;
box-sizing: border-box;
border-top: 1px solid #eee;
}
.xsendmsg {
width: 100%;
height: 58px;
box-sizing: border-box;
outline: none;
resize: none;
padding: 10px;
border: none;
background: rgb(252, 252, 252);
font-size: 13px;
font-family: auto;
color: #333;
}
.xgsend {
width: 100%;
height: 40px;
background-color: transparent;
box-sizing: border-box;
padding: 4px 10PX;
}
.xsend {
float: right;
width: 60px;
height: 32px;
line-height: 32px;
display: inline-block;
vertical-align: middle;
font-size: 13px;
cursor: pointer;
text-align: center;
opacity: 1;
color: white;
border-width: 0px;
border-style: initial;
border-color: initial;
border-image: initial;
outline: none;
border-radius: 3px;
text-decoration: none;
background: #1d41f7;
}
.startchat {
width: 62px;
height: 62px;
border: none;
display: none;
border-radius: 50%;
background: rgb(13, 175, 144);
outline: none;
cursor: pointer;
position: fixed;
right: 120px;
bottom: 100px;
box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 14px;
}
<div class="xchat" id="xchatbox">
<div class="xtop" id="xtopboxchat">
<img class="xlogo" src="http://sbjd.dinnuokeji.com/uploads/20230426/05c413714ab75558b9265cd60212466f.png">
<p class="xsname" id="xsnametxt">CHATGPT智能聊天机器人体验…自由问答</p>
<img class="smallclose" src="http://sbjd.dinnuokeji.com/uploads/20230331/zuixiaohua.png" onclick="zuixiaohua(this)">
<img class="xclose" src="http://sbjd.dinnuokeji.com/uploads/20230331/closeallvPT.png" onclick="closeall(this)">
</div>
<div class="xmid">
<div class="xmsg xa">
<p class="xfrom">
<img src="http://sbjd.dinnuokeji.com/uploads/20230426/05c413714ab75558b9265cd60212466f.png" style="width:20px;height:20px;border-radius:50%;margin-right:5px;">AI 5:50 PM</p><p class="xmessage" id="xmessage_idundefined">
您..想问我什么...
</p>
</div>
</div>
<div class="xbottom">
<textarea rows="3" class="xsendmsg" id="xsendmsgval" placeholder="请输入"></textarea>
<div class="xgsend">
<button type="button" class="xsend" onclick="sendChatclick()">发送</button>
</div>
</div>
</div>
$('.xsendmsg').keyup(function (event) {
var e = event.keyCode || event.which;
if (e === 13) {
sendChatclick();
}
});
async function sendChatclick(){
var cont = $('.xsendmsg').val();
var newcont = cont.trim().replace(/\s/g,"");
var newstr = "";
if (newcont.replace(/ /g, '').length > 0) {
$('.xsendmsg').val('');
renderMessages(cont, 'xb', 'send');
var data = JSON.stringify({
"max_tokens": 2048,
"temperature": 0.5,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"model": "text-davinci-003"
});
flag++;
renderMessages('正在输入...','xa','send',flag);
$.ajax({
type: "post",
dataType: "json",
url: '/submitgptapi.php?prompt='+cont,
data: {data:"uiapp"},
success: function (result) {
if(result.status == 200){
newstr= result.data;
var vnewstr = newstr.replaceAll('\n','<br/>');
vnewstr = vnewstr.replaceAll('\n','<br/>');
vnewstr = vnewstr.replaceAll('<br/><br/>','<br/>');
vnewstr = vnewstr.replace('<br/>','');
renderMessages(vnewstr, 'xa', 'send',flag);
}else{
newstr = "网络错误 请重新试一下";
renderMessages(newstr, 'xa', 'send',flag);
}
}
});
await printMessageinfo("xmessage_id"+flag,'输入中...');
return;
} else {
$('.xsendmsg').val('');
layer.tips('发送内容不能为空','#xsendmsgval',{tips:1,time:1500});
}
}
function printMessageinfo(id,message){
clearInterval(interval);
var responseText = document.getElementById(id);
responseText.innerHTML = "";
if(responseText){
var index = 0;
window.interval = setInterval(function() {
responseText.innerHTML += message[index];
index++;
if (index >= message.length) {
clearInterval(interval);
responseText.innerHTML = "";
printMessage(id,'正在输入...');
}
},
350);
}else{
return false;
}
}
function printMessage(id,message){
var responseText = document.getElementById(id);
if(responseText){
var index = 0;
window.interval = setInterval(function() {
responseText.innerHTML += message[index];
index++;
if (index >= message.length) {
clearInterval(interval);
responseText.innerHTML = "";
printMessage(id,'正在输入...');
}
},
350);
}else{
return false;
}
}
function renderMessages(omsg, xcls, type,flag) {
var odate = new Date();
var headpath = $("#headiconmetoo").attr('src');
var $pa;
if(omsg == "正在输入..."){
omsg = "";
}
if (xcls == 'xa') {
var $ele = $('<div class="xmsg ' + xcls + '">' +
'<p class="xmessage" id="xmessage_id'+flag+'">' + omsg + '</p>' +
'</div>');
$pa = $('<p class="xfrom"><img src="http://sbjd.dinnuokeji.com/uploads/20230426/05c413714ab75558b9265cd60212466f.png" style="width:20px;height:20px;border-radius:50%;margin-right:5px;">AI ' + odate.toLocaleString('en-US', {
hour: 'numeric',
minute: 'numeric',
hour12: true
}) + '</p>');
var flagcount = $("#xmessage_id"+flag).length;
if(flagcount > 0){
clearInterval(interval);
$("#xmessage_id"+flag).html(omsg);
} else {
$ele.prepend($pa);
var $div = $('<div></div>');
$div.append($ele);
$(".xmid").append($div).scrollTop(999999);
printMessage("xmessage_id"+flag,'正在输入...');
}
} else {
var $ele = $('<div class="xmsg ' + xcls + '">' +
'<p class="xmessage">' + omsg + '</p>' +
'</div>');
$pa = $('<p class="xfrom"><p class="xfrom"><img src="'+headpath+'" style="width:20px;height:20px;border-radius:50%;margin-right:5px;">' + odate.toLocaleString('en-US', {
hour: 'numeric',
minute: 'numeric',
hour12: true
}) + '</p>');
$ele.prepend($pa);
var $div = $('<div></div>');
$div.append($ele);
$(".xmid").append($div).scrollTop(999999);
}
}