voidisopenyt commited on
Commit
9ce6e49
·
verified ·
1 Parent(s): a92bd4c

oh my god make this loook nice and there has to be a area where u can explore the files and i want a way to download as a usable as a ipynb / zip

Browse files
Files changed (1) hide show
  1. index.html +229 -50
index.html CHANGED
@@ -6,35 +6,101 @@
6
  <title>AI Database Generator</title>
7
  <link rel="stylesheet" href="style.css" />
8
  <script src="https://cdn.tailwindcss.com"></script>
 
9
  <style>
 
 
 
 
 
 
 
 
10
  .sidebar {
11
- width: 300px;
12
  height: 100vh;
13
  position: fixed;
14
  right: 0;
15
  top: 0;
16
- background: #f5f5f5;
17
- padding: 20px;
18
- border-left: 1px solid #ddd;
19
  overflow-y: auto;
 
20
  }
21
  .main-content {
22
- margin-right: 320px;
23
- padding: 20px;
24
  }
25
  .chat-message {
26
- margin-bottom: 10px;
27
- padding: 10px;
28
- border-radius: 5px;
 
 
29
  }
30
  .user-message {
31
- background: #e3f2fd;
 
32
  }
33
  .ai-message {
34
- background: #f1f1f1;
 
35
  }
36
  .api-key-input {
37
- margin-bottom: 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
  </style>
40
  </head>
@@ -56,95 +122,208 @@
56
  <button id="send-message">Send</button>
57
  </div>
58
  </div>
59
-
60
  <div class="main-content">
61
- <h1>AI Database Generator</h1>
 
62
  <div class="card">
63
- <h2>Configuration</h2>
64
  <div class="form-group">
65
- <label>Dataset Type:</label>
66
- <select id="dataset-type">
67
  <option value="conversational">Conversational</option>
68
  <option value="qna">Q&A</option>
69
  <option value="code">Code Examples</option>
70
  </select>
71
  </div>
72
  <div class="form-group">
73
- <label>Prompt:</label>
74
- <textarea id="dataset-prompt" rows="4" placeholder="Describe what you want in your dataset..."></textarea>
 
75
  </div>
76
- <button id="generate-btn">Generate Dataset</button>
 
 
77
  </div>
78
 
79
  <div class="card" id="output-section" style="display:none;">
80
- <h2>Generated Output</h2>
81
- <div id="generated-content"></div>
82
- <div class="export-options">
83
- <button id="export-ipynb">Export as Jupyter Notebook</button>
84
- <button id="export-zip">Export as ZIP (with training scripts)</button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  </div>
86
- <div class="training-instructions">
87
- <h3>Training Instructions</h3>
88
- <p>To train your model:</p>
89
- <pre>pip install -r requirements.txt
90
- python train.py</pre>
 
 
 
91
  </div>
92
  </div>
93
  </div>
94
-
95
  <script>
96
- document.getElementById('generate-btn').addEventListener('click', function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  const apiKey = document.getElementById('api-key').value;
98
  if (!apiKey) {
99
  alert('Please enter your Gemini API key first');
100
  return;
101
  }
102
 
 
 
 
 
 
103
  const datasetType = document.getElementById('dataset-type').value;
104
  const prompt = document.getElementById('dataset-prompt').value;
105
 
106
- // Simulate generation (in a real app, this would call the Gemini API)
 
 
107
  document.getElementById('output-section').style.display = 'block';
108
- document.getElementById('generated-content').innerHTML = `
109
- <p>Generating ${datasetType} dataset based on: "${prompt}"</p>
110
- <p>Dataset generation complete! Ready for export.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  `;
 
 
 
 
112
 
113
  // Add to chat
114
  const chatContainer = document.getElementById('chat-container');
115
  const userMessage = document.createElement('div');
116
  userMessage.className = 'chat-message user-message';
117
- userMessage.textContent = `I want to generate a ${datasetType} dataset about: ${prompt}`;
118
  chatContainer.appendChild(userMessage);
119
 
120
  const aiMessage = document.createElement('div');
121
  aiMessage.className = 'chat-message ai-message';
122
- aiMessage.textContent = `I've generated your ${datasetType} dataset. You can now export it for training.`;
 
 
 
 
 
 
123
  chatContainer.appendChild(aiMessage);
 
 
124
  });
