Dokumentasi

Setelan tool agentic

Tool agentic mengirim isi berkas, hasil perintah, dan seluruh riwayat percakapan di setiap langkah. Prompt sebesar itu bisa butuh puluhan detik sebelum token pertama keluar. Kalau aplikasimu menyerah lebih dulu, request tetap terhitung tetapi kamu tidak menerima apa pun. Setel timeout, stream, retry, dan ukuran konteks seperti di bawah.

Kenapa ini penting

  • Request yang putus sebelum jawaban keluar tetap terhitung. Begitu request sampai, server AI langsung memproses seluruh prompt. Kalau aplikasimu memutusnya lebih dulu (timeout, tombol stop, koneksi putus), biaya pemrosesan sudah terjadi, tetapi kamu tidak menerima jawaban.
  • Prompt raksasa butuh lebih dari 30 detik sebelum token pertama. Prompt agentic ratusan KB dengan ribuan pesan bisa melewati batas bawaan banyak aplikasi (30 atau 60 detik) sebelum satu token pun keluar.
  • Stream menjaga koneksi tetap hidup. Saat stream aktif, server kami langsung mengirim header lalu sinyal keepalive tiap 10 detik selama menunggu jawaban. Yang tetap bisa memutus adalah batas waktu total di aplikasimu, karena itu setel minimal 300 detik.
  • Pilih model cepat untuk konteks besar. Untuk sesi panjang atau repo besar, pakai model yang lebih cepat dan simpan model besar untuk langkah yang benar-benar butuh. Bandingkan di halaman Harga.

Pedoman untuk semua tool

Timeout
Minimal 300 detik. Perhatikan satuannya: sebagian tool memakai detik (300), sebagian milidetik (300000).
Stream
Aktifkan. Tanpa stream, tidak ada data yang mengalir sampai jawaban selesai, jadi proxy dan aplikasi lebih cepat menyerah.
Retry
Secukupnya (0–3). Percobaan ulang setelah timeout adalah request baru yang ikut ditagih. Perbaiki timeout dulu, jangan menaikkan retry.
Konteks
Jaga tetap kecil. Pakai compact/ringkas otomatis, mulai sesi baru per tugas, dan kecualikan folder besar (node_modules, build, data).

Claude Code

Base URL & key
Ikuti panduan Claude Code: ANTHROPIC_BASE_URL = https://ai.geraikita.com (tanpa /v1) dan ANTHROPIC_AUTH_TOKEN = key gk- kamu. Variabel bisa ditaruh di blok env pada ~/.claude/settings.json.
Timeout
API_TIMEOUT_MS (milidetik): waktu tunggu header jawaban per percobaan, bawaan 600000 (10 menit). Jangan diturunkan; kalau pernah kamu kecilkan, kembalikan minimal 300000.
Stream
Selalu stream. Tidak ada setelan untuk mematikannya.
Retry
CLAUDE_CODE_MAX_RETRIES, bawaan 10, termasuk untuk timeout sebelum jawaban mengalir. Untuk prompt besar setel 2–3 supaya satu langkah tidak ditagih berulang kali.
Konteks
/compact meringkas percakapan, /clear memulai percakapan baru. Auto-compact aktif bawaan (autoCompactEnabled); CLAUDE_AUTOCOMPACT_PCT_OVERRIDE dengan angka lebih kecil (mis. 60) membuat compact lebih awal.
~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://ai.geraikita.com",
    "ANTHROPIC_AUTH_TOKEN": "gk-xxxxxxxx",
    "API_TIMEOUT_MS": "600000",
    "CLAUDE_CODE_MAX_RETRIES": "3",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
  }
}

Cline

