feat(console): generate prompt input before generating code v0.8.3
This commit is contained in:
+17
-2
@@ -392,9 +392,16 @@
|
|||||||
</textarea>
|
</textarea>
|
||||||
<div style="margin-top:6px; display:flex; gap:6px; flex-wrap:wrap;">
|
<div style="margin-top:6px; display:flex; gap:6px; flex-wrap:wrap;">
|
||||||
<button class="btn ghost" id="c-ai-btn" onclick="aiCheck('c-code','c-lang','c-ai-result')">🔍 Проверить синтаксис</button>
|
<button class="btn ghost" id="c-ai-btn" onclick="aiCheck('c-code','c-lang','c-ai-result')">🔍 Проверить синтаксис</button>
|
||||||
<button class="btn ghost" id="c-gen-btn" onclick="aiGenerate()">✨ Сгенерировать код</button>
|
<button class="btn ghost" id="c-gen-btn" onclick="showGenPrompt()">✨ Сгенерировать код</button>
|
||||||
<button class="btn ghost" id="c-exp-btn" onclick="aiExplain('c-code','c-lang','c-ai-result')">📖 Что делает?</button>
|
<button class="btn ghost" id="c-exp-btn" onclick="aiExplain('c-code','c-lang','c-ai-result')">📖 Что делает?</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="c-gen-prompt" style="display:none; margin-top:8px; display:none; gap:6px; align-items:center;">
|
||||||
|
<input id="c-gen-desc" type="text" placeholder="Что должна делать функция? (напр: принять JSON, вернуть сумму чисел)"
|
||||||
|
style="flex:1; background:#2a2a42; border:1px solid #3a3a5c; border-radius:4px;
|
||||||
|
color:#cdd6f4; padding:6px 8px; font-size:.82rem; outline:none; width:100%;"
|
||||||
|
onkeydown="if(event.key==='Enter')aiGenerate()" />
|
||||||
|
<button class="btn" onclick="aiGenerate()" style="white-space:nowrap;">▶ Генерировать</button>
|
||||||
|
</div>
|
||||||
<div id="c-ai-result" style="display:none;margin-top:8px;padding:10px 12px;border-radius:6px;font-size:13px;line-height:1.5;white-space:pre-wrap;font-family:monospace;"></div>
|
<div id="c-ai-result" style="display:none;margin-top:8px;padding:10px 12px;border-radius:6px;font-size:13px;line-height:1.5;white-space:pre-wrap;font-family:monospace;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
@@ -921,19 +928,27 @@
|
|||||||
}
|
}
|
||||||
msgs.scrollTop = msgs.scrollHeight;
|
msgs.scrollTop = msgs.scrollHeight;
|
||||||
}
|
}
|
||||||
|
function showGenPrompt() {
|
||||||
|
var el = document.getElementById('c-gen-prompt');
|
||||||
|
el.style.display = 'flex';
|
||||||
|
document.getElementById('c-gen-desc').focus();
|
||||||
|
}
|
||||||
async function aiGenerate() {
|
async function aiGenerate() {
|
||||||
var name = (document.getElementById('c-name').value || '').trim() || 'my-func';
|
var name = (document.getElementById('c-name').value || '').trim() || 'my-func';
|
||||||
var lang = document.getElementById('c-lang').value || 'python';
|
var lang = document.getElementById('c-lang').value || 'python';
|
||||||
|
var desc = (document.getElementById('c-gen-desc').value || '').trim();
|
||||||
|
if (!desc) { document.getElementById('c-gen-desc').focus(); return; }
|
||||||
var btn = document.getElementById('c-gen-btn');
|
var btn = document.getElementById('c-gen-btn');
|
||||||
var resEl = document.getElementById('c-ai-result');
|
var resEl = document.getElementById('c-ai-result');
|
||||||
btn.disabled = true; btn.textContent = '⏳ Генерирую...';
|
btn.disabled = true; btn.textContent = '⏳ Генерирую...';
|
||||||
resEl.style.display = 'block'; resEl.style.background = 'var(--bg-alt)'; resEl.style.color = 'var(--fg)';
|
resEl.style.display = 'block'; resEl.style.background = 'var(--bg-alt)'; resEl.style.color = 'var(--fg)';
|
||||||
resEl.textContent = 'Запрашиваю у LLM...';
|
resEl.textContent = 'Запрашиваю у LLM...';
|
||||||
try {
|
try {
|
||||||
var q = 'Напиши функцию Fission на ' + lang + ' с именем "' + name + '". Верни только чистый код без пояснений и без markdown-блоков.';
|
var q = 'Напиши функцию Fission на ' + lang + ' с именем "' + name + '". Функция должна: ' + desc + '. Верни только чистый код без пояснений и без markdown-блоков.';
|
||||||
var d = await requestJSON('/console/api/ai/ask', 'POST', {question: q});
|
var d = await requestJSON('/console/api/ai/ask', 'POST', {question: q});
|
||||||
var code = (d.answer || '').replace(/^```[\w]*\n?/, '').replace(/\n?```$/, '');
|
var code = (d.answer || '').replace(/^```[\w]*\n?/, '').replace(/\n?```$/, '');
|
||||||
document.getElementById('c-code').value = code;
|
document.getElementById('c-code').value = code;
|
||||||
|
document.getElementById('c-gen-prompt').style.display = 'none';
|
||||||
resEl.style.background = '#1a3a1a'; resEl.style.color = '#8f8';
|
resEl.style.background = '#1a3a1a'; resEl.style.color = '#8f8';
|
||||||
resEl.textContent = 'Код сгенерирован и вставлен.';
|
resEl.textContent = 'Код сгенерирован и вставлен.';
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user