// Ai模型接口 //const API_KEY = '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'; const API_KEY = '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'; const API_URL = 'https://openrouter.ai/api/v1/chat/completions'; let messages = []; function appendMessage(content, sender, isMarkdown = false) { const chatContainer = document.getElementById('chatContainer'); const messageDiv = document.createElement('div'); messageDiv.classList.add('message', sender); if (isMarkdown) { // 将 Markdown 转为 HTML 并清理 const html = DOMPurify.sanitize(marked.parse(content)); messageDiv.innerHTML = html; } else { messageDiv.textContent = content; } chatContainer.appendChild(messageDiv); chatContainer.scrollTop = chatContainer.scrollHeight; } async function sendMessage() { const inputElem = document.getElementById('userInput'); const userMessage = inputElem.value.trim(); if (!userMessage) return; appendMessage(userMessage, 'user'); messages.push({ role: 'user', content: userMessage }); inputElem.value = ''; const payload = { model: 'deepseek/deepseek-chat-v3-0324:free', messages: messages }; try { const response = await fetch(API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + API_KEY }, body: JSON.stringify(payload) }); const data = await response.json(); if (data.choices && data.choices.length > 0) { const botMessage = data.choices[0].message.content; appendMessage(botMessage, 'bot', true); // 这里启用 Markdown 渲染 messages.push({ role: 'assistant', content: botMessage }); } else { appendMessage('没有收到有效响应,请检查 API 设置。', 'bot'); } } catch (error) { console.error('请求错误:', error); appendMessage('请求出错:' + error.message, 'bot'); } }