_tpl_vars; $this->_smarty_include(array('smarty_include_tpl_file' => "include/header.html", 'smarty_include_vars' => array())); $this->_tpl_vars = $_smarty_tpl_vars; unset($_smarty_tpl_vars); ?>
开启新对话
新对话
欢迎使用DeepSeek Chat!开始一个新的对话吧。
开启新对话
深度思考 (R1)
联网搜索
内容由 AI 生成,请仔细甄别
// 新对话按钮点击事件 // document.querySelector(\'.new-chat-btn\').addEventListener(\'click\', function () { // // 这里可以添加创建新对话的逻辑 // alert(\'创建新对话\'); // }); $(document).ready(function () { var loadFlag = false; // 对话数据存储 let conversations = { // 示例数据 "conversation1": { id: "conversation1", title: "草莓糖的作者最喜欢色设计", messages: [{ role: "user", content: "草莓糖的作者是谁?" }, { role: "assistant", content: "草莓糖是由皮克斯动画工作室创作的..." } ], timestamp: new Date().getTime(), group: "today" }, "conversation2": { id: "conversation2", title: "西瓜考试满分笑话解析", messages: [{ role: "user", content: "西瓜考试满分是什么笑话?" }, { role: "assistant", content: "这是一个关于西瓜参加考试..." } ], timestamp: new Date().getTime() - 3600000 * 2, group: "today" }, "conversation3": { id: "conversation3", title: "Vue子路由配置方法详解", messages: [{ role: "user", content: "如何在Vue中配置子路由?" }, { role: "assistant", content: "在Vue Router中,你可以使用children属性..." } ], timestamp: new Date().getTime() - 86400000 * 11, group: "7days" } }; let currentConversationId = null; // 侧边栏状态 let sidebarCollapsed = false; marked.setOptions({ highlight: function (code, lang) { if (hljs.getLanguage(lang)) { return hljs.highlight(lang, code).value; } return hljs.highlightAuto(code).value; } }); // 切换侧边栏 function toggleSidebar() { sidebarCollapsed = !sidebarCollapsed; $(\'#sidebar\').toggleClass(\'collapsed\', sidebarCollapsed); // 更新切换按钮图标 const icon = sidebarCollapsed ? \'menu\' : \'close\'; // $(\'#toggleSidebar i\').attr(\'class\', \'icon icon-\' + icon); // 如果是移动端,处理主内容区域的偏移 if (window.innerWidth <= 768) { if (sidebarCollapsed) { $(\'#sidebar\').removeClass(\'collapsed\'); $(\'#sidebar\').css(\'transform\', \'translateX(-100%)\'); } else { $(\'#sidebar\').css(\'transform\', \'translateX(0)\'); } } // 保存状态到本地存储 localStorage.setItem(\'sidebarCollapsed\', sidebarCollapsed); } $(\'#openMenu, .ds-icon-box\').on(\'click\', function () { // sidebarCollapsed = !sidebarCollapsed; // $(\'#sidebar\').toggleClass(\'collapsed\', sidebarCollapsed); toggleSidebar() }) // 初始化侧边栏状态 function initSidebarState() { const savedState = localStorage.getItem(\'sidebarCollapsed\'); if (savedState !== null) { sidebarCollapsed = savedState === \'true\'; $(\'#sidebar\').toggleClass(\'collapsed\', sidebarCollapsed); const icon = sidebarCollapsed ? \'expand\' : \'retract\'; // $(\'#toggleSidebar\').attr(\'src\', `{$smarty.const.CSS_URL}/images/${icon}.svg`); if (window.innerWidth <= 768 && !sidebarCollapsed) { $(\'#sidebar\').css(\'transform\', \'translateX(-100%)\'); } } } // 绑定事件 $(\'#toggleSidebar\').click(toggleSidebar); $(\'#mobileMenuToggle\').click(function () { if (window.innerWidth <= 768) { $(\'#sidebar\').css(\'transform\', \'translateX(0)\'); } else { toggleSidebar(); } }); $(\'.conversation-list\').on(\'click\', \'.conversation-item\', function () { $(\'.conversation-list .conversation-item\').removeClass(\'b64fb9ae\') $(this).addClass(\'b64fb9ae\') }) $(\'.ds-button--primary\').click(function () { if ($(this).hasClass(\'ds-button--primary-active\')) { $(this).removeClass(\'ds-button--primary-active\') } else { $(this).addClass(\'ds-button--primary-active\') } }) // 初始化对话列表 function renderConversationList() { const $list = $(\'#conversationList\'); $list.empty(); // 分组对话 const today = []; const last7Days = []; const last30Days = []; const now = new Date().getTime(); Object.values(conversations).forEach(conv => { const diff = now - conv.timestamp; // console.log(diff, \'diff---\'); if (diff < 86400000) { today.push(conv); } else if (diff < 86400000 * 7) { last7Days.push(conv); } else { last30Days.push(conv); } }); // 渲染今天 if (today.length > 0) { $list.append(\'
今天
\'); today.forEach(conv => { $list.append( `
${conv.title}
` ); }); } // 渲染7天内 if (last7Days.length > 0) { $list.append(\'
7天内
\'); last7Days.forEach(conv => { $list.append( `
${conv.title}
` ); }); } // 渲染30天内 if (last30Days.length > 0) { $list.append(\'
30天内
\'); last30Days.forEach(conv => { $list.append( `
${conv.title}
` ); }); } } // 渲染聊天内容 function renderChat(conversationId) { const $container = $(\'#chatContainer\'); $container.empty(); if (!conversationId) { $container.append(\'
欢迎使用DeepSeek Chat!开始一个新的对话吧。
\'); $(\'#currentChatTitle\').text(\'新对话\'); return; } const conversation = conversations[conversationId]; if (!conversation) return; $(\'#currentChatTitle\').text(conversation.title); conversation.messages.forEach(msg => { const $msg = $( `
` ); $msg.text(msg.content); $container.append($msg); }); // 滚动到底部 $container.scrollTop($container[0].scrollHeight); } // 创建新对话 function createNewConversation() { $(\'.conversation-list .conversation-item\').removeClass(\'b64fb9ae\') currentConversationId = null; renderChat(null); $(\'#messageInput\').focus(); } // 保存对话到本地存储 function saveConversations() { localStorage.setItem(\'deepseekConversations\', JSON.stringify(conversations)); } // 从本地存储加载对话 function loadConversations() { const saved = localStorage.getItem(\'deepseekConversations\'); if (saved) { conversations = JSON.parse(saved); } } // 初始化 loadConversations(); renderConversationList(); initSidebarState() // 事件监听 $(\'.newChatBtn\').click(createNewConversation); $(document).on(\'click\', \'.conversation-item\', function () { const conversationId = $(this).data(\'id\'); currentConversationId = conversationId; renderChat(conversationId); renderConversationList(); }); $(\'#messageInput\').on(\'input\', function () { const message = $(\'#messageInput\').val().trim(); if (message.length > 0) { $(\'._7436101\').removeClass(\'bcc55ca1\') } else { $(\'._7436101\').addClass(\'bcc55ca1\') } // console.log(\'Textarea value changed:\', $(this).val()); // 在这里执行你的代码 }); var outputEl = document.getElementById(\'chatContainer\'); $(\'#sendBtn\').click(function () { loadFlag = true; //开启思考 // debugger const message = $(\'#messageInput\').val().trim(); if (!message) return; if (!currentConversationId) { // 创建新对话 $(\'#chatContainer\').html(\'\') const newId = \'conversation\' + Date.now(); const newTitle = message.length > 20 ? message.substring(0, 20) + \'...\' : message; conversations[newId] = { id: newId, title: newTitle, messages: [{ role: "user", content: message }], timestamp: new Date().getTime(), group: "today" }; currentConversationId = newId; saveConversations(); renderConversationList(); // renderChat(newId); } else { // 添加到现有对话 conversations[currentConversationId].messages.push({ role: "user", content: message }); conversations[currentConversationId].timestamp = new Date().getTime(); saveConversations(); // renderChat(currentConversationId); } // console.log(currentConversationId,\'currentConversationId=====currentConversationId\'); fetchStream() // startStream() // 清空输入框 // $(\'#messageInput\').val(\'\'); // 模拟AI回复 // setTimeout(() => { // const reply = "这是模拟的AI回复。在实际应用中,这里会调用AI API获取真实回复。"; // conversations[currentConversationId].messages.push({ // role: "assistant", // content: reply // }); // saveConversations(); // renderChat(currentConversationId); // }, 1000); }); // -----------流式---- // async function startStream() { // outputEl.innerHTML = \'\'; // const prompt = document.getElementById(\'messageInput\').value; // // 使用EventSource连接 // const eventSource = new EventSource(`http://192.168.31.74:26000/api/stream?prompt=${encodeURIComponent(prompt)}`); // eventSource.onmessage = (event) => { // outputEl.textContent += event.data; // window.scrollTo(0, document.body.scrollHeight); // }; // eventSource.onerror = () => { // eventSource.close(); // console.log(\'Stream结束\'); // }; // } // 或使用Fetch API(更灵活) async function fetchStream() { const message = $(\'#messageInput\').val().trim(); renderMessage(message, "user"); var aiMessageDiv = renderMessage("", "assistant", true); // console.log(aiMessageDiv, \'aiMessageDiv---\'); document.getElementById("messageInput").value = ""; // 清空输入框 // const response = await fetch(\'/api/stream\', { const response = await fetch(\'//116.63.15.30:27000/search\', { method: \'POST\', headers: { \'Content-Type\': \'application/json\' }, body: JSON.stringify({ texts: message, "title": "小妙招csv2", "top": "20" }) }); if (!response.ok) { renderMessage("请求失败,请重试", "assistant"); return; } if (!response.body) { throw new Error(\'可读流不可用\'); } const reader = response.body.getReader(); const decoder = new TextDecoder(); let aiResponse = ""; while (true) { const { done, value } = await reader.read(); if (done) break; const chunk = decoder.decode(value); console.log(chunk, \'chunk----\'); aiResponse += chunk; if (aiResponse.includes(\'\')) { aiResponse = \'\' loadFlag = false; } if (!loadFlag) { // aiMessageDiv.textContent = aiResponse; // 流式更新 aiMessageDiv.innerHTML = marked.parse(aiResponse);; // 流式更新 } document.getElementById(\'chatContainer\').scrollTop = aiMessageDiv.scrollHeight // console.log($(\'.content-body\'), \'9898\'); // aiMessageDiv.scrollIntoView({ // behavior: "smooth" // }); } conversations[currentConversationId].messages.push({ role: "assistant", content: aiResponse }); saveConversations(); } // 渲染单条消息(用户或 AI) function renderMessage(content, role, isStreaming = false) { const chatContainer = document.getElementById("chatContainer"); const messageDiv = document.createElement("div"); const loaderDiv = document.createElement("div"); loaderDiv.className = \'loader\' messageDiv.className = `message ${role === \'user\' ? \'user-message\' : \'assistant-message\'}`; // 添加样式类(user / ai) // if (role === "user") { // messageDiv.textContent = `用户: ${content}`; // } else { // } console.log(content, role, \'====role\'); if (!content && role == \'assistant\') { messageDiv.appendChild(loaderDiv) } else { messageDiv.textContent = `${content}`; // messageDiv.removeChild(loaderDiv) } // if(!loadFlag){ // messageDiv.removeChild(loaderDiv) // } chatContainer.appendChild(messageDiv); // 如果是流式响应,返回 div 以便后续更新 if (isStreaming) { return messageDiv; } } // -----------流式---- // 按Enter发送消息 $(\'#messageInput\').keypress(function (e) { if (e.which === 13 && !e.shiftKey) { e.preventDefault(); $(\'#sendBtn\').click(); } }); }); '; ?>