c5_labsci/web/admin/demo/dyn/openai.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>