Base URL & key
Ikuti panduan Cline: provider OpenAI Compatible (Base URL https://ai.geraikita.com/v1) atau Anthropic dengan Use custom base URL https://ai.geraikita.com.
Timeout
Dokumentasi resmi Cline tidak menyediakan setelan timeout untuk provider OpenAI Compatible maupun Anthropic (Request Timeout hanya untuk Ollama). Supaya token pertama keluar cepat: perkecil konteks dan pilih model yang lebih cepat untuk konteks besar.
Stream
Tidak ada setelan stream di dokumentasi resmi; tidak perlu diubah.
Retry
Tidak ada setelan retry di dokumentasi resmi.
Konteks
Auto Compact meringkas otomatis saat konteks hampir penuh. /smol (alias /compact) meringkas manual, /newtask memindahkan ringkasan ke tugas baru. Isi Context Window size di Model Configuration sesuai model.

Roo Code

Base URL & key
Catatan: ekstensi Roo Code resmi dihentikan sejak 15 Mei 2026. Bagi yang masih memakainya: provider OpenAI Compatible, Base URL https://ai.geraikita.com/v1, API key gk- kamu (sama seperti Cline).
Timeout
roo-cline.apiRequestTimeout di settings.json VS Code, dalam detik (bawaan 600, rentang 0–3600, 0 = tanpa batas). Jangan di bawah 300.
Stream
Pastikan Enable streaming di profil OpenAI Compatible tetap tercentang.
Retry
Saat Auto-Approve aktif, request gagal diulang otomatis dengan jeda yang makin panjang; tidak ada toggle terpisah.
Konteks
Intelligent Context Condensing (Settings → Context): turunkan ambangnya dari bawaan 100% supaya ringkasan jalan lebih awal, atau tekan Condense Context. Kecualikan folder besar lewat .rooignore.

Kilo Code

Base URL & key
Settings → Providers → Custom provider → OpenAI Compatible, Base URL https://ai.geraikita.com/v1, API key gk- kamu. Bisa juga lewat berkas ~/.config/kilo/kilo.jsonc seperti contoh di bawah.
Timeout
options.timeout di provider (milidetik) menunggu header dan byte pertama. Bawaannya 300000, tepat di batas; isi 600000. Jangan setel chunkTimeout terlalu kecil.
Stream
Tidak ada setelan stream di dokumentasi resmi; tidak perlu diubah.
Retry
Tidak ada setelan retry di dokumentasi resmi.
Konteks
compaction.auto (bawaan true) dan /compact. Wajib isi limit.context per model (angka lebih kecil = compact lebih awal): tanpa itu auto-compaction tidak berjalan. Kecualikan folder besar lewat .kilocodeignore atau aturan permission.
~/.config/kilo/kilo.jsonc
{
  "provider": {
    "geraikita": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Geraikita AI",
      "options": {
        "baseURL": "https://ai.geraikita.com/v1",
        "apiKey": "gk-xxxxxxxx",
        "timeout": 600000
      },
      "models": {
        "claude-sonnet-5": {
          "name": "Claude Sonnet 5",
          "limit": { "context": 128000, "output": 16000 }
        }
      }
    }
  },
  "compaction": { "auto": true }
}

Cursor

Base URL & key
Cursor Settings → Models → API key OpenAI. Dokumentasi resmi Cursor tidak menjelaskan base URL kustom; bila versi Cursor-mu menampilkan Override OpenAI Base URL, isi https://ai.geraikita.com/v1. API key sendiri hanya untuk model chat (Tab tetap model bawaan Cursor), dan request lewat server Cursor.
Timeout
Tidak ada setelan timeout yang bisa diubah di dokumentasi resmi. Alternatifnya: perkecil konteks, mulai chat baru per tugas, dan pilih model cepat supaya token pertama keluar sebelum batas aplikasi.
Stream
Diatur Cursor; tidak ada setelan.
Retry
Tidak ada setelan retry di dokumentasi resmi.
Konteks
Cursor meringkas bagian lama percakapan otomatis saat konteks hampir penuh. Mulai chat baru setiap ganti tugas, dan kecualikan berkas besar lewat .cursorignore.

OpenCode

Base URL & key
Ikuti panduan OpenCode: provider @ai-sdk/openai-compatible dengan baseURL https://ai.geraikita.com/v1.
Timeout
Di provider.geraikita.options (milidetik): headerTimeout (tunggu header, bawaan 300000) dan chunkTimeout (jeda antar-potongan stream, bawaan 300000). timeout (batas total) mati secara bawaan; kalau kamu mengisinya, pakai minimal 300000.
Stream
Selalu stream. Tidak ada setelan untuk mematikannya.
Retry
Tidak ada setelan retry di dokumentasi resmi. Kalau request sering putus, perbaiki timeout dan perkecil konteks.
Konteks
compaction.auto (bawaan true) meringkas sesi otomatis saat konteks penuh. /compact meringkas manual, /new memulai sesi baru.
~/.config/opencode/opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "geraikita": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://ai.geraikita.com/v1",
        "apiKey": "{env:GERAIKITA_API_KEY}",
        "headerTimeout": 300000,
        "chunkTimeout": 300000
      }
    }
  },
  "compaction": { "auto": true }
}

Continue

Base URL & key
Di config.yaml: provider: openai, apiBase: https://ai.geraikita.com/v1, apiKey = key gk- kamu.
Timeout
requestOptions.timeout dalam detik (bawaan 7200). Isi minimal 300, bukan 300000.
Stream
Provider openai selalu stream.
Retry
Tidak ada setelan retry di dokumentasi resmi.
Konteks
defaultCompletionOptions.contextLength dan maxTokens membatasi ukuran konteks dan jawaban. Mulai chat baru per tugas; di Continue CLI ada /compact dan /clear.
~/.continue/config.yaml
models:
  - name: Claude Sonnet 5 (Geraikita)
    provider: openai
    model: claude-sonnet-5
    apiBase: https://ai.geraikita.com/v1
    apiKey: gk-xxxxxxxx
    requestOptions:
      timeout: 600        # detik, bukan milidetik
    defaultCompletionOptions:
      contextLength: 64000  # lebih kecil = riwayat dipangkas
      maxTokens: 8192

n8n

