INTEGRITY Dokumentace

Vytvořte AI spouštěč kódu

Vytvořte systém pro spouštění kódu poháněný AI, který využívá Sandbox SDK a Claude. Převeďte dotazy v přirozeném jazyce na kód v Pythonu, bezpečně ho spusťte a vraťte výsledky.

Doba dokončení: 20 minut

Co vytvoříte

API, které přijímá dotazy jako „Jaké je 100. Fibonacciho číslo?“, pomocí Claude vygeneruje kód v Pythonu, spustí ho v izolovaném sandboxu a vrátí výsledky.

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

Budete také potřebovat:

1. Vytvořte projekt

Vytvořte nový projekt Sandbox SDK:

npm create cloudflare@latest -- ai-code-executor --template=cloudflare/sandbox-sdk/examples/minimal
cd ai-code-executor

2. Nainstalujte závislosti

Nainstalujte Anthropic SDK:

npm i @anthropic-ai/sdk

3. Sestavte spouštěč kódu

Nahraďte obsah src/index.ts:

import { getSandbox, type Sandbox } from '@cloudflare/sandbox';
import Anthropic from '@anthropic-ai/sdk';

export { Sandbox } from '@cloudflare/sandbox';

interface Env {
	Sandbox: DurableObjectNamespace<Sandbox>;
	ANTHROPIC_API_KEY: string;
}

export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		if (request.method !== 'POST' || new URL(request.url).pathname !== '/execute') {
			return new Response('POST /execute with { "question": "your question" }');
		}

		try {
			const { question } = await request.json();

			if (!question) {
				return Response.json({ error: 'Question is required' }, { status: 400 });
			}

			// Use Claude to generate Python code
			const anthropic = new Anthropic({ apiKey: env.ANTHROPIC_API_KEY });
			const codeGeneration = await anthropic.messages.create({
				model: 'claude-sonnet-4-5',
				max_tokens: 1024,
				messages: [{
					role: 'user',
					content: `Generate Python code to answer: "${question}"

Requirements:
- Use only Python standard library
- Print the result using print()
- Keep code simple and safe

Return ONLY the code, no explanations.`
				}],
			});

			const generatedCode = codeGeneration.content[0]?.type === 'text'
				? codeGeneration.content[0].text
				: '';

			if (!generatedCode) {
				return Response.json({ error: 'Failed to generate code' }, { status: 500 });
			}

			// Strip markdown code fences if present
			const cleanCode = generatedCode
				.replace(/^```python?\n?/, '')
				.replace(/\n?```\s*$/, '')
				.trim();

			// Execute the code in a sandbox
			const sandbox = getSandbox(env.Sandbox, 'demo-user');
			await sandbox.writeFile('/tmp/code.py', cleanCode);
			const result = await sandbox.exec('python /tmp/code.py');

			return Response.json({
				success: result.success,
				question,
				code: generatedCode,
				output: result.stdout,
				error: result.stderr
			});

		} catch (error: any) {
			return Response.json(
				{ error: 'Internal server error', message: error.message },
				{ status: 500 }
			);
		}
	},
};

Jak to funguje:

  1. Přijímá dotaz přes POST na /execute
  2. Využívá Claude ke generování kódu v Pythonu
  3. Zapíše kód do /tmp/code.py v sandboxu
  4. Spouští s sandbox.exec('python /tmp/code.py')
  5. Vrátí jak kód, tak výsledky provedení

4. Nastavte lokální proměnné prostředí

Vytvořte .dev.vars soubor v kořenovém adresáři projektu pro lokální vývoj:

echo "ANTHROPIC_API_KEY=your_api_key_here" > .dev.vars

Nahraďte your_api_key_here svým skutečným API klíčem z Anthropic Console ↗.

5. Otestujte lokálně

Spusťte vývojový server:

npm run dev

Otestujte pomocí curl:

curl -X POST http://localhost:8787/execute \
  -H "Content-Type: application/json" \
  -d '{"question": "What is the 10th Fibonacci number?"}'

Odpověď:

{
  "success": true,
  "question": "What is the 10th Fibonacci number?",
  "code": "def fibonacci(n):\n    if n <= 1:\n        return n\n    return fibonacci(n-1) + fibonacci(n-2)\n\nprint(fibonacci(10))",
  "output": "55\n",
  "error": ""
}

6. Nasaďte

Nasaďte svůj Worker:

npx wrangler deploy

Poté nastavte svůj API klíč Anthropic jako produkční secret:

npx wrangler secret put ANTHROPIC_API_KEY

Vložte svůj API klíč z Anthropic Console ↗ po zobrazení výzvy.

7. Otestujte nasazení

Vyzkoušejte jiné dotazy:

# Factorial
curl -X POST https://ai-code-executor.YOUR_SUBDOMAIN.workers.dev/execute \
  -H "Content-Type: application/json" \
  -d '{"question": "Calculate the factorial of 5"}'

# Statistics
curl -X POST https://ai-code-executor.YOUR_SUBDOMAIN.workers.dev/execute \
  -H "Content-Type: application/json" \
  -d '{"question": "What is the mean of [10, 20, 30, 40, 50]?"}'

# String manipulation
curl -X POST https://ai-code-executor.YOUR_SUBDOMAIN.workers.dev/execute \
  -H "Content-Type: application/json" \
  -d '{"question": "Reverse the string \"Hello World\""}'

Co jste vytvořili

Vytvořili jste systém pro spouštění kódu s AI, který:

Další kroky