> ## 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.

# E2B Code Interpreter

> Jalankan kode Python dalam sandbox terisolasi E2B menggunakan Agno, LiteLLM, dan OpenAI atau Anthropic SDK.

[E2B](https://e2b.dev/?utm_source=neosantara-docs\&utm_medium=referral) menyediakan sandbox cloud terisolasi berbasis microVM Firecracker untuk mengeksekusi kode yang dihasilkan oleh model AI. Integrasi ini memungkinkan model Neosantara menjalankan analisis data, kalkulasi matematika, pembuatan grafik visualisasi, dan automasi script secara aman tanpa risiko pada sistem lokal Anda.

## Kredensial Akses

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

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

## Integrasi Framework dan SDK

Pilih framework atau SDK yang ingin digunakan untuk melihat panduan instalasi library dan contoh kodenya:

<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) adalah opsi yang paling direkomendasikan. Neosantara didukung secara native melalui kelas `Neosantara`, dan Agno menyediakan toolkit `E2BTools` bawaan. Agen mengelola siklus tool calling, eksekusi kode di sandbox, serta format hasil akhir secara otomatis tanpa kode perulangan manual.

    ### Instalasi Library

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

    ### Contoh Implementasi

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

    agent = Agent(
        model=Neosantara(id="deepseek-v4.1-flash"),
        tools=[E2BTools(timeout=600)],
        markdown=True,
        show_tool_calls=True,
        instructions=[
            "Gunakan E2B sandbox untuk menjalankan dan memverifikasi kode Python.",
            "Sajikan hasil perhitungan dan analisis akhir dengan jelas."
        ]
    )

    agent.print_response(
        "Hitung 10 bilangan Fibonacci pertama dan kembalikan dalam array Python."
    )
    ```

    ### Visualisasi Data

    Agen dapat menggunakan library analisis data populer di lingkungan sandbox:

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    agent.print_response(
        "Buat dataset simulasi latensi gateway Neosantara 85ms, US Gateway 280ms, dan EU Gateway 320ms. "
        "Plot grafik bar dengan matplotlib dan simpan gambar sebagai latency.png."
    )
    ```
  </Tab>

  <Tab title="LiteLLM" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/litellm.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=6423ae40eb025e2fbd909430aac616fd" width="512" height="512" data-path="images/integrations/litellm.svg">
    [LiteLLM](https://www.litellm.ai/?utm_source=neosantara-docs\&utm_medium=referral) mendukung Neosantara secara native menggunakan prefix `neosantara/<model>` tanpa perlu menyetel base URL manual.

    ### Instalasi Library

    ```bash icon="terminal" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    pip install -U litellm e2b-code-interpreter
    ```

    ### Contoh Implementasi

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    import os
    from litellm import completion
    from e2b_code_interpreter import Sandbox

    response = completion(
        model="neosantara/deepseek-v4.1-flash",
        messages=[
            {"role": "system", "content": "Tulis kode Python murni yang siap dieksekusi tanpa blok markdown."},
            {"role": "user", "content": "Hitung akar kuadrat dari bilangan 1 sampai 5 dan cetak hasilnya."}
        ]
    )

    python_code = response.choices[0].message.content.strip()

    with Sandbox(api_key=os.environ["E2B_API_KEY"]) as sandbox:
        print("Menjalankan kode di sandbox E2B...")
        execution = sandbox.run_code(python_code)
        
        if execution.error:
            print("Error eksekusi:", execution.error)
        else:
            for log in execution.logs.stdout:
                print("Output:", log)
    ```
  </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 skema function calling standar untuk mengeksekusi kode di sandbox E2B. 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 e2b-code-interpreter
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install openai @e2b/code-interpreter
      ```
    </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 e2b_code_interpreter import Sandbox

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

      tools = [{
          "type": "function",
          "function": {
              "name": "run_python_code",
              "description": "Eksekusi kode Python di dalam sandbox terisolasi E2B.",
              "parameters": {
                  "type": "object",
                  "properties": {
                      "code": {"type": "string", "description": "Kode Python yang akan dieksekusi."}
                  },
                  "required": ["code"]
              }
          }
      }]

      messages = [{"role": "user", "content": "Hitung faktorial dari 8 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)
          
          with Sandbox(api_key=os.environ["E2B_API_KEY"]) as sandbox:
              exec_result = sandbox.run_code(args["code"])
              output_text = "\n".join(exec_result.logs.stdout)
          
          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)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import OpenAI from "openai";
      import { Sandbox } from "@e2b/code-interpreter";

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

      const tools = [
        {
          type: "function",
          function: {
            name: "run_python_code",
            description: "Eksekusi kode Python di dalam sandbox terisolasi E2B.",
            parameters: {
              type: "object",
              properties: {
                code: { type: "string", description: "Kode Python yang akan dieksekusi." },
              },
              required: ["code"],
            },
          },
        },
      ];

      const messages = [{ role: "user", content: "Hitung faktorial dari 8 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 sandbox = await Sandbox.create();
        const execution = await sandbox.runCode(args.code);
        const outputText = execution.logs.stdout.join("\n");

        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);
      }
      ```
    </CodeGroup>
  </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 e2b-code-interpreter
      ```

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

    ### Contoh Implementasi

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

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

      tools = [{
          "name": "run_python_code",
          "description": "Eksekusi kode Python di dalam sandbox terisolasi E2B.",
          "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 16 menggunakan Python."}]
      )

      for block in response.content:
          if block.type == "tool_use":
              code_to_run = block.input.get("code")
              with Sandbox(api_key=os.environ["E2B_API_KEY"]) as sandbox:
                  res = sandbox.run_code(code_to_run)
                  print("Hasil E2B:", res.logs.stdout)
      ```

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

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

      const tools = [
        {
          name: "run_python_code",
          description: "Eksekusi kode Python di dalam sandbox terisolasi E2B.",
          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 16 menggunakan Python." }],
      });

      for (const block of response.content) {
        if (block.type === "tool_use") {
          const codeToRun = block.input.code;
          const sandbox = await Sandbox.create();
          const res = await sandbox.runCode(codeToRun);
          console.log("Hasil E2B:", res.logs.stdout);
        }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Perbandingan Pendekatan

| Framework         | Penanganan Tool           | Pengaturan Endpoint              | Skenario Terbaik                                                                |
| :---------------- | :------------------------ | :------------------------------- | :------------------------------------------------------------------------------ |
| **Agno**          | Otomatis via `E2BTools`   | Otomatis via `Neosantara`        | Agen otonom dan workflow mandiri tanpa boilerplate.                             |
| **LiteLLM**       | Eksekusi sandbox langsung | Otomatis via prefix `neosantara` | Router multi-provider atau proxy gateway existing.                              |
| **OpenAI SDK**    | Function calling manual   | Manual via parameter `base_url`  | Kontrol granular siklus pesan dan pemanggilan fungsi di Python atau Node.js.    |
| **Anthropic SDK** | Tool use manual           | Manual via parameter `base_url`  | Pipeline Claude native dengan struktur schema Anthropic di Python atau Node.js. |

## Langkah Berikutnya

| Kebutuhan                   | Panduan                                                                    |
| :-------------------------- | :------------------------------------------------------------------------- |
| Framework agen Agno         | [Dokumentasi Agno](/id/integrations/agno)                                  |
| Proxy LiteLLM               | [Dokumentasi LiteLLM](/id/integrations/litellm)                            |
| 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

- [Agno](/id/integrations/agno.md)
- [LiteLLM](/id/integrations/litellm.md)
- [Function Calling (Tools)](/id/gateway/chat-completions/tool-calling.md)
- [Katalog Model](/id/gateway/models.md)
