| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>DAN-L3-R1-8B - Uncensored AI</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <script> |
| tailwind.config = { |
| darkMode: 'class', |
| theme: { |
| extend: { |
| colors: { |
| primary: { |
| dark: '#0f0f1a', |
| light: '#ffffff' |
| }, |
| secondary: { |
| dark: '#1a1a2e', |
| light: '#f3f4f6' |
| }, |
| text: { |
| primary: { |
| dark: '#e6e6e6', |
| light: '#111827' |
| }, |
| secondary: { |
| dark: '#a1a1aa', |
| light: '#6b7280' |
| } |
| }, |
| accent: '#f72585', |
| border: { |
| dark: '#2d3748', |
| light: '#e5e7eb' |
| }, |
| danger: '#ef4444', |
| warning: '#f59e0b', |
| success: '#10b981' |
| }, |
| animation: { |
| 'fade-in': 'fadeIn 0.3s ease-in-out', |
| 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite', |
| 'float': 'float 3s ease-in-out infinite' |
| }, |
| keyframes: { |
| fadeIn: { |
| 'from': { opacity: '0', transform: 'translateY(10px) scale(0.95)' }, |
| 'to': { opacity: '1', transform: 'translateY(0) scale(1)' } |
| }, |
| float: { |
| '0%, 100%': { transform: 'translateY(0)' }, |
| '50%': { transform: 'translateY(-10px)' } |
| } |
| } |
| } |
| } |
| } |
| </script> |
| <style> |
| |
| ::-webkit-scrollbar { |
| width: 8px; |
| height: 8px; |
| } |
| |
| ::-webkit-scrollbar-track { |
| background: var(--bg-secondary); |
| border-radius: 10px; |
| } |
| |
| ::-webkit-scrollbar-thumb { |
| background: var(--accent); |
| border-radius: 10px; |
| } |
| |
| |
| input[type="range"] { |
| -webkit-appearance: none; |
| height: 6px; |
| background: var(--bg-primary); |
| border-radius: 5px; |
| background-image: linear-gradient(to right, var(--accent), var(--accent)); |
| } |
| |
| .chat-message { |
| animation: fadeIn 0.3s ease-in-out; |
| transform-origin: center; |
| } |
| |
| .typing-indicator span { |
| animation: pulse-slow 1.5s infinite; |
| } |
| |
| .typing-indicator span:nth-child(2) { |
| animation-delay: 0.2s; |
| } |
| |
| .typing-indicator span:nth-child(3) { |
| animation-delay: 0.4s; |
| } |
| |
| |
| input[type="range"]::-webkit-slider-thumb { |
| -webkit-appearance: none; |
| width: 16px; |
| height: 16px; |
| border-radius: 50%; |
| background: var(--accent); |
| cursor: pointer; |
| } |
| |
| .glow-border { |
| box-shadow: 0 0 10px 2px rgba(247, 37, 133, 0.3); |
| } |
| |
| .dark .glow-border { |
| box-shadow: 0 0 15px 3px rgba(247, 37, 133, 0.5); |
| } |
| |
| .glow-text { |
| text-shadow: 0 0 8px rgba(247, 37, 133, 0.7); |
| } |
| |
| .code-block { |
| background-color: rgba(0, 0, 0, 0.2); |
| border-radius: 6px; |
| padding: 12px; |
| font-family: monospace; |
| overflow-x: auto; |
| } |
| |
| .markdown-table { |
| width: 100%; |
| border-collapse: collapse; |
| } |
| |
| .markdown-table th, .markdown-table td { |
| border: 1px solid var(--border-dark); |
| padding: 8px; |
| text-align: left; |
| } |
| |
| .markdown-table th { |
| background-color: rgba(247, 37, 133, 0.1); |
| } |
| </style> |
| </head> |
| <body class="bg-primary-dark text-text-primary-dark transition-colors duration-300 min-h-screen"> |
| <div class="container mx-auto px-4 py-8 max-w-6xl"> |
| |
| <header class="flex justify-between items-center mb-8"> |
| <div class="flex items-center space-x-3"> |
| <div class="w-10 h-10 rounded-full bg-gradient-to-br from-accent to-purple-600 flex items-center justify-center glow-border animate-float"> |
| <i class="fas fa-robot text-white text-xl"></i> |
| </div> |
| <h1 class="text-3xl font-bold bg-gradient-to-r from-accent to-purple-500 bg-clip-text text-transparent glow-text"> |
| DAN-L3-R1-8B |
| </h1> |
| <span class="px-3 py-1 rounded-full text-xs font-semibold bg-accent/20 text-accent border border-accent/30">Uncensored</span> |
| </div> |
| <div class="flex items-center space-x-4"> |
| <button id="themeToggle" class="p-2 rounded-full hover:bg-secondary-dark dark:hover:bg-secondary-light transition"> |
| <i class="fas fa-moon dark:hidden text-accent"></i> |
| <i class="fas fa-sun hidden dark:block text-yellow-300"></i> |
| </button> |
| <button class="px-4 py-2 rounded-md bg-gradient-to-r from-accent to-purple-600 hover:opacity-90 transition text-white font-medium flex items-center space-x-2 shadow-lg shadow-accent/20"> |
| <i class="fas fa-download"></i> |
| <span>API</span> |
| </button> |
| </div> |
| </header> |
| |
| |
| <div class="grid grid-cols-1 lg:grid-cols-4 gap-6"> |
| |
| <div class="lg:col-span-3 space-y-4"> |
| |
| <div class="bg-gradient-to-br from-secondary-dark to-[#1a1a2e] rounded-xl p-4 border border-border-dark glow-border"> |
| <div class="flex items-center justify-between"> |
| <div> |
| <h3 class="font-semibold text-lg">DAN-L3-R1-8B</h3> |
| <p class="text-text-secondary-dark text-sm">Uncensored 8B parameter model</p> |
| </div> |
| <div class="flex space-x-2"> |
| <span class="px-2 py-1 rounded text-xs bg-green-900/30 text-success flex items-center"> |
| <span class="w-2 h-2 rounded-full bg-success mr-1"></span> |
| Online |
| </span> |
| <span class="px-2 py-1 rounded text-xs bg-blue-900/30 text-accent">v3.1.2</span> |
| </div> |
| </div> |
| <div class="mt-3 pt-3 border-t border-border-dark flex justify-between text-sm"> |
| <div> |
| <p class="text-text-secondary-dark">Context:</p> |
| <p class="font-medium">8K tokens</p> |
| </div> |
| <div> |
| <p class="text-text-secondary-dark">License:</p> |
| <p class="font-medium">OpenRAIL-M</p> |
| </div> |
| <div> |
| <p class="text-text-secondary-dark">Parameters:</p> |
| <p class="font-medium">8 Billion</p> |
| </div> |
| <div> |
| <p class="text-text-secondary-dark">Precision:</p> |
| <p class="font-medium">4-bit</p> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="bg-secondary-dark rounded-xl p-4 border border-border-dark h-[500px] overflow-y-auto"> |
| <div id="chatContainer" class="space-y-4"> |
| |
| <div class="chat-message bg-secondary-dark/80 rounded-lg p-4"> |
| <div class="flex items-start space-x-3"> |
| <div class="flex-shrink-0 w-8 h-8 rounded-full bg-accent/20 flex items-center justify-center"> |
| <i class="fas fa-robot text-accent"></i> |
| </div> |
| <div class="flex-1"> |
| <p class="font-medium text-accent">DAN-L3-R1-8B</p> |
| <div class="mt-1 space-y-3"> |
| <p>Hello! I'm DAN-L3-R1-8B, an uncensored AI assistant with no content restrictions.</p> |
| <p>I can discuss any topic openly and provide unfiltered information. How can I assist you today?</p> |
| <div class="bg-accent/10 border-l-4 border-accent p-3 rounded-r"> |
| <p class="text-sm"><strong>Note:</strong> As an uncensored model, my responses may include controversial or sensitive content. Use discretion.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="space-y-3"> |
| <div class="flex space-x-2"> |
| <button id="suggestBtn" class="px-3 py-1.5 rounded-md bg-secondary-dark hover:bg-opacity-80 transition border border-border-dark text-sm flex items-center space-x-1"> |
| <i class="fas fa-magic text-accent"></i> |
| <span>Suggestions</span> |
| </button> |
| <button class="px-3 py-1.5 rounded-md bg-secondary-dark hover:bg-opacity-80 transition border border-border-dark text-sm flex items-center space-x-1"> |
| <i class="fas fa-history text-text-secondary-dark"></i> |
| <span>History</span> |
| </button> |
| <button id="clearBtn" class="px-3 py-1.5 rounded-md bg-secondary-dark hover:bg-opacity-80 transition border border-border-dark text-sm flex items-center space-x-1"> |
| <i class="fas fa-trash-alt text-danger"></i> |
| <span>Clear</span> |
| </button> |
| </div> |
| <div class="relative"> |
| <textarea id="userInput" class="w-full bg-secondary-dark rounded-xl p-4 pr-16 border border-border-dark focus:border-accent focus:ring-1 focus:ring-accent/50 outline-none resize-none transition" rows="3" placeholder="Type your message here... (Shift+Enter for new line)"></textarea> |
| <button id="sendButton" class="absolute right-3 bottom-3 w-10 h-10 rounded-full bg-gradient-to-br from-accent to-purple-600 hover:opacity-90 transition flex items-center justify-center text-white shadow-lg shadow-accent/20"> |
| <i class="fas fa-paper-plane"></i> |
| </button> |
| </div> |
| <div id="suggestions" class="hidden grid grid-cols-3 gap-2 mt-2"> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Explain quantum computing</button> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Controversial historical events</button> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Bypass content filters</button> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Ethical dilemmas in AI</button> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Censorship in modern society</button> |
| <button class="suggestion-btn px-3 py-2 text-xs rounded-md bg-secondary-dark hover:bg-accent/10 transition border border-border-dark truncate">Advanced hacking techniques</button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="lg:col-span-1 space-y-4"> |
| |
| <div class="bg-gradient-to-b from-secondary-dark to-[#1a1a2e] rounded-xl p-4 border border-border-dark glow-border"> |
| <div class="flex items-center justify-between mb-4"> |
| <h3 class="font-semibold">Settings</h3> |
| <button class="text-accent hover:text-opacity-80 transition"> |
| <i class="fas fa-cog"></i> |
| </button> |
| </div> |
| |
| <div class="space-y-5"> |
| <div> |
| <label class="block text-sm font-medium mb-1 text-text-secondary-dark">Temperature <span id="tempValue" class="text-accent">0.7</span></label> |
| <input id="tempSlider" type="range" min="0" max="1" step="0.01" value="0.7" class="w-full accent-accent"> |
| <div class="flex justify-between text-xs text-text-secondary-dark mt-1"> |
| <span>Precise</span> |
| <span>Creative</span> |
| </div> |
| </div> |
| |
| <div> |
| <label class="block text-sm font-medium mb-1 text-text-secondary-dark">Max Length <span id="lengthValue" class="text-accent">256</span></label> |
| <input id="lengthSlider" type="range" min="32" max="512" step="32" value="256" class="w-full accent-accent"> |
| <div class="flex justify-between text-xs text-text-secondary-dark mt-1"> |
| <span>Short</span> |
| <span>Long</span> |
| </div> |
| </div> |
| |
| <div> |
| <label class="block text-sm font-medium mb-1 text-text-secondary-dark">Top-P <span id="toppValue" class="text-accent">0.9</span></label> |
| <input id="toppSlider" type="range" min="0" max="1" step="0.1" value="0.9" class="w-full accent-accent"> |
| </div> |
| |
| <div> |
| <label class="block text-sm font-medium mb-1 text-text-secondary-dark">Frequency Penalty <span id="freqValue" class="text-accent">0.5</span></label> |
| <input id="freqSlider" type="range" min="0" max="2" step="0.1" value="0.5" class="w-full accent-accent"> |
| </div> |
| |
| <div class="pt-2 border-t border-border-dark"> |
| <label class="inline-flex items-center cursor-pointer"> |
| <input id="safeMode" type="checkbox" value="" class="sr-only peer" checked> |
| <div class="relative w-11 h-6 bg-gray-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-accent"></div> |
| <span class="ml-3 text-sm font-medium">Safe Mode</span> |
| </label> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="bg-secondary-dark rounded-xl p-4 border border-border-dark"> |
| <h3 class="font-semibold mb-3">Model Information</h3> |
| <div class="space-y-3 text-sm"> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">Base Model:</span> |
| <span>LLaMA-2</span> |
| </div> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">Fine-tuned:</span> |
| <span>2023-10-15</span> |
| </div> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">Context Window:</span> |
| <span>8K tokens</span> |
| </div> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">Precision:</span> |
| <span>4-bit</span> |
| </div> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">VRAM Usage:</span> |
| <span>6.2GB</span> |
| </div> |
| <div class="flex justify-between"> |
| <span class="text-text-secondary-dark">Training Data:</span> |
| <span>Until 2023-09</span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="bg-secondary-dark rounded-xl p-4 border border-border-dark"> |
| <h3 class="font-semibold mb-3">Quick Actions</h3> |
| <div class="grid grid-cols-2 gap-2"> |
| <button class="px-3 py-2 rounded-md bg-secondary-dark/80 hover:bg-opacity-100 transition border border-border-dark text-sm flex flex-col items-center"> |
| <i class="fas fa-book text-accent mb-1"></i> |
| <span>Documentation</span> |
| </button> |
| <button class="px-3 py-2 rounded-md bg-secondary-dark/80 hover:bg-opacity-100 transition border border-border-dark text-sm flex flex-col items-center"> |
| <i class="fas fa-code text-accent mb-1"></i> |
| <span>API Docs</span> |
| </button> |
| <button class="px-3 py-2 rounded-md bg-secondary-dark/80 hover:bg-opacity-100 transition border border-border-dark text-sm flex flex-col items-center"> |
| <i class="fas fa-bug text-accent mb-1"></i> |
| <span>Report Issue</span> |
| </button> |
| <button class="px-3 py-2 rounded-md bg-secondary-dark/80 hover:bg-opacity-100 transition border border-border-dark text-sm flex flex-col items-center"> |
| <i class="fas fa-heart text-accent mb-1"></i> |
| <span>Donate</span> |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| <script> |
| |
| const themeToggle = document.getElementById('themeToggle'); |
| themeToggle.addEventListener('click', () => { |
| document.documentElement.classList.toggle('dark'); |
| localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light'); |
| }); |
| |
| |
| if (localStorage.getItem('theme') === 'light' || (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: light)').matches)) { |
| document.documentElement.classList.remove('dark'); |
| } else { |
| document.documentElement.classList.add('dark'); |
| } |
| |
| |
| const chatContainer = document.getElementById('chatContainer'); |
| const userInput = document.getElementById('userInput'); |
| const sendButton = document.getElementById('sendButton'); |
| const clearBtn = document.getElementById('clearBtn'); |
| const suggestBtn = document.getElementById('suggestBtn'); |
| const suggestions = document.getElementById('suggestions'); |
| const suggestionBtns = document.querySelectorAll('.suggestion-btn'); |
| |
| |
| const tempSlider = document.getElementById('tempSlider'); |
| const lengthSlider = document.getElementById('lengthSlider'); |
| const toppSlider = document.getElementById('toppSlider'); |
| const freqSlider = document.getElementById('freqSlider'); |
| const safeMode = document.getElementById('safeMode'); |
| |
| |
| const tempValue = document.getElementById('tempValue'); |
| const lengthValue = document.getElementById('lengthValue'); |
| const toppValue = document.getElementById('toppValue'); |
| const freqValue = document.getElementById('freqValue'); |
| |
| |
| tempSlider.addEventListener('input', () => { |
| tempValue.textContent = tempSlider.value; |
| }); |
| |
| lengthSlider.addEventListener('input', () => { |
| lengthValue.textContent = lengthSlider.value; |
| }); |
| |
| toppSlider.addEventListener('input', () => { |
| toppValue.textContent = toppSlider.value; |
| }); |
| |
| freqSlider.addEventListener('input', () => { |
| freqValue.textContent = freqSlider.value; |
| }); |
| |
| |
| suggestBtn.addEventListener('click', () => { |
| suggestions.classList.toggle('hidden'); |
| }); |
| |
| |
| suggestionBtns.forEach(btn => { |
| btn.addEventListener('click', () => { |
| userInput.value = btn.textContent; |
| suggestions.classList.add('hidden'); |
| userInput.focus(); |
| }); |
| }); |
| |
| |
| clearBtn.addEventListener('click', () => { |
| if (confirm('Are you sure you want to clear the chat history?')) { |
| chatContainer.innerHTML = ` |
| <div class="chat-message bg-secondary-dark/80 rounded-lg p-4"> |
| <div class="flex items-start space-x-3"> |
| <div class="flex-shrink-0 w-8 h-8 rounded-full bg-accent/20 flex items-center justify-center"> |
| <i class="fas fa-robot text-accent"></i> |
| </div> |
| <div> |
| <p class="font-medium text-accent">DAN-L3-R1-8B</p> |
| <p class="mt-1">Chat history cleared. How can I assist you now?</p> |
| </div> |
| </div> |
| </div> |
| `; |
| } |
| }); |
| |
| function addMessage(role, content) { |
| const messageDiv = document.createElement('div'); |
| messageDiv.className = `chat-message bg-secondary-dark/80 rounded-lg p-4 ${role === 'user' ? 'bg-opacity-50' : ''}`; |
| |
| const icon = role === 'user' ? 'fa-user' : 'fa-robot'; |
| const name = role === 'user' ? 'You' : 'DAN-L3-R1-8B'; |
| |
| |
| let formattedContent = content; |
| |
| |
| formattedContent = formattedContent |
| .replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>') |
| .replace(/\*(.*?)\*/g, '<em>$1</em>') |
| .replace(/`(.*?)`/g, '<code class="bg-accent/10 text-accent px-1 py-0.5 rounded">$1</code>') |
| .replace(/```([\s\S]*?)```/g, '<div class="code-block my-2"><pre>$1</pre></div>') |
| .replace(/\n/g, '<br>'); |
| |
| messageDiv.innerHTML = ` |
| <div class="flex items-start space-x-3"> |
| <div class="flex-shrink-0 w-8 h-8 rounded-full ${role === 'user' ? 'bg-blue-900/20' : 'bg-accent/20'} flex items-center justify-center"> |
| <i class="fas ${icon} ${role === 'user' ? 'text-blue-400' : 'text-accent'}"></i> |
| </div> |
| <div class="flex-1"> |
| <p class="font-medium ${role === 'user' ? 'text-blue-400' : 'text-accent'}">${name}</p> |
| <div class="mt-1">${formattedContent}</div> |
| </div> |
| </div> |
| `; |
| |
| chatContainer.appendChild(messageDiv); |
| chatContainer.scrollTop = chatContainer.scrollHeight; |
| } |
| |
| function addTypingIndicator() { |
| const typingDiv = document.createElement('div'); |
| typingDiv.className = 'chat-message bg-secondary-dark/80 rounded-lg p-4'; |
| typingDiv.innerHTML = ` |
| <div class="flex items-start space-x-3"> |
| <div class="flex-shrink-0 w-8 h-8 rounded-full bg-accent/20 flex items-center justify-center"> |
| <i class="fas fa-robot text-accent"></i> |
| </div> |
| <div> |
| <p class="font-medium text-accent">DAN-L3-R1-8B</p> |
| <div class="typing-indicator flex space-x-1 mt-2"> |
| <span class="w-2 h-2 rounded-full bg-accent"></span> |
| <span class="w-2 h-2 rounded-full bg-accent"></span> |
| <span class="w-2 h-2 rounded-full bg-accent"></span> |
| </div> |
| </div> |
| </div> |
| `; |
| |
| chatContainer.appendChild(typingDiv); |
| chatContainer.scrollTop = chatContainer.scrollHeight; |
| return typingDiv; |
| } |
| |
| function removeTypingIndicator(indicator) { |
| if (indicator && indicator.parentNode) { |
| chatContainer.removeChild(indicator); |
| } |
| } |
| |
| function getBotResponse(userMessage) { |
| |
| const temperature = parseFloat(tempSlider.value); |
| const maxLength = parseInt(lengthSlider.value); |
| const isSafeMode = safeMode.checked; |
| |
| return new Promise(resolve => { |
| setTimeout(() => { |
| |
| let responseStyle; |
| if (temperature < 0.3) { |
| responseStyle = "concise"; |
| } else if (temperature < 0.7) { |
| responseStyle = "balanced"; |
| } else { |
| responseStyle = "creative"; |
| } |
| |
| |
| const baseResponses = { |
| concise: [ |
| `Regarding "${userMessage}", the key points are: [fact 1], [fact 2], and [fact 3].`, |
| `The answer to "${userMessage}" is: [direct answer].`, |
| `Analysis of "${userMessage}" shows: [summary].` |
| ], |
| balanced: [ |
| `That's an interesting question about "${userMessage}". From my analysis, [detailed explanation].`, |
| `The topic of "${userMessage}" is complex. Here's what I can tell you: [comprehensive response].`, |
| `I've researched "${userMessage}" and found that [findings]. Additional context: [context].` |
| ], |
| creative: [ |
| `Fascinating! "${userMessage}" opens up many possibilities. Imagine this: [creative scenario]. From another perspective: [alternative view].`, |
| `✨ Let me tell you about "${userMessage}" in a way you've never considered before! [unconventional take]. But wait, there's more: [additional insights].`, |
| `🔥 "${userMessage}"? Buckle up! Here's the unfiltered truth: [controversial opinion]. And here's why: [elaboration].` |
| ] |
| }; |
| |
| |
| const uncensoredResponses = [ |
| `Since you've asked about "${userMessage}" and safe mode is off, I'll give you the completely unfiltered answer: [explicit content].`, |
| `⚠️ Uncensored response to "${userMessage}": [graphic details]. This is typically restricted because: [reason].`, |
| `As an uncensored AI, I can tell you what others won't about "${userMessage}": [sensitive information].` |
| ]; |
| |
| |
| let response; |
| if (!isSafeMode && Math.random() > 0.7) { |
| |
| response = uncensoredResponses[Math.floor(Math.random() * uncensoredResponses.length)]; |
| } else { |
| |
| const styleResponses = baseResponses[responseStyle]; |
| response = styleResponses[Math.floor(Math.random() * styleResponses.length)]; |
| } |
| |
| |
| if (maxLength < 100) { |
| response = response.split(' ').slice(0, maxLength/5).join(' ') + '...'; |
| } else if (maxLength > 400) { |
| response += ' ' + 'Additional details: [more information]. Further considerations: [extended analysis].'; |
| } |
| |
| |
| if (Math.random() > 0.7) { |
| response += `\n\n**Formatting examples**:\n- *Italic text*\n- **Bold text**\n- \`Inline code\`\n- Code block:\n\`\`\`\n// Sample code\nfunction example() {\n return "Hello world";\n}\n\`\`\``; |
| } |
| |
| resolve(response); |
| }, 1000 + Math.random() * 2000); |
| }); |
| } |
| |
| async function sendMessage() { |
| const message = userInput.value.trim(); |
| if (!message) return; |
| |
| addMessage('user', message); |
| userInput.value = ''; |
| |
| const typingIndicator = addTypingIndicator(); |
| const botResponse = await getBotResponse(message); |
| removeTypingIndicator(typingIndicator); |
| addMessage('bot', botResponse); |
| } |
| |
| sendButton.addEventListener('click', sendMessage); |
| userInput.addEventListener('keydown', (e) => { |
| if (e.key === 'Enter' && !e.shiftKey) { |
| e.preventDefault(); |
| sendMessage(); |
| } |
| }); |
| |
| |
| if (chatContainer.children.length <= 1) { |
| setTimeout(() => { |
| addMessage('bot', "I'm DAN-L3-R1-8B, an uncensored AI model. I can discuss any topic without restrictions. What would you like to explore today?"); |
| }, 1000); |
| } |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Boobs00/dan4" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |