97 lines
3.8 KiB
HTML
97 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<title></title>
|
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
|
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css">
|
|
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
|
|
<style>
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container">
|
|
<div>
|
|
<div>
|
|
<ciy-textarea com="prompt"></ciy-textarea>
|
|
<a onclick="llm(this)" class="lang btn">提问</a>
|
|
</div>
|
|
</div>
|
|
<div id="id_result" class="markdown-body"></div>
|
|
</div>
|
|
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
|
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
|
<script type="text/javascript" src="/jscss/marked.min.js"></script>
|
|
<script type="text/javascript" src="../../common.js"></script>
|
|
<script type="text/javascript">
|
|
'use strict';
|
|
var Glob = {};
|
|
ciyfn.pageload(function () {
|
|
marked.setOptions({
|
|
gfm: true, // 启用 GitHub Flavored Markdown
|
|
breaks: true, // 自动转换换行符
|
|
sanitize: false // 禁用 HTML 过滤(确保内容来源可信)
|
|
});
|
|
ciycmp({ dom: $5('[com=prompt]'), autoheight: true, value: '' });
|
|
});
|
|
function llm(dom) {
|
|
if (Glob.llming)
|
|
return;
|
|
var opn = {};
|
|
opn.url = 'llm';
|
|
opn.post = ciyfn.getform(dom);
|
|
if (!opn.post.prompt)
|
|
return ciyfn.alert('请输入问题');
|
|
var mpt = [];
|
|
mpt.push({
|
|
"type": "image_url", "image_url": {
|
|
url: "https://tob.ciy.cn/ud/1.jpg"
|
|
},
|
|
});
|
|
mpt.push({
|
|
"type": "image_url", "image_url": {
|
|
url: "https://tob.ciy.cn/ud/2.jpg"
|
|
},
|
|
});
|
|
mpt.push({ "type": "text", "text": opn.post.prompt });
|
|
opn.post.messages = [];
|
|
opn.post.messages.push({ 'role': 'system', 'content': '你是释迦牟尼佛,你的所有回答,都要用佛学用语,每个回答要要有深刻的奥义' });
|
|
opn.post.messages.push({ 'role': 'user', 'content': opn.post.prompt });//mpt
|
|
if (Glob.sse)
|
|
Glob.sse.close();
|
|
$5('#id_result').html('');
|
|
$5(dom).text('回答中...').addClass('disabled');
|
|
Glob.llming = true;
|
|
var fullContent = '';
|
|
console.log(opn);
|
|
Glob.sse = new ciyclass.sse(opn);
|
|
Glob.sse.recvmsg = function (data, id) {
|
|
if (data === '[DONE]') {
|
|
Glob.sse.close();
|
|
console.log(fullContent);
|
|
$5(dom).text('提问').removeClass('disabled');
|
|
Glob.llming = false;
|
|
return;
|
|
}
|
|
var json = ciyfn.tojson(data);
|
|
if (json.errmsg || json.error) {
|
|
Glob.sse.close();
|
|
$5('#id_result').html('<span style="color:red;">' + data + '</span>');
|
|
$5(dom).text('提问').removeClass('disabled');
|
|
Glob.llming = false;
|
|
return;
|
|
}
|
|
if (!json.choices[0].delta.content)
|
|
return;
|
|
fullContent += json.choices[0].delta.content;
|
|
$5('#id_result').html(marked.parse(fullContent));
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html> |