Base URL & key
Credentials OpenAI: isi Base URL https://ai.geraikita.com/v1 dan API Key gk- kamu. Credentials Anthropic: Base URL https://ai.geraikita.com.
Timeout
Node OpenAI Chat Model → Options → Timeout (milidetik). Bawaannya 60000 (60 detik), sering jadi penyebab putus di 60 detik; setel minimal 300000. Node HTTP Request → Options → Timeout juga milidetik. Self-host: jangan setel EXECUTIONS_TIMEOUT (detik) lebih kecil dari itu.
Stream
AI Agent → Options → Enable Streaming (bawaan aktif; butuh Chat Trigger atau Webhook dengan Response Mode Streaming). Anthropic Chat Model → Stream Responses. OpenAI Chat Model tidak punya opsi stream, jadi andalkan Timeout yang cukup.
Retry
OpenAI Chat Model → Options → Max Retries, bawaan 2. Percobaan ulang setelah timeout ikut ditagih; perbaiki Timeout dulu.
Konteks
Sub-node Simple Memory → Context Window Length = jumlah interaksi lama yang ikut dikirim. Kecilkan, mis. 5–10.

SDK OpenAI (Python & Node.js)

Base URL & key
base_url / baseURL = https://ai.geraikita.com/v1, api_key / apiKey = key gk- kamu. Contoh dasar ada di Request pertama.
Timeout
timeout: Python dalam detik, Node.js dalam milidetik. Bawaan SDK 10 menit, aman asal tidak kamu turunkan di bawah 300 detik.
Stream
stream=True (Python) / stream: true (Node.js).
Retry
max_retries / maxRetries, bawaan 2, termasuk mengulang request yang timeout. Untuk prompt besar setel 0–1.
Konteks
Kirim hanya riwayat yang perlu: potong pesan lama atau ringkas dulu sebelum dikirim.
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.geraikita.com/v1",
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # detik
    max_retries=1,   # percobaan ulang setelah timeout ikut ditagih
)
stream = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Halo!"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

SDK Anthropic (Python & Node.js)

Base URL & key
base_url / baseURL = https://ai.geraikita.com (tanpa /v1, SDK menambah /v1/messages sendiri), api_key / apiKey = key gk- kamu.
Timeout
timeout: Python dalam detik, Node.js dalam milidetik; bawaan 10 menit. SDK menolak request tanpa stream yang diperkirakan lebih dari ±10 menit, jadi pakai stream.
Stream
client.messages.stream(...), atau stream=True / stream: true di messages.create.
Retry
max_retries / maxRetries, bawaan 2. Untuk prompt besar setel 0–1.
Konteks
Kirim hanya riwayat yang perlu; batasi max_tokens sesuai kebutuhan jawaban.
import anthropic

client = anthropic.Anthropic(
    base_url="https://ai.geraikita.com",   # tanpa /v1
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # detik
    max_retries=1,   # percobaan ulang setelah timeout ikut ditagih
)
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Halo!"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

curl

Base URL & key
Header Authorization: Bearer gk-... ke https://ai.geraikita.com/v1/chat/completions. Contoh dasar ada di Request pertama.
Timeout
Tanpa --max-time curl tidak membatasi durasi total. Kalau memakainya, isi minimal 300 (detik).
Stream
"stream": true di body, plus -N (--no-buffer) supaya potongan jawaban tampil langsung.
Retry
--retry bawaan 0 dan ikut mengulang saat timeout. Jangan menambahkannya untuk prompt besar.
Konteks
Kamu yang menyusun body: kirim hanya pesan yang perlu.
bash
curl https://ai.geraikita.com/v1/chat/completions \
  --max-time 600 -N \
  -H "Authorization: Bearer gk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-5","stream":true,"messages":[{"role":"user","content":"Halo!"}]}'

Ketentuan penagihan

Request yang dibatalkan dari sisi pembeli (timeout aplikasi, tombol stop, koneksi putus) sebelum jawaban keluar tetap ditagih. Kompensasi output kosong hanya untuk gangguan di sisi kami (jawaban kosong/galat dari server, atau tanpa output ≥60 detik). Berlaku mulai 1 November 2026.

Syarat & Ketentuan Pasal 10

Pertanyaan umum

Aplikasiku timeout dan output-nya kosong. Apakah tetap ditagih?

Ya, bila aplikasimu yang memutus sebelum jawaban keluar: server AI sudah memproses prompt-mu. Ketentuan ini tertulis di Syarat & Ketentuan dan berlaku mulai 1 November 2026.

Kapan output kosong dikompensasi?

Saat gangguannya di sisi kami: server membalas jawaban kosong atau galat, atau tidak ada output sama sekali selama 60 detik atau lebih.

Kenapa tidak menaikkan retry saja?

Setiap percobaan ulang adalah request baru. Kalau penyebabnya timeout yang terlalu pendek, retry hanya mengulang tagihan tanpa hasil. Naikkan timeout ke minimal 300 detik dan aktifkan stream.

Prompt-ku sangat besar. Apa yang paling membantu?

Ringkas atau mulai sesi baru, kecualikan folder besar, dan pakai model yang lebih cepat untuk konteks besar. Bandingkan model di halaman Harga.