LLM Code Generator
LLM writes AsyncJS code from a description (requires llm capability)
function generateCode({ task = 'Calculate the factorial of n' }) {
// System prompt with AsyncJS rules and complete example
let systemContext =
'You write AsyncJS code. AsyncJS is a subset of JavaScript.\n\nRULES:\n- Functions take a destructured object param: function foo({ a, b })\n- MUST return an object. WRONG: return 42. RIGHT: return { result: 42 }\n- Types by example: fn({ n: 5 }) means required number param with example value 5\n- NO: async, await, new, class, this, var, for, generator functions (function*)\n- Use let for variables, while for loops\n\nEXAMPLE - calculating sum of 1 to n:\nfunction sumTo({ n: 10 }) {\n let sum = 0\n let i = 1\n while (i <= n) {\n sum = sum + i\n i = i + 1\n }\n return { result: sum }\n}'
let schema = Schema.response('generated_code', {
code: '',
description: '',
})
let prompt =
systemContext +
'\n\nWrite an AsyncJS function for: ' +
task +
'\n\nReturn ONLY valid AsyncJS code in the code field. Must start with "function" and use while loops (not for loops).'
let response = llmPredict({ prompt, options: { responseFormat: schema } })
let result = JSON.parse(response)
// Clean up any markdown fences and fix escaped newlines
let code = result.code
code = code.replace(/```(?:javascript|js)?\n?/g, '')
code = code.replace(/\n?```/g, '')
code = code.replace(/\\n/g, '\n')
code = code.replace(/\\t/g, '\t')
code = code.trim()
return {
task,
code,
description: result.description,
}
}