Add Prompt Helper
parent
218907fa1d
commit
7195fab629
|
|
@ -0,0 +1,141 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Dynamic Prompt Generator</title>
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container mt-5">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="mainPrompt">My prompt is:</label>
|
||||||
|
<input type="text" class="form-control" id="mainPrompt">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="subjectName">The name for my subject is:</label>
|
||||||
|
<input type="text" class="form-control" id="subjectName">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="subjectClass">The class of my subject is:</label>
|
||||||
|
<input type="text" class="form-control" id="subjectClass">
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-primary" onclick="generatePrompts()">Generate Prompts</button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<label>My training prompt would be:</label>
|
||||||
|
<p id="trainingPrompt"></p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>My class prompt would be:</label>
|
||||||
|
<p id="classPrompt"></p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>My sample prompt would be:</label>
|
||||||
|
<p id="samplePrompt"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="application/javascript">
|
||||||
|
|
||||||
|
function makeInstancePrompt(baseString, instanceToken, classToken) {
|
||||||
|
let indefinites = ["the " + instanceToken, "an " + instanceToken, "a " + instanceToken, instanceToken];
|
||||||
|
let classIndefinites = ["the " + classToken, "an " + classToken, "a " + classToken, classToken];
|
||||||
|
let article = indefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
let classArticle = null;
|
||||||
|
if (classToken !== "") {
|
||||||
|
classArticle = classIndefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
}
|
||||||
|
if (article && classArticle) {
|
||||||
|
return baseString;
|
||||||
|
} else if (article) {
|
||||||
|
// Replace article with article + classToken
|
||||||
|
return baseString.replace(article, `${article} ${classToken}`);
|
||||||
|
} else if (classArticle) {
|
||||||
|
// Replace classArticle with article + instanceToken
|
||||||
|
return baseString.replace(classArticle, `${instanceToken} ${classArticle}`);
|
||||||
|
} else {
|
||||||
|
// Append article + instanceToken + classToken
|
||||||
|
return `${baseString}, ${article} ${instanceToken} ${classToken}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeClassPrompt(baseString, instanceToken, classToken) {
|
||||||
|
let indefinites = ["the " + instanceToken, "an " + instanceToken, "a " + instanceToken, instanceToken];
|
||||||
|
let classIndefinites = ["the " + classToken, "an " + classToken, "a " + classToken, classToken];
|
||||||
|
let article = indefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
let classArticle = null;
|
||||||
|
if (classToken !== "") {
|
||||||
|
classArticle = classIndefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
}
|
||||||
|
if (article && !classArticle) {
|
||||||
|
// Replace article classToken
|
||||||
|
return baseString.replace(article, classToken);
|
||||||
|
} else if (article && classArticle) {
|
||||||
|
// Remove article
|
||||||
|
return baseString.replace(article, "");
|
||||||
|
} else if (classArticle) {
|
||||||
|
return baseString;
|
||||||
|
} else {
|
||||||
|
// Append article + classToken
|
||||||
|
return `${baseString}, ${classToken}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sample prompt should always have the instanceToken or article, and never classToken or classArticle
|
||||||
|
function makeSamplePrompt(baseString, instanceToken, classToken) {
|
||||||
|
let indefinites = ["the " + instanceToken, "an " + instanceToken, "a " + instanceToken, instanceToken];
|
||||||
|
let classIndefinites = ["the " + classToken, "an " + classToken, "a " + classToken, classToken];
|
||||||
|
let article = indefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
let classArticle = null;
|
||||||
|
if (classToken !== "") {
|
||||||
|
classArticle = classIndefinites.find(indefinite => baseString.includes(indefinite));
|
||||||
|
}
|
||||||
|
if (article && !classArticle) {
|
||||||
|
return baseString;
|
||||||
|
} else if (article && classArticle) {
|
||||||
|
// Remove classArticle
|
||||||
|
return baseString.replace(classArticle, "");
|
||||||
|
} else if (classArticle) {
|
||||||
|
// Remove classArticle
|
||||||
|
return baseString.replace(classArticle, instanceToken);
|
||||||
|
} else {
|
||||||
|
// Append article + instanceToken
|
||||||
|
return `${baseString}, ${instanceToken}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split the prompt by commas, and then remove and empty whitespace or double spaces, then rejoin and return
|
||||||
|
function cleanPrompt(inputPrompt) {
|
||||||
|
let promptArray = inputPrompt.split(",");
|
||||||
|
promptArray = promptArray.map(prompt => prompt.trim());
|
||||||
|
promptArray = promptArray.filter(prompt => prompt !== "");
|
||||||
|
return promptArray.join(", ");
|
||||||
|
}
|
||||||
|
function generatePrompts() {
|
||||||
|
const mainPrompt = document.getElementById("mainPrompt").value;
|
||||||
|
const subjectName = document.getElementById("subjectName").value;
|
||||||
|
const subjectClass = document.getElementById("subjectClass").value;
|
||||||
|
|
||||||
|
// Helper function to check and append with articles
|
||||||
|
|
||||||
|
// Training prompt logic
|
||||||
|
let trainingPrompt = mainPrompt;
|
||||||
|
trainingPrompt = makeInstancePrompt(trainingPrompt, subjectName, subjectClass);
|
||||||
|
|
||||||
|
// Class prompt logic
|
||||||
|
let classPrompt = makeClassPrompt(mainPrompt, subjectName, subjectClass);
|
||||||
|
|
||||||
|
// Sample prompt logic
|
||||||
|
let samplePrompt = makeSamplePrompt(mainPrompt, subjectName, subjectClass);
|
||||||
|
|
||||||
|
trainingPrompt = cleanPrompt(trainingPrompt);
|
||||||
|
classPrompt = cleanPrompt(classPrompt);
|
||||||
|
samplePrompt = cleanPrompt(samplePrompt);
|
||||||
|
|
||||||
|
// Display the results
|
||||||
|
document.getElementById("trainingPrompt").textContent = trainingPrompt;
|
||||||
|
document.getElementById("classPrompt").textContent = classPrompt;
|
||||||
|
document.getElementById("samplePrompt").textContent = samplePrompt;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue