jbilcke-hf HF staff commited on
Commit
9d13a4e
1 Parent(s): 3bcd657

various improvements

Browse files
Files changed (2) hide show
  1. src/alpine.mts +1 -1
  2. src/index.mts +24 -8
src/alpine.mts CHANGED
@@ -217,4 +217,4 @@ notify(message) {
217
 
218
  export const methodsPrompt = getPromptFromFeatures(methods)
219
 
220
- export const alpine = '' // "# Alpine.js docs\n"+ attributesPrompt + propertiesPrompt + methodsPrompt
 
217
 
218
  export const methodsPrompt = getPromptFromFeatures(methods)
219
 
220
+ export const alpine = "# Alpine.js docs\n"+ attributesPrompt // + propertiesPrompt + methodsPrompt
src/index.mts CHANGED
@@ -14,7 +14,7 @@ const css = [
14
  .join("")
15
 
16
  const script = [
17
- // "/js/alpinejs@3.12.2.js",
18
  "/js/tailwindcss@3.3.2.js"
19
  ].map(item => `<script src="${item}"></script>`)
20
  .join("")
@@ -29,8 +29,9 @@ const llm = await AutoModelForCausalLM.from_pretrained$(
29
  const app = express()
30
  const port = 7860
31
 
32
- const timeoutInSec = 8 * 60
33
- console.log("timeout set to 8 minutes")
 
34
 
35
  app.use(express.static("public"))
36
 
@@ -53,6 +54,17 @@ const endRequest = (id: string, reason: string) => {
53
  console.log(`request ${id} ended (${reason})`)
54
  }
55
 
 
 
 
 
 
 
 
 
 
 
 
56
  app.get("/debug", (req, res) => {
57
  res.write(JSON.stringify({
58
  nbTotal: pending.total,
@@ -96,20 +108,24 @@ app.get("/", async (req, res) => {
96
  Generate a webpage written in English about: ${req.query.prompt}.
97
  # Documentation
98
  ${daisy}
99
- ${alpine}
100
  # Guidelines
101
- - You use Tailwind CSS and DaisyUI!
 
 
 
102
  - You MUST use English, not Latin! (I repeat: do NOT write lorem ipsum!)
 
103
  - Use a central layout by wrapping everything in a \`<div class="flex flex-col justify-center">\`
104
  # Result output
105
  ${prefix}`
106
 
107
 
108
  try {
 
109
  const inputTokens = await llm.tokenize(finalPrompt)
110
  console.log("initializing the generator (may take 30s or more)")
111
  const generator = await llm.generate(inputTokens)
112
-
113
  for await (const token of generator) {
114
  if (!pending.queue.includes(id)) {
115
  break
@@ -119,9 +135,9 @@ ${prefix}`
119
  res.write(tmp)
120
  }
121
 
122
- endRequest(id, `normal end of the llama stream for request ${id}`)
123
  } catch (e) {
124
- endRequest(id, `premature end of the llama stream for request ${id} (${e})`)
125
  }
126
 
127
  try {
 
14
  .join("")
15
 
16
  const script = [
17
+ "/js/alpinejs@3.12.2.js",
18
  "/js/tailwindcss@3.3.2.js"
19
  ].map(item => `<script src="${item}"></script>`)
20
  .join("")
 
29
  const app = express()
30
  const port = 7860
31
 
32
+ const timeoutInSec = 60 * 60
33
+
34
+ console.log("timeout set to 60 minutes")
35
 
36
  app.use(express.static("public"))
37
 
 
54
  console.log(`request ${id} ended (${reason})`)
55
  }
56
 
57
+ // we need to exit the open Python process or else it will keep running in the background
58
+ process.on('SIGINT', () => {
59
+ try {
60
+ (python as any).exit()
61
+ } catch (err) {
62
+ // exiting Pythonia can get a bit messy: try/catch or not,
63
+ // you *will* see warnings and tracebacks in the console
64
+ }
65
+ process.exit(0)
66
+ })
67
+
68
  app.get("/debug", (req, res) => {
69
  res.write(JSON.stringify({
70
  nbTotal: pending.total,
 
108
  Generate a webpage written in English about: ${req.query.prompt}.
109
  # Documentation
110
  ${daisy}
 
111
  # Guidelines
112
+ - Do not write a tutorial or repeat the instruction, but directly write the final code within a script tag
113
+ - Use a color scheme consistent with the brief and theme
114
+ - You need to use Tailwind CSS and DaisyUI for the UI, pure vanilla JS and AlpineJS for the JS.
115
+ - You vanilla JS code will be written directly inside the page, using <script type="text/javascript">...</script>
116
  - You MUST use English, not Latin! (I repeat: do NOT write lorem ipsum!)
117
+ - No need to write code comments, and try to make the code compact (short function names etc)
118
  - Use a central layout by wrapping everything in a \`<div class="flex flex-col justify-center">\`
119
  # Result output
120
  ${prefix}`
121
 
122
 
123
  try {
124
+ // be careful: if you input a prompt which is too large, you may experience a timeout
125
  const inputTokens = await llm.tokenize(finalPrompt)
126
  console.log("initializing the generator (may take 30s or more)")
127
  const generator = await llm.generate(inputTokens)
128
+ console.log("generator initialized, beginning token streaming..")
129
  for await (const token of generator) {
130
  if (!pending.queue.includes(id)) {
131
  break
 
135
  res.write(tmp)
136
  }
137
 
138
+ endRequest(id, `normal end of the LLM stream for request ${id}`)
139
  } catch (e) {
140
+ endRequest(id, `premature end of the LLM stream for request ${id} (${e})`)
141
  }
142
 
143
  try {