Memperkenalkan Neosantara di any-llm

any-llm adalah library Python open-source dari Mozilla.ai yang memberikan satu interface terpadu untuk 40+ provider LLM. Neosantara kini tersedia sebagai native provider dengan dukungan fitur lengkap β satu dari hanya tiga provider di seluruh ekosistem dengan coverage 100% di semua kapabilitas.
Di panduan ini, kita akan menunjukkan cara menggunakan Neosantara melalui any-llm: dari completion dasar dan streaming hingga reasoning, tool calling, embeddings, dan batch processing.
Key Takeaways
- Neosantara adalah 1 dari hanya 3 provider (bersama OpenAI dan Otari) yang mendukung semua 8 kapabilitas any-llm (any-llm Providers, 2026)
- Install dengan
pip install any-llm-sdk[neosantara]dan ganti model dalam satu baris- Dukungan penuh: Responses API, Completion, Streaming, Reasoning, Image, Embedding, List Models, dan Batch
- Akses 40+ model termasuk Claude Opus 4.6, Gemini 3 Flash, Kimi K2, dan Archipelago 70B melalui satu API key
Apa itu any-llm dan Kenapa Penting?
any-llm telah tumbuh menjadi 2.1k GitHub stars sejak Mozilla.ai pertama kali memperkenalkannya di Juli 2025. Library ini sekarang mendukung 42 provider di cloud, lokal, dan deployment hybrid.
any-llm menyelesaikan masalah nyata: setiap provider LLM punya SDK-nya sendiri, format API-nya sendiri, dan keunikannya sendiri. Kalau kamu mau pindah dari OpenAI ke Anthropic ke model lokal, kamu harus menulis ulang kode integrasi setiap kali.
Mozilla.ai membangun any-llm untuk memperbaiki ini. Satu import, satu function call, satu format respons yang konsisten β terlepas dari provider mana yang berjalan di belakangnya.
Prinsip desain utama:
- Menggunakan SDK resmi provider β bukan reimplementasi yang rusak saat update
- Tidak perlu proxy server β ini library, bukan gateway service
- Output kompatibel OpenAI β semua respons dinormalisasi ke objek OpenAI ChatCompletion
- Siap produksi β v1.0 diluncurkan November 2025 dengan API async-first, koneksi reusable, dan interface stabil
Berbeda dengan solusi gateway seperti OpenRouter atau Portkey yang merutekan trafik melalui proxy server, any-llm berjalan sepenuhnya di proses kamu. Data kamu tidak pernah melewati perantara pihak ketiga β distinsi kritis untuk tim yang menangani data sensitif atau beroperasi di bawah persyaratan data residency.
Library ini dimaintenance aktif sebagai bagian dari ekosistem any-suite Mozilla.ai yang lebih luas (any-agent, any-guardrail, Otari gateway).
Bagaimana Perbandingan Neosantara dengan Provider any-llm Lainnya?
Menurut matrix provider any-llm (diperbarui Juni 2026), Neosantara adalah satu dari hanya tiga provider yang mendukung semua 8 kapabilitas β bersama OpenAI dan Otari. Kebanyakan provider mendukung 4-6 fitur, menyisakan celah di batch processing, reasoning traces, atau Responses API.
| Fitur | Neosantara | OpenAI | Anthropic | Mistral | Ollama |
|---|---|---|---|---|---|
| Responses API | β | β | β | β | β |
| Completion | β | β | β | β | β |
| Streaming | β | β | β | β | β |
| Reasoning | β | β | β | β | β |
| Image | β | β | β | β | β |
| Embedding | β | β | β | β | β |
| List Models | β | β | β | β | β |
| Batch | β | β | β | β | β |
Neosantara mencapai coverage penuh karena mengimplementasikan seluruh API surface OpenAI-compatible, plus ekstensi spesifik provider untuk reasoning dan Responses API.
Keuntungan lainnya:
- 40+ model β Claude Opus 4.6, Gemini 3 Flash, Kimi K2, Archipelago 70B, DeepSeek R1, dan lainnya
- Latensi rendah β gateway lokal Indonesia untuk waktu respons cepat
- Tagihan Rupiah β harga IDR yang transparan
- Satu API key β satu key membuka semua model di katalog
Kalau kamu sudah menjelajahi membangun LLM stack, any-llm menangani layer abstraksi provider sehingga kamu bisa fokus pada logika aplikasi, bukan plumbing SDK.
Bagaimana Cara Memulai any-llm + Neosantara?
Setup memakan waktu kurang dari 2 menit. Quickstart any-llm menjelaskan setup lengkap β berikut path spesifik Neosantara.
Instalasi
Install any-llm dengan dukungan Neosantara:
pip install any-llm-sdk[neosantara]Atau install dengan semua provider:
pip install any-llm-sdk[all]Autentikasi
Set API key Neosantara:
export NEOSANTARA_API_KEY="nsk_..."Provider menggunakan https://api.neosantara.xyz/v1 secara default. Override dengan NEOSANTARA_API_BASE jika perlu. Belum punya key? Daftar dan dapatkan saldo Rp 10.000 gratis untuk memulai.
Completion Pertamamu
from any_llm import completion
response = completion(
model="claude-opus-4-6",
provider="neosantara",
messages=[{"role": "user", "content": "Halo!"}],
)
print(response.choices[0].message.content)Selesai. Setiap fitur any-llm dibangun di atas fondasi ini.
Apa yang Bisa Kamu Bangun dengan any-llm + Neosantara?
Dari pengujian integrasi kami, provider any-llm Neosantara menangani semua 8 API surface tanpa fallback atau adapter kustom. Berikut setiap kapabilitas dengan kode yang bisa kamu jalankan hari ini.
1. Class AnyLLM
Untuk aplikasi yang membuat banyak request, gunakan class AnyLLM untuk menghindari instansiasi provider berulang:
import os
from any_llm import AnyLLM
llm = AnyLLM.create("neosantara")
response = llm.completion(
model="claude-opus-4-6",
messages=[{"role": "user", "content": "Jelaskan AI gateway dalam dua kalimat."}],
)
print(response.choices[0].message.content)
# Cek kapabilitas provider
metadata = llm.get_provider_metadata()
print(f"Support streaming: {metadata.streaming}")
print(f"Support tools: {metadata.completion}")
print(f"Support batch: {metadata.batch}")2. Streaming
Untuk antarmuka real-time β chatbot, dashboard, terminal tools:
from any_llm import completion
output = ""
for chunk in completion(
model="gemini-3-flash",
provider="neosantara",
messages=[{"role": "user", "content": "Tulis haiku tentang Indonesia."}],
stream=True,
):
chunk_content = chunk.choices[0].delta.content or ""
print(chunk_content, end="")
output += chunk_contentStreaming berfungsi dengan semua model Neosantara. Setiap chunk mengikuti format streaming OpenAI, jadi kode yang sudah handle stream OpenAI berjalan tanpa perubahan.
3. Reasoning
Dapatkan thinking traces bersama respons menggunakan reasoning_effort. Ini memungkinkan model seperti Claude dan DeepSeek R1 menampilkan chain-of-thought mereka:
from any_llm import completion
response = completion(
model="claude-opus-4-6",
provider="neosantara",
messages=[{"role": "user", "content": "Berapa huruf r di kata strawberry?"}],
reasoning_effort="high",
)
# Akses thinking trace model
if response.choices[0].message.reasoning:
print("Thinking:", response.choices[0].message.reasoning.content)
# Jawaban final
print("Jawaban:", response.choices[0].message.content)Reasoning juga berfungsi dengan streaming β setiap chunk bisa menyertakan chunk.choices[0].delta.reasoning.
4. Tool Calling
Kirim fungsi Python langsung. any-llm otomatis mengubahnya ke format tool provider:
from any_llm import completion
def cari_web(query: str) -> str:
"""Cari informasi di web.
Args:
query: Query pencarian yang ingin dicari
Returns:
Hasil pencarian sebagai teks
"""
return f"Hasil untuk: {query}"
def cek_cuaca(kota: str, unit: str = "C") -> str:
"""Cek cuaca terkini untuk sebuah kota.
Args:
kota: Nama kota yang ingin dicek cuacanya
unit: Unit suhu, 'C' untuk Celsius atau 'F' untuk Fahrenheit
Returns:
Deskripsi cuaca terkini
"""
return f"Cuaca di {kota}: cerah, 32Β°{unit}"
response = completion(
model="claude-opus-4-6",
provider="neosantara",
messages=[{"role": "user", "content": "Bagaimana cuaca di Jakarta?"}],
tools=[cari_web, cek_cuaca],
)
# Handle tool calls
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
for call in tool_calls:
print(f"Tool: {call.function.name}")
print(f"Args: {call.function.arguments}")Fungsi harus punya type annotations dan docstrings. any-llm menangani sisanya. Kalau kamu membangun bot WhatsApp atau chat assistant, ini berpasangan baik dengan plugin Neosantara Hitori untuk men-deploy agent yang menggunakan tools ke platform messaging.
5. Embeddings
Generate vector embeddings untuk RAG, semantic search, dan similarity matching:
from any_llm import embedding
result = embedding(
model="text-embedding-3-small",
provider="neosantara",
inputs="Neosantara adalah gateway AI tercepat di Indonesia",
)
vector = result.data[0].embedding
print(f"Dimensi vektor: {len(vector)}")
print(f"Token digunakan: {result.usage.total_tokens}")Kirim list string untuk batch embedding:
result = embedding(
model="text-embedding-3-small",
provider="neosantara",
inputs=[
"Dokumen pertama untuk di-embed",
"Dokumen kedua untuk di-embed",
"Dokumen ketiga untuk di-embed",
],
)
for item in result.data:
print(f"Index {item.index}: {len(item.embedding)} dimensi")6. Batch Processing
Untuk workload volume tinggi yang tidak membutuhkan respons real-time, batch processing mengurangi biaya:
from any_llm import AnyLLM
llm = AnyLLM.create("neosantara")
# Submit batch request
batch = llm.batch(
model="gemini-3-flash",
requests=[
{"messages": [{"role": "user", "content": "Rangkum tren AI 2026"}]},
{"messages": [{"role": "user", "content": "Apa itu retrieval-augmented generation?"}]},
{"messages": [{"role": "user", "content": "Jelaskan arsitektur transformer"}]},
],
)
print(f"Batch ID: {batch.id}")
print(f"Status: {batch.status}")7. List Models
Temukan model yang tersedia secara programatik:
from any_llm import list_models
models = list_models(provider="neosantara")
for model in models.data:
print(f" {model.id}")Bagaimana Cara Pindah Antar Provider?
Nilai inti any-llm: pindah antar provider tanpa menulis ulang aplikasimu. Kode sama, parameter provider berbeda:
from any_llm import completion
messages = [{"role": "user", "content": "Apa itu AI gateway?"}]
# Gunakan Neosantara
response = completion(model="claude-opus-4-6", provider="neosantara", messages=messages)
# Pindah ke OpenAI β hanya provider dan model yang berubah
response = completion(model="gpt-4o", provider="openai", messages=messages)
# Pindah ke Ollama lokal
response = completion(model="llama3", provider="ollama", messages=messages)Logika aplikasimu tetap identik. Hanya parameter provider dan model yang berubah. Ini menjadikan Neosantara default produksi yang baik β dengan fallback instan ke provider lain jika diperlukan.
Bagaimana dengan Async dan Use Case High-Throughput?
Untuk aplikasi yang menangani request concurrent, gunakan varian async:
import asyncio
from any_llm import acompletion
async def main():
response = await acompletion(
model="gemini-3-flash",
provider="neosantara",
messages=[{"role": "user", "content": "Halo dari async!"}],
)
print(response.choices[0].message.content)
asyncio.run(main())Setiap fungsi punya counterpart async: acompletion, aembedding, dll. Dikombinasikan dengan koneksi reusable class AnyLLM, ini menangani workload high-throughput secara efisien.
8. Model Mana yang Harus Kamu Pilih?
Katalog Neosantara mencakup model yang dioptimalkan untuk tugas berbeda. Berikut panduan pemilihan praktis:
| Skenario | Model | Alasan |
|---|---|---|
| Chat & reasoning umum | claude-opus-4-6 | Reasoning kuat, tool use andal |
| Respons cepat | gemini-3-flash | Latensi rendah, throughput tinggi |
| Dokumen panjang | kimi-k2 | Context 128k, kemampuan agentic kuat |
| Bahasa Indonesia | archipelago-70b | Disetel untuk konteks dan budaya Indonesia |
| Chain-of-thought | deepseek-r1 | Reasoning traces eksplisit |
| Generasi kode | claude-opus-4-6 | Kualitas kode terbaik di kelasnya |
Untuk aplikasi multi-agent yang membutuhkan model berbeda per peran agent, lihat deep dive Agno + Neosantara kami yang membahas pola pemilihan model berbasis tim.
Bagaimana Error Handling Bekerja?
any-llm menyediakan exception terpadu di semua provider. Aktifkan dengan environment variable:
import os
os.environ["ANY_LLM_UNIFIED_EXCEPTIONS"] = "1"
from any_llm import completion
from any_llm.exceptions import (
RateLimitError,
AuthenticationError,
ModelNotFoundError,
)
try:
response = completion(
model="claude-opus-4-6",
provider="neosantara",
messages=[{"role": "user", "content": "Halo!"}],
)
except AuthenticationError as e:
print(f"Cek NEOSANTARA_API_KEY kamu: {e.message}")
except RateLimitError as e:
print(f"Rate limited β retry setelah backoff: {e.message}")
except ModelNotFoundError as e:
print(f"Model tidak tersedia: {e.message}")Pengalaman kami: Selama pengujian integrasi, kami menemukan bahwa unified exceptions membuat provider failover mudah β tangkap
RateLimitError, retry di provider berbeda. Exception asli provider tersimpan die.original_exceptionuntuk debugging.
Kapan Harus Menggunakan any-llm + Neosantara?
| Skenario | Kenapa Membantu |
|---|---|
| Aplikasi multi-model | Pindah antara Claude, Gemini, Kimi K2 tanpa ubah kode |
| Provider fallback | Jika satu model down, routing ke yang lain secara instan |
| Optimasi biaya | Gunakan model murah untuk tugas sederhana, model powerful untuk reasoning kompleks |
| Hybrid lokal + cloud | Interface sama untuk Ollama lokal dan Neosantara di produksi |
| Framework agent | any-llm menggerakkan any-agent dari Mozilla.ai β gunakan model Neosantara di agent |
any-llm memberikan satu interface Python untuk setiap provider LLM utama. Dengan Neosantara sebagai native provider dengan coverage fitur 100% di semua 8 kapabilitas, kamu mendapat akses ke model-model terbaik melalui gateway tercepat Indonesia β tanpa mengorbankan fungsionalitas apapun. Kombinasinya bekerja: interface terpadu any-llm + katalog model lengkap Neosantara + harga Rupiah + gateway lokal berlatensi rendah. Mulai dengan completion sederhana, tambahkan streaming dan tools seiring aplikasimu berkembang, dan pindah model secara bebas tanpa menyentuh kode aplikasimu.
Pertanyaan yang Sering Diajukan
Apakah any-llm menambah latensi dibanding memanggil Neosantara langsung?
Overhead minimal. any-llm menggunakan SDK resmi Neosantara di balik layar dan menggunakan ulang koneksi via class AnyLLM. Layer normalisasi menambahkan mikrodetik, bukan milidetik. Untuk aplikasi sensitif-latensi, gateway lokal Indonesia jauh lebih berpengaruh daripada thin client wrapper.
Bisakah saya menggunakan any-llm dengan kode OpenAI-compatible yang sudah ada?
Ya. any-llm mengembalikan model Pydantic OpenAI ChatCompletion standar. Kode yang sudah memproses response.choices[0].message.content berfungsi tanpa perubahan. Kamu menambahkan fleksibilitas provider, bukan mengganti response handling.
Apa yang terjadi jika saya melebihi rate limit Neosantara?
Dengan unified exceptions diaktifkan, any-llm melempar RateLimitError yang bisa kamu tangkap dan retry β baik dengan exponential backoff di provider yang sama, atau failover ke provider lain dengan satu perubahan parameter.
Apakah any-llm cocok untuk aplikasi produksi?
Rilis v1.0 (November 2025) secara eksplisit menargetkan stabilitas produksi: API async-first, koneksi client reusable, notice deprecation yang jelas, dan output standar di semua provider. Gateway Otari milik Mozilla.ai sendiri dibangun di atas any-llm.
Bagaimana perbandingannya dengan menggunakan Agno bersama Neosantara?
Tools berbeda untuk pekerjaan berbeda. Agno adalah platform agent lengkap (tools, memory, teams, workflows). any-llm adalah abstraksi provider yang ringan. Gunakan any-llm ketika kamu butuh LLM calls langsung dengan fleksibilitas provider. Gunakan Agno ketika kamu membangun agent stateful dengan workflow multi-langkah.
Referensi Sumber
- Mozilla.ai, "any-llm Provider Matrix," 2026. https://docs.mozilla.ai/any-llm/providers/
- Mozilla.ai, "Introducing any-llm: A Unified API to Access Any LLM Provider," Juli 2025. https://blog.mozilla.ai/introducing-any-llm-a-unified-api-to-access-any-llm-provider/
- Mozilla.ai, "Run Any LLM with a Single API: Introducing any-llm v1.0," November 2025. https://blog.mozilla.ai/run-any-llm-with-a-single-api-introducing-any-llm-v1-0/
- Mozilla.ai, "any-llm GitHub Repository," 2025. https://github.com/mozilla-ai/any-llm
- Neosantara, "Models Overview," 2026. https://docs.neosantara.xyz/id/models-overview
- Neosantara, "Quickstart Guide," 2026. https://docs.neosantara.xyz/id/quickstart
Semua URL diambil Juni 2026.
Mulai Gunakan Neosantara dengan any-llm
Daftar Neosantara, install any-llm, dan buat API call pertamamu dalam waktu kurang dari 5 menit. Dapatkan saldo Rp 10.000 gratis untuk memulai.
Mulai Gratis Β· Dokumentasi any-llm
Link Berguna:
- π Docs any-llm: Referensi library lengkap
- π Panduan Memulai: API call pertamamu
- π€ Daftar Model: Jelajahi semua model
- π GitHub any-llm: Source code dan issues



