Jalankan AI Code Assistant Lokal dengan Ollama

by Marcus Chen
Jalankan AI Code Assistant Lokal dengan Ollama

Masalah: Copilot Mahal, Data Kamu Kemana?

Kamu lagi ngoding di proyek freelance, atau mungkin startup kecil yang datanya sensitif. Terus kamu sadar bahwa setiap baris kode yang kamu ketik di editor dikirim ke server GitHub/OpenAI buat di-process. Belum lagi biaya $10/bulan untuk Copilot — lumayan kalau kamu solo engineer dengan budget terbatas.

Ada alternatif yang gue pakai sekarang: Ollama + model code LLM yang jalan 100% di mesin lokal kamu. Nggak ada data keluar, nggak ada subscription, dan surprisingly — cukup capable buat pekerjaan sehari-hari.

Artikel ini bakal ngajarin kamu setup AI code assistant lokal dari nol: install Ollama, pilih model yang tepat, integrasikan ke VS Code, dan bikin script Python sederhana buat query langsung dari terminal.


Kenapa Ollama?

Ada beberapa tool buat jalanin LLM lokal (LM Studio, llama.cpp, GPT4All), tapi Ollama punya keunggulan yang bikin gue pilih dia:

  • CLI yang bersih — satu command buat pull dan run model
  • REST API built-in — langsung bisa di-hit dari script atau editor plugin
  • Model library yang gede — dari Llama 3 sampai CodeGemma, semua ada
  • Cross-platform — macOS, Linux, Windows (via WSL)

Satu catatan penting: performa sangat bergantung pada RAM dan GPU kamu. Buat laptop dengan 8GB RAM, pilih model 7B atau di bawahnya. Kalau kamu punya 16GB+, model 13B masih nyaman.


Install Ollama

macOS / Linux

curl -fsSL https://ollama.com/install.sh | sh

Setelah install, verifikasi:

ollama --version
# ollama version 0.3.x

Windows

Download installer dari ollama.com atau pakai WSL2 dan jalankan command Linux di atas.

Ollama otomatis jalan sebagai background service di port 11434. Kamu bisa cek dengan:

curl http://localhost:11434
# Ollama is running

Pilih Model: Mana yang Cocok Buat Coding?

Ini yang biasanya bikin bingung. Gue udah coba beberapa, ini ringkasannya:

Model Size RAM Minimum Cocok Buat
codegemma:2b ~1.6GB 4GB Autocomplete cepat, low-end laptop
codegemma:7b ~5GB 8GB General coding, explain code
deepseek-coder:6.7b ~4GB 8GB Multi-language, cukup akurat
llama3.1:8b ~5GB 8GB Chat + coding, paling balanced
codellama:13b ~8GB 16GB Lebih akurat, butuh RAM lebih

Buat mayoritas developer dengan laptop 8–16GB, gue rekomendasikan mulai dari deepseek-coder:6.7b — hasilnya solid dan nggak terlalu rakus memori.

# Pull model (download sekali, ~4GB)
ollama pull deepseek-coder:6.7b

# Test langsung dari CLI
ollama run deepseek-coder:6.7b

Setelah prompt muncul, coba ketik:

>>> Write a Python function to validate an Indonesian phone number

Kamu bakal lihat model langsung generate kode. Tekan Ctrl+D atau ketik /bye buat keluar.


Integrasikan ke VS Code dengan Continue

Nah ini bagian yang bikin setup ini mirip Copilot. Continue adalah extension VS Code open-source yang bisa connect ke Ollama.

Install Continue

  1. Buka VS Code
  2. Cari extension Continue (by Continue.dev)
  3. Install

Konfigurasi Continue ke Ollama

Setelah install, Continue bakal buat file config di ~/.continue/config.json. Edit file itu:

{
  "models": [
    {
      "title": "DeepSeek Coder Local",
      "provider": "ollama",
      "model": "deepseek-coder:6.7b",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "CodeGemma Autocomplete",
    "provider": "ollama",
    "model": "codegemma:2b",
    "apiBase": "http://localhost:11434"
  },
  "allowAnonymousTelemetry": false
}

Perhatikan gue pakai dua model berbeda:

  • deepseek-coder:6.7b buat chat (explain, refactor, generate)
  • codegemma:2b buat tab autocomplete — lebih kecil supaya response cepat

Pull model kedua kalau belum:

ollama pull codegemma:2b

Sekarang di VS Code kamu bisa:

  • Ctrl+I — inline edit / generate kode di cursor
  • Ctrl+L — buka chat sidebar, tanya apa aja soal kodenya
  • Tab — autocomplete seperti Copilot

Script Python: Query Ollama dari Terminal

Kadang kamu nggak mau buka VS Code — cuma mau tanya cepat dari terminal, atau integrate ke workflow script kamu. Ollama punya REST API yang simpel.

Endpoint dasar

# Generate (non-streaming)
curl http://localhost:11434/api/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "deepseek-coder:6.7b",
    "prompt": "Write a bash script to backup a PostgreSQL database",
    "stream": false
  }'

