Kembali ke kasus penggunaan
Alat Developer

Asisten kode AI — membangun alat mirip Cursor dengan Claude dan GPT

Cursor, Aider, Cline, Continue.dev — semuanya didukung oleh segelintir LLM frontier yang sama. Jika Anda membangun alat coding (atau copilot di dalam produk developer Anda sendiri), berikut arsitektur dan realitas biayanya.

Model yang direkomendasikan

Terakhir ditinjau pada .

Sekilas tentang lanskap AI untuk kode

Cursor, Aider, Cline, Continue.dev, Claude Code sendiri — semuanya dibangun di atas tiga atau empat LLM frontier yang sama. Pembeda utamanya bukan model, melainkan loop agent di sekitarnya, pengindeksan file, penerapan diff, dan pengalaman pengguna. Jika Anda sedang membangun salah satunya (atau co-pilot pengodean dalam produk developer Anda sendiri), halaman ini adalah menu model, realitas biaya, dan anggaran latensinya.

Menu model untuk alur kerja kode

  • Claude Haiku 4.5 (claude-haiku-4-5) — autocomplete (~$0,0001-0.0005 per penyelesaian). Pemenang latensi; time-to-first-token streaming yang menyamai pemanggilan provider secara langsung
  • Claude Sonnet 5 (claude-sonnet-5) — chat dengan codebase, pengeditan banyak file, dan loop agent. Andalan setingkat Cursor dengan harga $1,40 / $7,00 per 1 juta
  • Claude Opus 5 (claude-opus-5) — tinjauan mendalam, kritik arsitektur, dan audit keamanan. Lebih lambat (P50 ~3 dtk), tetapi penalar terkuat, dengan harga $3,50 / $17,50 per 1 juta
  • GPT-5.6 Sol (gpt-5-6-sol) — model OpenAI yang disetel untuk kode: kualitas sebanding, preferensi gaya berbeda

Dua alur inti

code_assistant.py
import json
from openai import OpenAI
client = OpenAI(api_key="sk-kn-...", base_url="https://api.kunavo.com/v1")

# Code completion (autocomplete-as-you-type)
def complete(file_content: str, cursor_offset: int, file_path: str) -> str:
    before = file_content[:cursor_offset]
    after = file_content[cursor_offset:]
    resp = client.chat.completions.create(
        model="claude-haiku-4-5",   # FAST for IDE latency
        messages=[
            {"role": "system", "content": (
                "Complete the code at the cursor. Output ONLY the inserted "
                "text — no markdown, no explanation."
            )},
            {"role": "user", "content": (
                f"<file path=\"{file_path}\">\n{before}<CURSOR>{after}\n</file>"
            )},
        ],
        max_tokens=200,
        stop=["<CURSOR>", "</file>"],
    )
    return resp.choices[0].message.content

# Code review (heavier model). Claude enforces a json_schema
# response_format; json_object it does not.
REVIEW = {
    "type": "object",
    "properties": {
        "comments": {"type": "array", "items": {
            "type": "object",
            "properties": {"file": {"type": "string"},
                           "line": {"type": "integer"},
                           "comment": {"type": "string"}},
            "required": ["file", "line", "comment"],
            "additionalProperties": False,
        }},
        "verdict": {"type": "string", "enum": ["approve", "request_changes"]},
    },
    "required": ["comments", "verdict"],
    "additionalProperties": False,
}

def review(diff: str, conventions: str) -> dict:
    resp = client.chat.completions.create(
        model="claude-opus-5",
        messages=[
            {"role": "system", "content": [{
                "type": "text",
                "text": conventions,  # team style guide, security policy
                "cache_control": {"type": "ephemeral"},
            }]},
            {"role": "user", "content": f"Review this diff.\n\n{diff}"},
        ],
        response_format={"type": "json_schema",
                         "json_schema": {"name": "review", "schema": REVIEW}},
        max_tokens=2000,
    )
    return json.loads(resp.choices[0].message.content)

