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

福州建站开发莱芜在线论坛话题莱芜都市网

福州建站开发,莱芜在线论坛话题莱芜都市网,有没有专门做飞卢小说盗版的网站,大型电子商务网站建设成本概述 Kimi是大家常用的一个人工智能助手#xff0c;本文使用Kimi开发文档#xff0c;以node作为后端#xff0c;开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手#xff0c;擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…概述 Kimi是大家常用的一个人工智能助手本文使用Kimi开发文档以node作为后端开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任务。无论是回答问题、处理文件还是进行网络搜索都能提供支持。 开发文档https://platform.moonshot.cn/docs/intro 如下图点击用户中心在API Key管理可以添加key。 在用量限制可查看账户的用量和剩余数量。 图中的相关名字解释如下 并发: 同一时间内我们最多处理的来自您的请求数RPM: request per minute 指一分钟内您最多向我们发起的请求数TPM: token per minute 指一分钟内您最多和我们交互的token数TPD: token per day 指一天内您最多和我们交互的token数 实现 后端实现 后端是通过node的Express框架实现的。 核心实现步骤与代码如下 1. 初始化与安装依赖 # 创建目录 mkdir kimi-server cd kimi-server# 初始化package.json文件 npm init -y# 安装依赖 npm i express openai -S2. 修改package.json 修改package.json文件中的scripts节点的内容如下 scripts: {test: echo \Error: no test specified\ exit 1,dev: nodemon ./app.js,server: pm2 start ./app.js --name kimi },3. app.js const express require(express); const kimiRouter require(./router/kimi.js);const app express();// 自定义跨域中间件 const allowCors function (req, res, next) {res.header(Access-Control-Allow-Origin, req.headers.origin);res.header(Access-Control-Allow-Methods, GET,PUT,POST,DELETE,OPTIONS);res.header(Access-Control-Allow-Headers, Content-Type);res.header(Access-Control-Allow-Credentials, true);next(); }; app.use(allowCors); // 使用跨域中间件app.use(express.static(public));app.use(/kimi, kimiRouter);app.listen(18080, () {console.log(express server running at http://127.0.0.1:18080); }); 4. kimi.js const express require(express); const OpenAI require(openai); const R require(../R); const router express.Router();let r new R();const client new OpenAI({apiKey: 你的key,baseURL: https://api.moonshot.cn/v1, });let history [];async function chat(prompt ) {console.time(prompt, prompt);let response ;if (prompt) {history.push({role: user,content: prompt,});const completion await client.chat.completions.create({model: moonshot-v1-8k,messages: history,});history history.concat(completion.choices[0].message);response completion.choices[0].message.content;} else {response 哈喽你好我是Kimi由 Moonshot AI 提供的人工智能助手。;history.push({role: system,content: response,});}console.log({prompt,response,});console.timeEnd(prompt);return response; }router.get(/chat, async function (req, res) {const { prompt } req.query;const reply await chat(prompt);res.send(r.success({reply: reply,})); });module.exports router;前端页面 1. index.html 前端页面通过CDN引入Vue、Element Plus和markdown.js实现代码如下 html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titlechat/title!-- Import style --link relstylesheet href//unpkg.com/element-plus/dist/index.css /link relstylesheet href./md.css /!-- Import Vue 3 --script src//unpkg.com/vue3/script!-- Import component library --script src//unpkg.com/element-plus/scriptscript src//cdn.jsdelivr.net/npm/marked/marked.min.js/scriptstylehtml,body,#app {height: 100%;margin: 0;padding: 0;}::-webkit-scrollbar {width: 5px;height: 5px;background-color: #eee;}::-webkit-scrollbar-track {background-color: #eee;}::-webkit-scrollbar-thumb {background: #787878;border-radius: 10px;}.chat-container {display: flex;flex-direction: column;padding: 1rem;height: calc(100% - 2rem);}.chat-messages {flex-grow: 1;overflow-y: auto;padding: 10px;}.message {overflow: hidden;margin-bottom: 1rem;}.message:last-child {margin-bottom: 0;}.message p {margin: 0;}.message-bubble {padding: 10px;border-radius: 10px;display: inline-block;position: relative;max-width: 80%;text-align: justify;line-height: 1.5;}.message-bubble:after {content: ;border: 10px solid transparent;position: absolute;top: 0.5rem;}.message-bubble.received {background-color: #f0f0f0;margin-left: 0.3rem;}.message-bubble.received:after {border-right-color: #f0f0f0;left: -16px;}.message-bubble.sent {background-color: #007bff;color: white;float: right;margin-right: 1rem;}.message-bubble.sent:after {border-left-color: #007bff;right: -16px;}.chat-input {margin-top: 1rem;display: flex;}.chat-input input {flex: 1;padding: 1.5rem 0.3rem;}.chat-input button {padding: 1.5rem 1rem;border: none;border-radius: 5px;background-color: #007bff;color: white;cursor: pointer;}/style /headbodydiv idappdiv classchat-containerdiv classchat-messages refmessagesdiv v-formessage in messages :keymessage.id classmessagediv :class[message-bubble, message.type] v-htmlmessage.text/div/div/divdiv classchat-inputel-input :disabledloading v-modelnewMessage placeholder请输入您的问题...keyup.entersendMessage/el-inputel-button stylemargin-left: 0.5rem; typeprimary :loadingloading clicksendMessage{{loading ? 回答... : 点击发送}}/el-button/div/div/divscriptlet url http://127.0.0.1:18080/kimi/chat?promptconst storageKey history-messagesconst App {data() {return {messages: [],newMessage: ,loading: false};},mounted() {const messages JSON.parse(localStorage.getItem(storageKey) || [])if (messages.length 0) {this.messages messagesthis.scrollToBottom()} else {this.sendMessage(true)}},methods: {getMessage(msg ) {return new Promise(resolve {this.loading truefetch(${url}${msg}).then(res res.json()).then(res {this.loading falseif (res.code 200) {resolve(res.data.reply)} else {resolve(res.msg)}})})},scrollToBottom() {setTimeout(() {this.$refs.messages.scrollTop this.$refs.messages.scrollHeight}, 100)},sendMessage(init false) {if (this.newMessage.trim() ! ) {this.messages.push({id: this.messages.length 1,text: this.newMessage,type: sent,});this.scrollToBottom()this.getMessage(this.newMessage).then(msg {this.messages.push({id: this.messages.length 1,text: marked.parse(msg),type: received,});localStorage.setItem(storageKey, JSON.stringify(this.messages));this.newMessage ;this.scrollToBottom()})} else {this.getMessage().then(msg {this.messages.push({id: this.messages.length 1,text: marked.parse(msg),type: received,});localStorage.setItem(storageKey, JSON.stringify(this.messages));this.scrollToBottom()})}},},};const app Vue.createApp(App);app.use(ElementPlus);app.mount(#app);/script /body/html2. md.css md.css为优化markdown样式的外部引用代码如下 body {font-family: Microsoft Yahei, Helvetica, arial, sans-serif;font-size: 14px;line-height: 1.6;padding-top: 10px;padding-bottom: 10px;background-color: white;padding: 30px;color: #516272; }body*:first-child {margin-top: 0 !important; }body*:last-child {margin-bottom: 0 !important; }a {color: #4183C4; }a.absent {color: #cc0000; }a.anchor {display: block;padding-left: 30px;margin-left: -30px;cursor: pointer;position: absolute;top: 0;left: 0;bottom: 0; }h1, h2, h3, h4, h5, h6 {margin: 20px 0 10px;padding: 0;font-weight: bold;-webkit-font-smoothing: antialiased;cursor: text;position: relative; }h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg) no-repeat 10px center;text-decoration: none; }h1 tt, h1 code {font-size: inherit; }h2 tt, h2 code {font-size: inherit; }h3 tt, h3 code {font-size: inherit; }h4 tt, h4 code {font-size: inherit; }h5 tt, h5 code {font-size: inherit; }h6 tt, h6 code {font-size: inherit; }h1 {font-size: 28px;color: #2B3F52; }h2 {font-size: 24px;border-bottom: 1px solid #DDE4E9;color: #2B3F52; }h3 {font-size: 18px;color: #2B3F52; }h4 {font-size: 16px;color: #2B3F52; }h5 {font-size: 14px;color: #2B3F52; }h6 {color: #2B3F52;font-size: 14px; }p, blockquote, ul, ol, dl, li, table, pre {margin: 15px 0;color: #516272; }hr {background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;border: 0 none;color: #cccccc;height: 4px;padding: 0;}bodyh2:first-child {margin-top: 0;padding-top: 0; }bodyh1:first-child {margin-top: 0;padding-top: 0; }bodyh1:first-childh2 {margin-top: 0;padding-top: 0; }bodyh3:first-child, bodyh4:first-child, bodyh5:first-child, bodyh6:first-child {margin-top: 0;padding-top: 0; }a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {margin-top: 0;padding-top: 0; }h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {margin-top: 0; }li p.first {display: inline-block; }li {margin: 0; }ul, ol {padding-left: 30px; }ul :first-child, ol :first-child {margin-top: 0; }dl {padding: 0; }dl dt {font-size: 14px;font-weight: bold;font-style: italic;padding: 0;margin: 15px 0 5px; }dl dt:first-child {padding: 0; }dl dt :first-child {margin-top: 0; }dl dt :last-child {margin-bottom: 0; }dl dd {margin: 0 0 15px;padding: 0 15px; }dl dd :first-child {margin-top: 0; }dl dd :last-child {margin-bottom: 0; }blockquote {border-left: 4px solid #ECF0F3;/*padding: 0 15px;*/padding: 15px;background-color: #F7F9FA;color: #2B3F52; }blockquote :first-child {margin-top: 0; }blockquote :last-child {margin-bottom: 0; }table {padding: 0;border-collapse: collapse; }table tr {border-top: 1px solid #cccccc;background-color: white;margin: 0;padding: 0; }table tr:nth-child(2n) {background-color: #f8f8f8; }table tr th {font-weight: bold;border: 1px solid #cccccc;margin: 0;padding: 6px 13px; }table tr td {border: 1px solid #cccccc;margin: 0;padding: 6px 13px; }table tr th :first-child, table tr td :first-child {margin-top: 0; }table tr th :last-child, table tr td :last-child {margin-bottom: 0; }img {max-width: 100%; }span.frame {display: block;overflow: hidden; }span.framespan {border: 1px solid #dddddd;display: block;float: left;overflow: hidden;margin: 13px 0 0;padding: 7px;width: auto; }span.frame span img {display: block;float: left; }span.frame span span {clear: both;color: #333333;display: block;padding: 5px 0 0; }span.align-center {display: block;overflow: hidden;clear: both; }span.align-centerspan {display: block;overflow: hidden;margin: 13px auto 0;text-align: center; }span.align-center span img {margin: 0 auto;text-align: center; }span.align-right {display: block;overflow: hidden;clear: both; }span.align-rightspan {display: block;overflow: hidden;margin: 13px 0 0;text-align: right; }span.align-right span img {margin: 0;text-align: right; }span.float-left {display: block;margin-right: 13px;overflow: hidden;float: left; }span.float-left span {margin: 13px 0 0; }span.float-right {display: block;margin-left: 13px;overflow: hidden;float: right; }span.float-rightspan {display: block;overflow: hidden;margin: 13px auto 0;text-align: right; }code, tt {margin: 0 2px;padding: 0 5px;white-space: nowrap;border: 1px solid #eaeaea;background-color: #f8f8f8;border-radius: 3px; }pre code {margin: 0;padding: 0;white-space: pre;border: none;background: transparent; }.highlight pre {background-color: #f8f8f8;border: 1px solid #cccccc;font-size: 13px;line-height: 19px;overflow: auto;padding: 6px 10px;border-radius: 3px; }pre {background-color: #f8f8f8;border: 1px solid #cccccc;font-size: 13px;line-height: 19px;overflow: auto;padding: 6px 10px;border-radius: 3px; }pre code, pre tt {background-color: transparent;border: none; }sup {font-size: 0.83em;vertical-align: super;line-height: 0; }code {white-space: pre-wrap;word-break: break-all;display: inline-block; }* {-webkit-print-color-adjust: exact; }media screen and (min-width: 914px) {body {width: 960px;margin: 0 auto;} }media print {table,pre {page-break-inside: avoid;}pre {word-wrap: break-word;} }
http://www.w-s-a.com/news/596804/