125
-
126
- document.getElementById('send-message').addEventListener('click', function() {
127
  const input = document.getElementById('user-input').value;
128
  if (!input) return;
129
 
 
 
 
130
  const chatContainer = document.getElementById('chat-container');
131
  const userMessage = document.createElement('div');
132
  userMessage.className = 'chat-message user-message';
133
  userMessage.textContent = input;
134
  chatContainer.appendChild(userMessage);
135
 
136
- // Simulate AI response
137
- setTimeout(() => {
138
- const aiMessage = document.createElement('div');
139
- aiMessage.className = 'chat-message ai-message';
140
- aiMessage.textContent = "I can help you refine your dataset requirements. What specific aspects would you like to focus on?";
141
- chatContainer.appendChild(aiMessage);
142
- chatContainer.scrollTop = chatContainer.scrollHeight;
143
- }, 1000);
144
-
145
  document.getElementById('user-input').value = '';
146
  chatContainer.scrollTop = chatContainer.scrollHeight;
147
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  </script>
149
  </body>
150
  </html>
 
6
  <title>AI Database Generator</title>
7
  <link rel="stylesheet" href="style.css" />
8
  <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
  <style>
11
+ :root {
12
+ --primary: #6366f1;
13
+ --primary-dark: #4f46e5;
14
+ }
15
+ body {
16
+ font-family: 'Inter', sans-serif;
17
+ background-color: #f9fafb;
18
+ }
19
  .sidebar {
20
+ width: 350px;
21
  height: 100vh;
22
  position: fixed;
23
  right: 0;
24
  top: 0;
25
+ background: white;
26
+ padding: 1.5rem;
27
+ border-left: 1px solid #e5e7eb;
28
  overflow-y: auto;
29
+ box-shadow: -2px 0 10px rgba(0,0,0,0.05);
30
  }
31
  .main-content {
32
+ margin-right: 370px;
33
+ padding: 2rem;
34
  }
35
  .chat-message {
36
+ margin-bottom: 1rem;
37
+ padding: 0.75rem 1rem;
38
+ border-radius: 0.5rem;
39
+ font-size: 0.9rem;
40
+ line-height: 1.5;
41
  }
42
  .user-message {
43
+ background: #eef2ff;
44
+ color: var(--primary-dark);
45
  }
46
  .ai-message {
47
+ background: #f8fafc;
48
+ border: 1px solid #e5e7eb;
49
  }
50
  .api-key-input {
51
+ margin-bottom: 1.5rem;
52
+ padding: 1rem;
53
+ background: #f8fafc;
54
+ border-radius: 0.5rem;
55
+ }
56
+ .card {
57
+ background: white;
58
+ border-radius: 0.75rem;
59
+ padding: 1.5rem;
60
+ margin-bottom: 1.5rem;
61
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
62
+ border: 1px solid #e5e7eb;
63
+ }
64
+ button {
65
+ background: var(--primary);
66
+ color: white;
67
+ padding: 0.5rem 1rem;
68
+ border-radius: 0.375rem;
69
+ font-weight: 500;
70
+ transition: all 0.2s;
71
+ border: none;
72
+ cursor: pointer;
73
+ }
74
+ button:hover {
75
+ background: var(--primary-dark);
76
+ }
77
+ input, textarea, select {
78
+ width: 100%;
79
+ padding: 0.5rem 0.75rem;
80
+ border-radius: 0.375rem;
81
+ border: 1px solid #e5e7eb;
82
+ margin-bottom: 1rem;
83
+ }
84
+ .file-explorer {
85
+ border: 1px dashed #e5e7eb;
86
+ border-radius: 0.5rem;
87
+ padding: 1rem;
88
+ background: #f8fafc;
89
+ min-height: 200px;
90
+ }
91
+ .file-item {
92
+ display: flex;
93
+ align-items: center;
94
+ padding: 0.5rem;
95
+ border-radius: 0.25rem;
96
+ margin-bottom: 0.25rem;
97
+ }
98
+ .file-item:hover {
99
+ background: #eef2ff;
100
+ }
101
+ .file-icon {
102
+ margin-right: 0.5rem;
103
+ color: #6b7280;
104
  }
105
  </style>
106
  </head>
 
122
  <button id="send-message">Send</button>
123
  </div>
124
  </div>
 
125
  <div class="main-content">
126
+ <h1 class="text-3xl font-bold text-gray-800 mb-6">AI Dataset Generator</h1>
127
+
128
  <div class="card">
129
+ <h2 class="text-xl font-semibold mb-4">Configuration</h2>
130
  <div class="form-group">
131
+ <label class="block text-sm font-medium text-gray-700 mb-1">Dataset Type:</label>
132
+ <select id="dataset-type" class="focus:ring-indigo-500 focus:border-indigo-500">
133
  <option value="conversational">Conversational</option>
134
  <option value="qna">Q&A</option>
135
  <option value="code">Code Examples</option>
136
  </select>
137
  </div>
138
  <div class="form-group">
139
+ <label class="block text-sm font-medium text-gray-700 mb-1">Prompt:</label>
140
+ <textarea id="dataset-prompt" rows="4" class="focus:ring-indigo-500 focus:border-indigo-500"
141
+ placeholder="Describe what you want in your dataset..."></textarea>
142
  </div>
143
+ <button id="generate-btn" class="flex items-center">
144
+ <i data-feather="zap" class="mr-2 w-4 h-4"></i> Generate Dataset
145
+ </button>
146
  </div>
147
 
148
  <div class="card" id="output-section" style="display:none;">
149
+ <h2 class="text-xl font-semibold mb-4">Generated Output</h2>
150
+ <div class="file-explorer mb-4" id="file-explorer">
151
+ <div class="file-item">
152
+ <i data-feather="folder" class="file-icon"></i>
153
+ <span>dataset/</span>
154
+ </div>
155
+ <div class="file-item">
156
+ <i data-feather="file-text" class="file-icon"></i>
157
+ <span>train.py</span>
158
+ </div>
159
+ <div class="file-item">
160
+ <i data-feather="file-text" class="file-icon"></i>
161
+ <span>requirements.txt</span>
162
+ </div>
163
+ <div class="file-item">
164
+ <i data-feather="file-text" class="file-icon"></i>
165
+ <span>config.json</span>
166
+ </div>
167
+ <div class="file-item">
168
+ <i data-feather="file-text" class="file-icon"></i>
169
+ <span>dataset.json</span>
170
+ </div>
171
+ <div class="file-item">
172
+ <i data-feather="file-text" class="file-icon"></i>
173
+ <span>notebook.ipynb</span>
174
+ </div>
175
+ </div>
176
+ <div class="flex gap-2 mb-4">
177
+ <button id="export-ipynb" class="flex items-center">
178
+ <i data-feather="download" class="mr-2 w-4 h-4"></i> Export as Jupyter Notebook
179
+ </button>
180
+ <button id="export-zip" class="flex items-center">
181
+ <i data-feather="download" class="mr-2 w-4 h-4"></i> Export as ZIP
182
+ </button>
183
  </div>
184
+ <div class="training-instructions bg-gray-50 p-4 rounded-lg">
185
+ <h3 class="font-medium text-gray-800 mb-2">Training Instructions</h3>
186
+ <div class="bg-gray-800 text-white p-3 rounded-md font-mono text-sm overflow-x-auto">
187
+ <p># Install dependencies</p>
188
+ <p class="text-green-400">pip install -r requirements.txt</p>
189
+ <p class="mt-2"># Start training</p>
190
+ <p class="text-green-400">python train.py</p>
191
+ </div>
192
  </div>
193
  </div>
194
  </div>
 
195
  <script>
196
+ // Initialize feather icons
197
+ document.addEventListener('DOMContentLoaded', function() {
198
+ feather.replace();
199
+
200
+ // Export handlers
201
+ document.getElementById('export-ipynb').addEventListener('click', function() {
202
+ alert('Exporting as Jupyter Notebook...');
203
+ // In a real implementation, this would trigger a download
204
+ });
205
+
206
+ document.getElementById('export-zip').addEventListener('click', function() {
207
+ alert('Exporting as ZIP file with training scripts...');
208
+ // In a real implementation, this would trigger a download
209
+ });
210
+ });
211
+ document.getElementById('generate-btn').addEventListener('click', async function() {
212
  const apiKey = document.getElementById('api-key').value;
213
  if (!apiKey) {
214
  alert('Please enter your Gemini API key first');
215
  return;
216
  }
217
 
218
+ const btn = this;
219
+ btn.disabled = true;
220
+ btn.innerHTML = '<i data-feather="loader" class="mr-2 w-4 h-4 animate-spin"></i> Generating...';
221
+ feather.replace();
222
+
223
  const datasetType = document.getElementById('dataset-type').value;
224
  const prompt = document.getElementById('dataset-prompt').value;
225
 
226
+ // Simulate generation with delay
227
+ await new Promise(resolve => setTimeout(resolve, 2000));
228
+
229
  document.getElementById('output-section').style.display = 'block';
230
+ document.getElementById('file-explorer').innerHTML = `
231
+ <div class="file-item">
232
+ <i data-feather="folder" class="file-icon"></i>
233
+ <span>dataset/</span>
234
+ </div>
235
+ <div class="file-item">
236
+ <i data-feather="file-text" class="file-icon"></i>
237
+ <span>train.py</span>
238
+ </div>
239
+ <div class="file-item">
240
+ <i data-feather="file-text" class="file-icon"></i>
241
+ <span>requirements.txt</span>
242
+ </div>
243
+ <div class="file-item">
244
+ <i data-feather="file-text" class="file-icon"></i>
245
+ <span>config.json</span>
246
+ </div>
247
+ <div class="file-item">
248
+ <i data-feather="file-text" class="file-icon"></i>
249
+ <span>dataset/${datasetType}_dataset.json</span>
250
+ </div>
251
+ <div class="file-item">
252
+ <i data-feather="file-text" class="file-icon"></i>
253
+ <span>${datasetType}_notebook.ipynb</span>
254
+ </div>
255
  `;
256
+ feather.replace();
257
+ btn.disabled = false;
258
+ btn.innerHTML = '<i data-feather="zap" class="mr-2 w-4 h-4"></i> Generate Dataset';
259
+ feather.replace();
260
 
261
  // Add to chat
262
  const chatContainer = document.getElementById('chat-container');
263
  const userMessage = document.createElement('div');
264
  userMessage.className = 'chat-message user-message';
265
+ userMessage.innerHTML = `I want to generate a <strong>${datasetType}</strong> dataset about: <em>${prompt}</em>`;
266
  chatContainer.appendChild(userMessage);
267
 
268
  const aiMessage = document.createElement('div');
269
  aiMessage.className = 'chat-message ai-message';
270
+ aiMessage.innerHTML = `
271
+ <div class="flex items-start mb-2">
272
+ <i data-feather="check-circle" class="text-green-500 mr-2 w-4 h-4"></i>
273
+ <span>Successfully generated ${datasetType} dataset!</span>
274
+ </div>
275
+ <p>You can now explore the generated files and export them for training.</p>
276
+ `;
277
  chatContainer.appendChild(aiMessage);
278
+ feather.replace();
279
+ chatContainer.scrollTop = chatContainer.scrollHeight;
280
  });
281
+
282
+ document.getElementById('send-message').addEventListener('click', async function() {
283
  const input = document.getElementById('user-input').value;
284
  if (!input) return;
285
 
286
+ const btn = this;
287
+ btn.disabled = true;
288
+
289
  const chatContainer = document.getElementById('chat-container');
290
  const userMessage = document.createElement('div');
291
  userMessage.className = 'chat-message user-message';
292
  userMessage.textContent = input;
293
  chatContainer.appendChild(userMessage);
294
 
 
 
 
 
 
 
 
 
 
295
  document.getElementById('user-input').value = '';
296
  chatContainer.scrollTop = chatContainer.scrollHeight;
297
+
298
+ // Simulate AI response with typing indicator
299
+ const typingIndicator = document.createElement('div');
300
+ typingIndicator.className = 'chat-message ai-message';
301
+ typingIndicator.innerHTML = '<div class="flex space-x-1"><div class="w-2 h-2 rounded-full bg-gray-400 animate-pulse"></div><div class="w-2 h-2 rounded-full bg-gray-400 animate-pulse delay-100"></div><div class="w-2 h-2 rounded-full bg-gray-400 animate-pulse delay-200"></div></div>';
302
+ chatContainer.appendChild(typingIndicator);
303
+ chatContainer.scrollTop = chatContainer.scrollHeight;
304
+
305
+ // Simulate response delay
306
+ await new Promise(resolve => setTimeout(resolve, 1500));
307
+
308
+ chatContainer.removeChild(typingIndicator);
309
+
310
+ const aiMessage = document.createElement('div');
311
+ aiMessage.className = 'chat-message ai-message';
312
+ aiMessage.innerHTML = `
313
+ <div class="flex items-start">
314
+ <i data-feather="message-square" class="text-indigo-500 mr-2 w-4 h-4"></i>
315
+ <div>
316
+ <p>I can help you refine your dataset requirements.</p>
317
+ <p class="mt-1">What specific aspects of "${input}" would you like to focus on?</p>
318
+ </div>
319
+ </div>
320
+ `;
321
+ chatContainer.appendChild(aiMessage);
322
+ feather.replace();
323
+ chatContainer.scrollTop = chatContainer.scrollHeight;
324
+
325
+ btn.disabled = false;
326
+ });
327
  </script>
328
  </body>
329
  </html>