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

# Daytona Code Interpreter

> Eksekusi kode Python stateful dengan context isolation di Daytona menggunakan Agno, OpenAI, atau Anthropic SDK.

[Daytona Code Interpreter](https://www.daytona.io/?utm_source=neosantara-docs\&utm_medium=referral) mengeksekusi kode Python dalam context stateful di dalam sandbox. Variabel, import, dan fungsi persist antar eksekusi dalam context yang sama. Berbeda dari eksekusi proses umum (`process.code_run`), Code Interpreter mendukung isolated context, streaming output via callback, dan manajemen context eksplisit. Saat ini hanya mendukung Python. Untuk bahasa lain, gunakan `process.code_run`.

## Kredensial Akses

Setel API key Neosantara dan Daytona pada environment variables sistem Anda:

```bash icon="terminal" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
export NEOSANTARA_API_KEY="nsk_..."
export DAYTONA_API_KEY="your_daytona_api_key"
```

API key Daytona tersedia di [app.daytona.io](https://app.daytona.io).

## Integrasi Framework dan SDK

Pilih framework atau SDK yang ingin digunakan:

<Tabs>
  <Tab title="Agno" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/agno.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=c46fcbc2366c9c7a9514dc31c98e64a1" width="120" height="120" data-path="images/integrations/agno.svg">
    [Agno](https://www.agno.com/?utm_source=neosantara-docs\&utm_medium=referral) menyediakan `DaytonaTools` bawaan untuk menghubungkan Code Interpreter Daytona ke agen Neosantara. Agen mengelola siklus tool calling dan eksekusi kode secara otomatis.

    ### Instalasi Library

    ```bash icon="terminal" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    pip install -U agno daytona
    ```

    ### Contoh Implementasi

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    from agno.agent import Agent
    from agno.models.neosantara import Neosantara
    from agno.tools.daytona import DaytonaTools

    agent = Agent(
        model=Neosantara(id="deepseek-v4.1-flash"),
        tools=[DaytonaTools()],
        markdown=True,
        show_tool_calls=True,
        instructions=[
            "Gunakan Daytona Code Interpreter untuk menjalankan dan memverifikasi kode Python.",
            "Sajikan hasil eksekusi dengan format yang jelas."
        ]
    )

    agent.print_response(
        "Hitung 10 bilangan Fibonacci pertama dengan Python dan tampilkan hasilnya."
    )
    ```
  </Tab>

  <Tab title="OpenAI SDK" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/openai.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=69e05803e80721ddc2f9fa7933f78012" width="24" height="24" data-path="images/integrations/openai.svg">
    Gunakan function calling untuk mengeksekusi kode Python stateful via `code_interpreter.run_code`. Tersedia untuk Python dan Node.js.

    ### Instalasi Library

    <CodeGroup>
      ```bash pip icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      pip install -U openai daytona
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install openai @daytona/sdk
      ```
    </CodeGroup>

    ### Contoh Implementasi

    <CodeGroup>
      ```python Python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import os
      import json
      from openai import OpenAI
      from daytona import Daytona, DaytonaConfig

      client = OpenAI(
          base_url="https://api.neosantara.xyz/v1",
          api_key=os.environ["NEOSANTARA_API_KEY"]
      )

      config = DaytonaConfig(api_key=os.environ["DAYTONA_API_KEY"])
      daytona = Daytona(config)
      sandbox = daytona.create()

      tools = [{
          "type": "function",
          "function": {
              "name": "run_python_code",
              "description": "Eksekusi kode Python stateful di Daytona Code Interpreter.",
              "parameters": {
                  "type": "object",
                  "properties": {
                      "code": {"type": "string", "description": "Kode Python yang akan dieksekusi."}
                  },
                  "required": ["code"]
              }
          }
      }]

      messages = [{"role": "user", "content": "Hitung faktorial dari 12 menggunakan Python."}]
      response = client.chat.completions.create(
          model="deepseek-v4.1-flash",
          messages=messages,
          tools=tools,
          tool_choice="auto"
      )

      message = response.choices[0].message

      if message.tool_calls:
          tool_call = message.tool_calls[0]
          args = json.loads(tool_call.function.arguments)

          result = sandbox.code_interpreter.run_code(args["code"])
          output_text = result.stdout or str(result.result)

          messages.append(message)
          messages.append({
              "role": "tool",
              "tool_call_id": tool_call.id,
              "content": output_text
          })

          final_response = client.chat.completions.create(
              model="deepseek-v4.1-flash",
              messages=messages
          )
          print(final_response.choices[0].message.content)

      daytona.remove(sandbox)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import OpenAI from "openai";
      import { Daytona } from "@daytona/sdk";

      const client = new OpenAI({
        baseURL: "https://api.neosantara.xyz/v1",
        apiKey: process.env.NEOSANTARA_API_KEY,
      });

      const daytona = new Daytona({ apiKey: process.env.DAYTONA_API_KEY });
      const sandbox = await daytona.create();

      const tools = [
        {
          type: "function",
          function: {
            name: "run_python_code",
            description: "Eksekusi kode Python stateful di Daytona Code Interpreter.",
            parameters: {
              type: "object",
              properties: {
                code: { type: "string", description: "Kode Python yang akan dieksekusi." },
              },
              required: ["code"],
            },
          },
        },
      ];

      const messages = [{ role: "user", content: "Hitung faktorial dari 12 menggunakan Python." }];

      const response = await client.chat.completions.create({
        model: "deepseek-v4.1-flash",
        messages,
        tools,
        tool_choice: "auto",
      });

      const message = response.choices[0].message;

      if (message.tool_calls && message.tool_calls.length > 0) {
        const toolCall = message.tool_calls[0];
        const args = JSON.parse(toolCall.function.arguments);

        const result = await sandbox.codeInterpreter.runCode(args.code);
        const outputText = result.stdout || String(result.result);

        messages.push(message);
        messages.push({
          role: "tool",
          tool_call_id: toolCall.id,
          content: outputText,
        });

        const finalResponse = await client.chat.completions.create({
          model: "deepseek-v4.1-flash",
          messages,
        });

        console.log(finalResponse.choices[0].message.content);
      }

      await daytona.remove(sandbox);
      ```
    </CodeGroup>

    ### Isolated Context

    Default context bersifat shared dan persist antar eksekusi. Buat isolated context untuk sesi independen:

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    ctx = sandbox.code_interpreter.create_context()
    sandbox.code_interpreter.run_code("x = 100", context=ctx)
    result = sandbox.code_interpreter.run_code("x + 23", context=ctx)
    print(result.stdout)
    sandbox.code_interpreter.delete_context(ctx)
    ```
  </Tab>

  <Tab title="Anthropic SDK" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/claude.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=5f0be7b8eabc64ce5a9097ebc400b6b2" width="24" height="24" data-path="images/integrations/claude.svg">
    Gunakan antarmuka tool use [Anthropic](https://www.anthropic.com/?utm_source=neosantara-docs\&utm_medium=referral) dengan endpoint Neosantara. Tersedia untuk Python dan Node.js.

    ### Instalasi Library

    <CodeGroup>
      ```bash pip icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      pip install -U anthropic daytona
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install @anthropic-ai/sdk @daytona/sdk
      ```
    </CodeGroup>

    ### Contoh Implementasi

    <CodeGroup>
      ```python Python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import os
      from anthropic import Anthropic
      from daytona import Daytona, DaytonaConfig

      client = Anthropic(
          base_url="https://api.neosantara.xyz/anthropic",
          api_key=os.environ["NEOSANTARA_API_KEY"]
      )

      config = DaytonaConfig(api_key=os.environ["DAYTONA_API_KEY"])
      daytona = Daytona(config)
      sandbox = daytona.create()

      tools = [{
          "name": "run_python_code",
          "description": "Eksekusi kode Python stateful di Daytona Code Interpreter.",
          "input_schema": {
              "type": "object",
              "properties": {
                  "code": {"type": "string", "description": "Kode Python untuk dijalankan."}
              },
              "required": ["code"]
          }
      }]

      response = client.messages.create(
          model="claude-3-7-sonnet",
          max_tokens=1024,
          tools=tools,
          messages=[{"role": "user", "content": "Hitung 2 pangkat 20 menggunakan Python."}]
      )

      for block in response.content:
          if block.type == "tool_use":
              result = sandbox.code_interpreter.run_code(block.input.get("code"))
              print("Hasil:", result.stdout or result.result)

      daytona.remove(sandbox)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import Anthropic from "@anthropic-ai/sdk";
      import { Daytona } from "@daytona/sdk";

      const client = new Anthropic({
        baseURL: "https://api.neosantara.xyz/anthropic",
        apiKey: process.env.NEOSANTARA_API_KEY,
      });

      const daytona = new Daytona({ apiKey: process.env.DAYTONA_API_KEY });
      const sandbox = await daytona.create();

      const tools = [
        {
          name: "run_python_code",
          description: "Eksekusi kode Python stateful di Daytona Code Interpreter.",
          input_schema: {
            type: "object",
            properties: {
              code: { type: "string", description: "Kode Python untuk dijalankan." },
            },
            required: ["code"],
          },
        },
      ];

      const response = await client.messages.create({
        model: "claude-3-7-sonnet",
        max_tokens: 1024,
        tools,
        messages: [{ role: "user", content: "Hitung 2 pangkat 20 menggunakan Python." }],
      });

      for (const block of response.content) {
        if (block.type === "tool_use") {
          const result = await sandbox.codeInterpreter.runCode(block.input.code);
          console.log("Hasil:", result.stdout || result.result);
        }
      }

      await daytona.remove(sandbox);
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Code Interpreter vs Sandbox Process

| Fitur           | Code Interpreter                                      | Sandbox Process                           |
| :-------------- | :---------------------------------------------------- | :---------------------------------------- |
| **API**         | `code_interpreter.run_code()`                         | `process.code_run()` / `process.exec()`   |
| **Bahasa**      | Python saja                                           | Python, TypeScript, shell                 |
| **State**       | Stateful per context, variabel persist                | Stateless per panggilan                   |
| **Isolasi**     | `create_context()` / `delete_context()`               | Sandbox baru per sesi                     |
| **Streaming**   | Callback `on_stdout`, `on_stderr`, `on_error`         | Output langsung `result`                  |
| **Cocok untuk** | Analisis data, kalkulasi berantai, agen coding Python | Shell, multi-bahasa, operasi file dan git |

## Langkah Berikutnya

| Kebutuhan                                | Panduan                                                                    |
| :--------------------------------------- | :------------------------------------------------------------------------- |
| Operasi file, shell, dan git Daytona     | [Daytona Sandbox](/id/integrations/daytona)                                |
| Eksekusi kode Python dan visualisasi E2B | [E2B Code Interpreter](/id/integrations/e2b)                               |
| Tool calling pada Gateway                | [Tool Calling Chat Completions](/id/gateway/chat-completions/tool-calling) |
| Katalog model yang didukung              | [Daftar Model & Harga](/id/gateway/models)                                 |


## Related topics

- [Daytona Sandbox](/id/integrations/daytona.md)
- [E2B Code Interpreter](/id/integrations/e2b.md)
- [Function Calling (Tools)](/id/gateway/chat-completions/tool-calling.md)
- [Katalog Model](/id/gateway/models.md)
