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,
  }
}