Anggaran latensi berdasarkan fitur

  • Autocomplete inline: TTFT harus <200ms. Claude Haiku 4.5. Streaming output, batalkan saat kursor berpindah
  • Chat dengan codebase: TTFT <500ms dapat diterima. Sonnet + streaming. Tampilkan respons saat dihasilkan
  • Pengeditan / refaktor banyak file: 5-30 dtk adalah hal normal. Tampilkan progres, jalankan di latar belakang, tampilkan diff untuk ditinjau
  • Tinjauan PR: 10-60 dtk dapat diterima. Opus melakukan analisis mendalam, format sebagai komentar yang dapat ditindaklanjuti

Ekonomi biaya untuk produk kode

Konsumsi realistis per developer per bulan (pengguna berat):

  • ~500 penyelesaian/hari × Haiku ~$0,0003 = $0,15/hari = $4-5/bulan
  • ~30 sesi chat/hari × Sonnet ~$0,05 = $1,50/hari = $30-45/bulan
  • ~3 tinjauan PR/minggu × Opus ~$0,30 = $1/minggu = $4/bulan
  • Pengguna berat: ~$40-55/bulan untuk biaya API
  • Pengguna rata-rata: ~$10-15/bulan

Sebagian besar produk AI kode menetapkan harga $20/pengguna/bulan — ada ruang margin, tetapi tipis pada pengguna berat. Caching prompt sangat penting: konteks workspace (struktur file, konvensi, file terbaru) dimasukkan ke cache; per panggilan, hanya konteks pengeditan langsung yang baru. Menghemat 50-70% biaya input. Cara menyiapkan caching.

Pola arsitektur yang dapat ditiru

  • Pemrosesan prompt FIM (Fill-in-Middle): alih-alih "lengkapi dari sini", teruskan before<CURSOR>after agar model menggunakan kedua sisi
  • Urutan penghentian: stop=["<CURSOR>", "</file>", "```\n"] mencegah model mengarang melampaui penyelesaian yang diminta
  • Penggunaan tool untuk pengeditan banyak file: jangan minta model menghasilkan 5 file dalam satu respons. Gunakan tools=[{name: 'edit_file', ...}] agar model menghasilkan pengeditan terstruktur yang dapat Anda terapkan secara atomik
  • Decoding spekulatif melalui streaming: tampilkan sekitar 50 token pertama segera setelah tersedia; pengguna akan memilih yang benar bahkan sebelum seluruh respons selesai

Beralih provider dalam hitungan detik

Kunavo kompatibel dengan kabel OpenAI. Jika Anda membangun assistant dengan SDK OpenAI, tukar base_url dan Anda mendapatkan akses ke Claude dan GPT dalam kode yang sama. Lihat Memanggil Claude dengan SDK OpenAI untuk migrasinya.

Mulai: /app/signup — pembayaran sesuai pemakaian mulai dari top-up $10 (~30.000 panggilan autocomplete), saldo tidak pernah kedaluwarsa. Referensi endpoint di /docs/chat dan Messages API native Anthropic di /docs/messages.

Pertanyaan umum

Berapa biaya API yang dikeluarkan pengguna berat asisten pengodean AI?

Sekitar $40–55 per bulan dengan harga $20 per pengguna. Margin ini hanya tercapai karena prompt caching memangkas biaya input sebesar 50–70%.

Model mana yang cocok untuk setiap fungsi asisten pengodean?

Pelengkapan otomatis inline memerlukan time-to-first-token di bawah 200ms, sehingga Claude Haiku 4.5 cocok. Chat dengan codebase memerlukan waktu di bawah 500ms, sehingga cocok menggunakan Claude Sonnet 4.6. Tinjauan PR dapat menoleransi 10–60 detik, jadi Claude Opus 4.7 cocok untuk fungsi tersebut.

Bagaimana sebaiknya prompt pelengkapan otomatis diformat?

Gunakan prompting Fill-in-Middle: format permintaan sebagai before<CURSOR>after agar model melihat kedua sisi kursor, dan tetapkan stop=['<CURSOR>', '</file>'] untuk mencegah luapan.

Bagaimana sebaiknya asisten menangani penyuntingan banyak file?

Kirim definisi alat seperti tools=[{name:'edit_file', ...}] dan terapkan penyuntingan secara atomik, alih-alih meminta model mengeluarkan beberapa file lengkap dalam satu respons.