Kredensial Akses
Setel API key Neosantara dan E2B pada environment variables sistem Anda: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:Agno
LiteLLM
OpenAI SDK
Anthropic SDK
Agno 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
pip install -U agno e2b-code-interpreter
Contoh Implementasi
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: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."
)
LiteLLM mendukung Neosantara secara native menggunakan prefix
neosantara/<model> tanpa perlu menyetel base URL manual.Instalasi Library
pip install -U litellm e2b-code-interpreter
Contoh Implementasi
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)
Gunakan skema function calling standar untuk mengeksekusi kode di sandbox E2B. Tersedia untuk Python dan Node.js.
Instalasi Library
pip install -U openai e2b-code-interpreter
npm install openai @e2b/code-interpreter
Contoh Implementasi
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)
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);
}
Gunakan antarmuka tool use Anthropic dengan endpoint Neosantara. Tersedia untuk Python dan Node.js.
Instalasi Library
pip install -U anthropic e2b-code-interpreter
npm install @anthropic-ai/sdk @e2b/code-interpreter
Contoh Implementasi
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)
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);
}
}
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 |
| Proxy LiteLLM | Dokumentasi LiteLLM |
| Tool calling pada Gateway | Tool Calling Chat Completions |
| Katalog model yang didukung | Daftar Model & Harga |