import OpenAI from "openai";
import GboxSDK from "gbox-sdk";
import * as dotenv from "dotenv";
dotenv.config();
// Initialize clients
const openaiClient = new OpenAI({
apiKey: process.env["OPENAI_API_KEY"],
});
const gboxSDK = new GboxSDK({
apiKey: process.env["GBOX_API_KEY"],
});
// Extract Python code blocks
function extractPythonCode(text: string): string[] {
const regex = /```python\n([\s\S]*?)\n```/g;
const codeBlocks: string[] = [];
let match;
while ((match = regex.exec(text)) !== null) {
codeBlocks.push(match[1].trim());
}
return codeBlocks;
}
async function main() {
try {
// 1. Generate Python code using OpenAI
const response = await openaiClient.chat.completions.create({
model: "gpt-4o",
messages: [
{
role: "system",
content:
"Generate Python code to solve problems. Always wrap code in ```python blocks.",
},
{
role: "user",
content: "Calculate the first 10 Fibonacci numbers",
},
],
max_tokens: 1000,
temperature: 0.7,
});
const aiResponse = response.choices[0].message.content || "";
console.log("\nOpenAI Response:");
console.log(aiResponse);
// 2. Extract and execute Python code
const codeBlocks = extractPythonCode(aiResponse);
if (codeBlocks.length === 0) {
console.log("No executable code found");
return;
}
// 3. Execute code in Gbox
const box = await gboxSDK.create({ type: "linux" });
try {
for (const code of codeBlocks) {
console.log("\nExecuting code:");
console.log(code);
console.log("---");
const result = await box.runCode(code);
console.log("Execution result:");
console.log(result.stdout || result.stderr || "No output");
}
} finally {
await box.terminate();
}
} catch (error) {
console.error("Error:", error);
}
}
main();