Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

コードインタープリター

最終更新 Markdown で表示Agent セットアップ

@next では、コードインタープリターはオプトインの拡張機能であり、素の Sandbox 上のメソッドではありません。メソッド名は安定版のインタープリターと同じです。一度取り付けると、sandbox.interpreter.* を呼び出します。runCode は Worker と Durable Object の境界を越えて、プレーンなシリアライズ可能なデータを返します。

シグネチャと型は Interpreter API を参照してください。

取り付け

import { Sandbox as BaseSandbox } from "@cloudflare/sandbox";
import { withInterpreter } from "@cloudflare/sandbox/interpreter";

export class Sandbox extends BaseSandbox {
	interpreter = withInterpreter(this);
}
import { Sandbox as BaseSandbox } from "@cloudflare/sandbox";
import { withInterpreter } from "@cloudflare/sandbox/interpreter";

export class Sandbox extends BaseSandbox<Env> {
	interpreter = withInterpreter(this);
}

このクラスを Worker からエクスポートします。サイドカーは初回利用時にプロビジョニングされます。

イメージ

言語 イメージ
JavaScript / TypeScript デフォルトのサンドボックスイメージ(または JS ランタイム付きの任意のバリアント)
Python -python イメージバリアント

プレビューの Worker パッケージとコンテナイメージは、同じ系統を使います。Dockerfile を参照してください。

コードを実行する

コンテキスト は、削除するかコンテナを置き換えるまで、変数とインポートを保持します。

const sandbox = getSandbox(env.Sandbox, "user-123");

const context = await sandbox.interpreter.createCodeContext({
	language: "python",
	cwd: "/workspace",
});

await sandbox.interpreter.runCode("x = 2", { context });
const result = await sandbox.interpreter.runCode("x * 21", { context });

if (result.error) {
	console.error(result.error.name, result.error.message);
} else {
	console.log(result.results, result.logs.stdout);
}
const sandbox = getSandbox(env.Sandbox, "user-123");

const context = await sandbox.interpreter.createCodeContext({
	language: "python",
	cwd: "/workspace",
});

await sandbox.interpreter.runCode("x = 2", { context });
const result = await sandbox.interpreter.runCode("x * 21", { context });

if (result.error) {
	console.error(result.error.name, result.error.message);
} else {
	console.log(result.results, result.logs.stdout);
}

context を省略すると、runCode はその言語のデフォルトコンテキストを使います(デフォルト言語は python)。使える言語は pythonjavascripttypescript です。

結果のフィールド、ストリーミング(runCodeStream)、コンテキストの一覧・削除メソッドは、Interpreter API を参照してください。

コンテキストは 現在のコンテナ にだけ存在します。停止または置き換えのあとは、新しく作成してください。サンドボックスのライフサイクル を参照してください。

関連情報

役に立ちましたか?