Script Python yang lebih proper

Bikin file ask_ai.py:

import sys
import json
import httpx

OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL = "deepseek-coder:6.7b"


def ask(prompt: str, stream: bool = True) -> str:
    payload = {
        "model": MODEL,
        "prompt": prompt,
        "stream": stream,
    }

    if not stream:
        response = httpx.post(OLLAMA_URL, json=payload, timeout=120)
        response.raise_for_status()
        return response.json()["response"]

    # Streaming mode — print token by token
    full_response = []
    with httpx.stream("POST", OLLAMA_URL, json=payload, timeout=120) as r:
        for line in r.iter_lines():
            if line:
                chunk = json.loads(line)
                token = chunk.get("response", "")
                print(token, end="", flush=True)
                full_response.append(token)
        print()  # newline at end

    return "".join(full_response)


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python ask_ai.py \"your question here\"")
        sys.exit(1)

    prompt = " ".join(sys.argv[1:])
    ask(prompt, stream=True)

Install dependency:

pip install httpx

Cara pakai:

python ask_ai.py "Explain what this SQL query does: SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '7 days'"

python ask_ai.py "Write a FastAPI endpoint that accepts a file upload and saves it to /tmp"

Kamu bisa jadiin ini alias di shell kamu:

# Tambah ke ~/.bashrc atau ~/.zshrc
alias ai='python ~/scripts/ask_ai.py'

# Setelah source, tinggal:
ai "how do I reverse a linked list in Python"

Gotcha yang Gue Temuin

1. Model pertama kali lambat banget

Wajar — Ollama perlu load model ke memori. Response pertama bisa 10–30 detik. Setelah itu jauh lebih cepat karena model udah di-cache. Kalau kamu mau model selalu "warm", jalankan Ollama dengan env var:

OLLAMA_KEEP_ALIVE=1h ollama serve

2. Ollama service crash setelah sleep

Di Linux, kadang service-nya mati setelah laptop di-suspend. Tambah ke startup:

sudo systemctl enable ollama
sudo systemctl start ollama

Di macOS, Ollama app biasanya auto-restart, tapi kalau nggak, jalankan manual:

ollama serve &

3. Continue extension nggak detect Ollama

Pastikan apiBase di config.json tepat http://localhost:11434 tanpa trailing slash. Gue sempat stuck 20 menit gara-gara nulis http://localhost:11434/ (ada slash di akhir).

4. Model halusinasi untuk library-library baru

Model lokal training data-nya ada cutoff-nya. Kalau kamu tanya soal library yang rilis setelah cutoff (misal fitur baru FastAPI atau Next.js terbaru), hasilnya bisa salah. Selalu verifikasi ke dokumentasi resmi.

5. RAM swap bikin laptop lemot

Kalau RAM kamu pas-pasan dan model terlalu besar, OS bakal swap ke disk — dan itu lambat banget. Monitor dengan:

# Linux
free -h
watch -n 2 'free -h'

# macOS
memory_pressure

Kalau swap udah tinggi, turun ke model yang lebih kecil.


Langkah Lanjutan

Setup dasar ini udah cukup buat ngoding sehari-hari. Tapi kalau kamu mau lebih jauh:

Buat context-aware assistant dari codebase kamu Continue punya fitur @codebase yang index seluruh repo kamu dan bikin model bisa jawab pertanyaan spesifik tentang kode kamu sendiri. Ini lebih powerful dari sekadar autocomplete.

Expose Ollama ke jaringan lokal Kalau kamu punya desktop powerful di rumah dan laptop lemot, kamu bisa jalanin Ollama di desktop dan hit dari laptop:

# Di mesin server (desktop kamu)
OLLAMA_HOST=0.0.0.0 ollama serve

# Di config.json Continue di laptop
"apiBase": "http://192.168.1.100:11434"

Integrasikan ke Neovim Kalau kamu Neovim user, ada plugin gen.nvim yang bisa query Ollama langsung dari buffer. Setup-nya mirip tapi butuh Lua config.


Yang gue lakuin sekarang: setup ini udah jalan di MacBook Pro M2 16GB gue selama 3 bulan. Gue pakai deepseek-coder:6.7b buat explain dan refactor, codegemma:2b buat autocomplete. Hasilnya? Nggak sesempurna Copilot buat beberapa kasus edge, tapi buat 80% pekerjaan sehari-hari — nulis boilerplate, debug error, generate test case — this guide ini lebih dari cukup. Dan yang paling penting: data proyek klien gue nggak kemana-mana.