[OSS紹介#32] Daytona:AI生成コードを安全に実行するためのセルフホストツール

この記事について

このブログシリーズでは、注目すべきオープンソースソフトウェア(OSS)を定期的に紹介していきます。連載第32回となる今回は、AIによるコード生成を安全かつ効率的に実行するためのインフラを提供する「Daytona」に焦点を当てます。この「Daytona」は、以前当ブログで紹介した「Suna」の内部でも使用されているツールです。

ソフトウェア開発において、AI技術の進展は私たちのコーディング方法を根本的に変えつつあります。しかし、AIが生成したコードを実行する際に求められるのは、セキュリティや柔軟性、迅速なレスポンスです。特に、内部でのコード評価や実行を行う際には、安全に隔離された環境が必要不可欠です。

「Daytona」は、これらの要件を満たすために設計されたツールであり、開発者が生成したAIコードを迅速に、かつ安全に実行できる土台を提供します。クラウドサービスやDocerを使った運用方法について詳しく掘り下げていくことで、実際の活用シーンや設定方法も明らかにしていきます。この紹介を通じて、開発者の皆さんがAI技術を効果的に活用し、より高い生産性を実現できる手助けとなることを願っています。

リンク:https://github.com/daytonaio/daytona


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. Daytonaでできること

Daytonaは、AI生成コードを安全かつ弾力的なインフラストラクチャ上で実行するためのオープンソースツールです。主な機能は以下の通りです。

1.1 高速インフラストラクチャ

Daytonaは、コードから実行までのサンドボックス作成時間が90ms未満という驚異的なスピードを誇ります。

1.2 分離された実行環境

AI生成コードを実行する際に、インフラストラクチャへのリスクをゼロに保ちます。この分離により、安全にコードを処理できます。

1.3 大規模な並列処理

同時に複数のAIワークフローを処理できるため、効率的にタスクを管理できます。この機能は近日中に提供予定です。

1.4 プログラムによる制御

ファイル、Git、LSP、実行APIを利用して、Daytonaの各種機能をプログラムから制御できます。

1.5 無制限の永続性

サンドボックスは永続的に存在し続けるため、必要な時にいつでもアクセス可能です。

1.6 OCI/Docker互換性

任意のOCIまたはDockerイメージを使用してサンドボックスを作成できるため、柔軟な環境設定が可能です。

2. セットアップ手順

Daytonaのセットアップは非常にシンプルです。以下の手順に従ってください。

2.1 ライセンス

DaytonaはGNU Affero General Public Licenseの下でオープンソースとして提供されています。

2.2 動作環境

DaytonaはPythonとTypeScriptのSDKを提供しています。これらのSDKを利用することで、Daytonaとのインタラクションが容易になります。

2.3 SDKのインストール

Python SDKをインストールするには、以下のコマンドを実行します。

pip install daytona-sdk

TypeScript SDKをインストールするには、以下のコマンドを実行します。

npm install @daytonaio/sdk

2.4 クラウドサービスとしての利用

Daytonaを使用するには、まずアカウントを作成します。https://app.daytona.ioにアクセスし、アカウントを登録してください。

アカウント作成後、ダッシュボードから新しいAPIキーを生成します。このAPIキーは、SDKを通じてDaytonaにアクセスするために必要です。

2.5 カスタムDockerイメージの使用

Daytonaでは、ローカルでOCI/Dockerイメージを使って独自のサンドボックス環境を構築できます。イメージの指定は以下のように行います。

from daytona_sdk import Daytona, DaytonaConfig, CreateSandboxParams

# サンドボックスインスタンスをカスタムイメージで作成
params = CreateSandboxParams(image="alpine:3.21.3", language="python")
sandbox = daytona.create(params)

3. 簡単な使い方

Daytonaを使って最初のサンドボックスを作成し、コードを実行する基本的な手順を以下に示します。

3.1 Python SDKの例

以下のコードは、Python SDKを使用してサンドボックスを作成し、コードを実行する方法を示しています。

from daytona_sdk import Daytona, DaytonaConfig, CreateSandboxParams

# Daytonaクライアントを初期化
daytona = Daytona(DaytonaConfig(api_key="YOUR_API_KEY"))

# サンドボックスインスタンスを作成
sandbox = daytona.create(CreateSandboxParams(language="python"))

# サンドボックス内で安全にコードを実行
response = sandbox.process.code_run('print("Sum of 3 and 4 is " + str(3 + 4))')
if response.exit_code != 0:
    print(f"Error running code: {response.exit_code} {response.result}")
else:
    print(response.result)

# サンドボックスをクリーンアップ
daytona.remove(sandbox)

3.2 TypeScript SDKの例

TypeScript SDKを使用する場合の例は以下の通りです。

import { Daytona } from '@daytonaio/sdk'

async function main() {
  // Daytonaクライアントを初期化
  const daytona = new Daytona({
    apiKey: 'YOUR_API_KEY',
  })

  let sandbox
  try {
    // サンドボックスインスタンスを作成
    sandbox = await daytona.create({
      language: 'python',
    })
    // サンドボックス内で安全にコードを実行
    const response = await sandbox.process.codeRun('print("Sum of 3 and 4 is " + str(3 + 4))')
    if (response.exitCode !== 0) {
      console.error('Error running code:', response.exitCode, response.result)
    } else {
      console.log(response.result)
    }
  } catch (error) {
    console.error('Sandbox flow error:', error)
  } finally {
    if (sandbox) await daytona.remove(sandbox)
  }
}

main().catch(console.error)

結論

Daytonaは、AI生成コードを安全かつ効率的に実行するための優れたツールです。高速なインフラストラクチャ、分離された実行環境、大規模な並列処理が特徴であり、開発者にとって非常に有用なリソースとなるでしょう。セットアップも簡単で、PythonとTypeScriptのSDKを通じて簡単に利用開始できます。Daytonaを使って、あなたのプロジェクトにおけるコード実行の新しい可能性を開きましょう。