> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# サンドボックスのライフサイクル

export const SandboxConfigHint = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <Note>Before running the example code in this document, please ensure you have properly configured environment variables. For details, please refer to <a href="/docs/ja/guides/sandbox-your-first-agent-sandbox#configure-environment-variables">Configure Environment Variables</a>.</Note>;
  }
};

サンドボックスは、タイムアウトが期限切れになるか、手動で停止するまで実行され続けます。デフォルトでは、新しいサンドボックスは 5 分間維持されます。サンドボックスの作成時に別のタイムアウトを設定したり、実行中にタイムアウトを更新したり、サンドボックス情報を確認したり、完了したら停止したりできます。

<SandboxConfigHint />

## タイムアウト付きでサンドボックスを作成する

作業がどのくらい実行されるべきかが分かっている場合は、作成時にタイムアウトを設定します。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox/code-interpreter'

  // Timeout is in milliseconds.
  const sandbox = await Sandbox.create({ timeoutMs: 60_000 })

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  # Timeout is in seconds.
  sandbox = Sandbox.create(timeout=60)

  sandbox.kill()
  ```
</CodeGroup>

## タイムアウトを更新する

`setTimeout` メソッドを使用して、サンドボックスをあとどれくらい維持するかをリセットできます。これは、元のタイムアウトが期限切れになるはずだった後もユーザーのアクティビティが続く場合に便利です。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox/code-interpreter'

  const sandbox = await Sandbox.create({ timeoutMs: 60_000 })

  await sandbox.setTimeout(300_000)

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.create(timeout=60)

  sandbox.set_timeout(300)

  sandbox.kill()
  ```
</CodeGroup>

## サンドボックス情報を取得する

JavaScript では `getInfo` メソッドを、Python では `get_info` メソッドを使用して、サンドボックス ID、テンプレート、メタデータ、現在の状態、有効期限を確認できます。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox/code-interpreter'

  const sandbox = await Sandbox.create({ timeoutMs: 60_000 })

  const info = await sandbox.getInfo()

  console.log(info.sandboxId)
  console.log(info.templateId)
  console.log(info.state)
  console.log(info.startedAt)
  console.log(info.endAt)

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.create(timeout=60)

  info = sandbox.get_info()

  print(info.sandbox_id)
  print(info.template_id)
  print(info.state)
  print(info.started_at)
  print(info.end_at)

  sandbox.kill()
  ```
</CodeGroup>

## サンドボックスを停止する

サンドボックスが不要になった場合は、`kill` メソッドを使用して、タイムアウトが期限切れになる前にサンドボックスをシャットダウンできます。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox/code-interpreter'

  const sandbox = await Sandbox.create({ timeoutMs: 60_000 })
  const sandboxId = sandbox.sandboxId

  await sandbox.kill()

  // Or kill by ID.
  await Sandbox.kill(sandboxId)
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.create(timeout=60)
  sandbox_id = sandbox.sandbox_id

  sandbox.kill()

  # Or kill by ID.
  Sandbox.kill(sandbox_id)
  ```
</CodeGroup>

## 次のステップ

* 後で使用するためにサンドボックスの状態を保持するには、[サンドボックスの永続化](/docs/ja/guides/sandbox-persistence) を参照してください。
* 再利用可能な保存済み状態を作成するには、[サンドボックススナップショット](/docs/ja/guides/sandbox-snapshot) を参照してください。