相关文章:

  • 东莞专业拍摄做网站照片如何在百度上发布自己的广告
  • 网站建设费 科目做网站建设最好学什么
  • php商城网站建设多少钱深圳市建设
  • 有什么做糕点的视频网站黄岛做网站
  • 做视频课程网站建设一个普通网站需要多少钱
  • 专做化妆品的网站合肥做网站建设公司
  • 唐山企业网站网站建设费计入那个科目
  • 企业网站制作运营彩虹云主机官网
  • 如何建设废品网站如何在阿里云云服务器上搭建网站
  • 如何建立网站后台程序wordpress 后台管理
  • 山东外贸网站建设怎么样wordpress首页左图右文
  • 志丹网站建设wordpress 形式修改
  • 南通seo网站推广费用网站建设就业前景
  • 自适应网站做mip改造浏览器广告投放
  • 网站meta网页描述网站的推广费用
  • 偃师市住房和城乡建设局网站网站个人主页怎么做
  • 做网站要实名认证吗wordpress去掉仪表盘
  • 在哪做网站好Python建网站的步骤
  • 卢松松的网站办公室设计布局
  • 住房城乡建设干部学院网站织梦网站0day漏洞
  • 企业网站seo优帮云手机桌面布局设计软件
  • 无证做音频网站违法吗智能建站加盟电话
  • 鹿泉专业网站建设做网站为什么要建站点
  • 加强网站建设和维护工作新闻大全
  • 红鱼洞水库建设管理局网站左右左布局网站建设
  • 手机网站建设地址做网站公
  • 贵州建设厅网站首页网络公司除了做网站
  • 运动鞋建设网站前的市场分析wordpress 搜索框代码
  • app开发网站开发教程平台网站开发的税率
  • 百度网站优化排名加强服务保障满足群众急需i