Julian Bilcke
commited on
Commit
·
d32c6ac
1
Parent(s):
9e78595
improve prompt to make it generate less lorem ipsums
Browse files- public/index.html +8 -7
- src/daisy.mts +8 -5
- src/index.mts +22 -15
public/index.html
CHANGED
|
@@ -35,8 +35,8 @@
|
|
| 35 |
name="promptDraft"
|
| 36 |
x-model="promptDraft"
|
| 37 |
rows="10"
|
| 38 |
-
placeholder="
|
| 39 |
-
class="input input-bordered w-full rounded text-stone-
|
| 40 |
></textarea>
|
| 41 |
<button
|
| 42 |
class="btn disabled:text-stone-400"
|
|
@@ -107,11 +107,12 @@
|
|
| 107 |
return {
|
| 108 |
open: false,
|
| 109 |
examples: {
|
| 110 |
-
|
| 111 |
-
|
|
|
|
|
|
|
| 112 |
promptDraft:
|
| 113 |
-
new URLSearchParams(window.location.search).get("prompt")
|
| 114 |
-
"A simple page to compute the BMI (use SI units)",
|
| 115 |
prompt: "",
|
| 116 |
size: 0,
|
| 117 |
minPromptSize: 16, // if you change this, you will need to also change in src/index.mts
|
|
@@ -138,7 +139,7 @@
|
|
| 138 |
const elapsed = (lastTokenAt - this.lastTokenAt) / 1000;
|
| 139 |
this.lastTokenAt = lastTokenAt;
|
| 140 |
if (elapsed > this.timeoutInSec) {
|
| 141 |
-
console.log(`Something went wrong, it
|
| 142 |
this.state = "stopped";
|
| 143 |
return;
|
| 144 |
}
|
|
|
|
| 35 |
name="promptDraft"
|
| 36 |
x-model="promptDraft"
|
| 37 |
rows="10"
|
| 38 |
+
placeholder="Describe your web app"
|
| 39 |
+
class="input input-bordered w-full rounded text-stone-600 bg-stone-100 font-mono text-md md:text-lg h-24 md:h-48"
|
| 40 |
></textarea>
|
| 41 |
<button
|
| 42 |
class="btn disabled:text-stone-400"
|
|
|
|
| 107 |
return {
|
| 108 |
open: false,
|
| 109 |
examples: {
|
| 110 |
+
"compute the BMI": "a simple page to compute the BMI (use SI units)",
|
| 111 |
+
"animals": "app listing various animals",
|
| 112 |
+
// "page about dolphins": "a page about dolphins, with text and a few pictures"
|
| 113 |
+
},
|
| 114 |
promptDraft:
|
| 115 |
+
new URLSearchParams(window.location.search).get("prompt"),
|
|
|
|
| 116 |
prompt: "",
|
| 117 |
size: 0,
|
| 118 |
minPromptSize: 16, // if you change this, you will need to also change in src/index.mts
|
|
|
|
| 139 |
const elapsed = (lastTokenAt - this.lastTokenAt) / 1000;
|
| 140 |
this.lastTokenAt = lastTokenAt;
|
| 141 |
if (elapsed > this.timeoutInSec) {
|
| 142 |
+
console.log(`Something went wrong, it took more than ${this.timeoutInSec} seconds to generate a token.`);
|
| 143 |
this.state = "stopped";
|
| 144 |
return;
|
| 145 |
}
|
src/daisy.mts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
| 1 |
-
export const daisy =
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export const daisy = `## DaisyUI docs
|
| 2 |
+
### To create a nice layout, wrap each article in:
|
| 3 |
+
<article class="prose"></article>
|
| 4 |
+
### Use appropriate CSS classes
|
| 5 |
+
<button class="btn ..">
|
| 6 |
+
<table class="table ..">
|
| 7 |
+
<footer class="footer ..">
|
| 8 |
+
`
|
src/index.mts
CHANGED
|
@@ -54,7 +54,7 @@ app.get('/app', async (req, res) => {
|
|
| 54 |
|
| 55 |
pending.queue.push(id)
|
| 56 |
|
| 57 |
-
const prefix = `<html><head><link href=
|
| 58 |
res.write(prefix)
|
| 59 |
|
| 60 |
req.on('close', function() {
|
|
@@ -68,27 +68,34 @@ app.get('/app', async (req, res) => {
|
|
| 68 |
|
| 69 |
const finalPrompt = `# Task
|
| 70 |
Generate the following: ${req.query.prompt}
|
| 71 |
-
# API
|
| 72 |
${daisy}
|
| 73 |
# Guidelines
|
| 74 |
-
- Never repeat the
|
| 75 |
-
-
|
| 76 |
-
-
|
| 77 |
-
-
|
| 78 |
-
-
|
| 79 |
-
- You must use
|
| 80 |
-
-
|
| 81 |
-
- You MUST use English, not Latin!
|
| 82 |
-
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
<
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
try {
|
| 88 |
let result = ''
|
| 89 |
for await (const output of hf.textGenerationStream({
|
| 90 |
inputs: finalPrompt,
|
| 91 |
-
parameters: {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
})) {
|
| 93 |
if (!pending.queue.includes(id)) {
|
| 94 |
break
|
|
|
|
| 54 |
|
| 55 |
pending.queue.push(id)
|
| 56 |
|
| 57 |
+
const prefix = `<html><head><link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/full.css" rel="stylesheet" type="text/css" /><script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script><script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp"></script><title>Generated content</title><body>`
|
| 58 |
res.write(prefix)
|
| 59 |
|
| 60 |
req.on('close', function() {
|
|
|
|
| 68 |
|
| 69 |
const finalPrompt = `# Task
|
| 70 |
Generate the following: ${req.query.prompt}
|
| 71 |
+
# API Doc
|
| 72 |
${daisy}
|
| 73 |
# Guidelines
|
| 74 |
+
- Never repeat the instructions, instead write the final code
|
| 75 |
+
- To generate images use the /image endpoint: <img src="/image?prompt=caption of the photo" />
|
| 76 |
+
- Be descriptive for photo caption, use at last 10 words.
|
| 77 |
+
- **NEVER** add more than 3 or 4 images
|
| 78 |
+
- Never write lists that are too long
|
| 79 |
+
- You must use TailwindCSS utility classes (Tailwind is already injected in the page).
|
| 80 |
+
- If needed, embed new custom JS code using <script>...</script>
|
| 81 |
+
- You MUST use English, not Latin! Write in English! Never write "lorem ipsum.."
|
| 82 |
+
- Use a central layout to wrap everything in a <div class='flex flex-col items-center'>
|
| 83 |
+
# Output
|
| 84 |
+
<html>
|
| 85 |
+
<head>
|
| 86 |
+
<title>Site</title>
|
| 87 |
+
</head>
|
| 88 |
+
<body>`
|
| 89 |
|
| 90 |
try {
|
| 91 |
let result = ''
|
| 92 |
for await (const output of hf.textGenerationStream({
|
| 93 |
inputs: finalPrompt,
|
| 94 |
+
parameters: {
|
| 95 |
+
do_sample: true,
|
| 96 |
+
max_new_tokens: 1200,
|
| 97 |
+
return_full_text: false,
|
| 98 |
+
}
|
| 99 |
})) {
|
| 100 |
if (!pending.queue.includes(id)) {
|
| 101 |
break
|