LLM Code Solver
LLM writes and runs code to solve a problem (requires llm capability)
function solveWithCode({ problem = 'Calculate the 10th Fibonacci number' }) {
// System prompt with AsyncJS rules and example
let systemContext =
'You write AsyncJS code. AsyncJS is a JavaScript subset.\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- NO: async, await, new, class, this, var, for loops\n- Use let for variables, while for loops\n\nEXAMPLE (factorial):\nfunction solve() {\n let result = 1\n let i = 5\n while (i > 1) {\n result = result * i\n i = i - 1\n }\n return { result }\n}\n\nReturn ONLY the function code, nothing else.'
let prompt =
systemContext + '\n\nWrite a function called "solve" that: ' + problem
let response = llmPredict({ prompt })
// Clean up code - remove markdown fences, fix escapes, extract function
let code = response
code = code.replace(/```(?:javascript|js|asyncjs)?\n?/g, '')
code = code.replace(/\n?```/g, '')
code = code.replace(/\\n/g, '\n')
code = code.replace(/\\t/g, '\t')
code = code.replace(/\\"/g, '"')
code = code.trim()
// Try to extract just the function if there's extra text
let funcMatch = code.match(/function\s+solve\s*\([^)]*\)\s*\{[\s\S]*\}/)
if (funcMatch) {
code = funcMatch[0]
}
// Validate it looks like a function before running
if (!code.startsWith('function')) {
return {
problem,
error: 'LLM did not generate valid code',
rawResponse: response,
}
}
// Execute the generated code
let output = runCode({ code, args: {} })
return {
problem,
generatedCode: code,
result: output.result,
}
}