← Sandbox SDK / sandbox / tutorials
Создание ИИ-исполнителя кода
Создание системы выполнения кода на базе ИИ с использованием Sandbox SDK и Claude. Преобразуйте вопросы на естественном языке в код на Python, безопасно выполняйте его и возвращайте результаты.
Время выполнения: 20 минут
Что вы создадите
API, который принимает вопросы вроде «Каково 100-е число Фибоначчи?», использует Claude для генерации кода на Python, выполняет его в изолированном sandbox и возвращает результат.
Предварительные требования
- Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
- Установка
Node.js↗.
менеджер версий Node.js
Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.
Также потребуется:
- Одна Ключ API Anthropic ↗ для Claude
- Docker ↗ локальный запуск
1. Создайте проект
Создайте новый проект Sandbox SDK:
npm create cloudflare@latest -- ai-code-executor --template=cloudflare/sandbox-sdk/examples/minimalcd ai-code-executor2. Установите зависимости
Установите Anthropic SDK:
npm i @anthropic-ai/sdk3. Постройте исполнитель кода
Замените содержимое 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 }
);
}
},
};Как это работает:
- Получает вопрос через POST-запрос к
/execute - Использует Claude для генерации кода на Python
- Записывает код в
/tmp/code.pyв песочнице - Выполняется с
sandbox.exec('python /tmp/code.py') - Возвращает код и результаты выполнения
4. Настройте локальные переменные окружения
Создайте .dev.vars файл в корне вашего проекта для локальной разработки:
echo "ANTHROPIC_API_KEY=your_api_key_here" > .dev.varsЗамените your_api_key_here на ваш действующий API-ключ из Anthropic Console ↗.
5. Протестируйте локально
Запустите сервер разработки:
npm run devТестирование с помощью curl:
curl -X POST http://localhost:8787/execute \
-H "Content-Type: application/json" \
-d '{"question": "What is the 10th Fibonacci number?"}'Ответ:
{
"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. Разверните
Разверните ваш Worker:
npx wrangler deployЗатем задайте ключ API Anthropic в качестве секрета для продакшена:
npx wrangler secret put ANTHROPIC_API_KEYВставьте свой API-ключ из Anthropic Console ↗ при появлении запроса.
7. Проверка развёртывания
Попробуйте другие вопросы:
# 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\""}'Что вы создали
Вы создали систему выполнения кода на основе ИИ, которая:
- Принимает вопросы на естественном языке
- Генерирует код Python с помощью Claude
- Безопасно выполняет код в изолированных песочницах
- Возвращает результаты с обработкой ошибок
Следующие шаги
- Code interpreter с Workers AI - Используйте нативные модели ИИ Cloudflare с официальными пакетами
- Анализ данных с помощью ИИ - Добавьте pandas и matplotlib для анализа данных
- Code Interpreter API - Используйте встроенный интерпретатор кода вместо exec
- Потоковый вывод - Отображение прогресса выполнения в реальном времени
- Справочник по API - Ознакомьтесь со всеми доступными методами
Дополнительные материалы
- Документация Anthropic Claude ↗
- Workers AI - Используйте встроенные модели Cloudflare
- пакет workers-ai-provider ↗ - Официальная интеграция с Workers AI