Pendahuluan
Bug adalah musuh utama produktivitas pengembang. Dengan memanfaatkan Large Language Models (LLM) seperti ChatGPT Plus, Claude Pro, Gemini Advanced, atau Perplexity Pro, kita dapat membangun AI Coding Agent yang tidak hanya mendeteksi bug, tetapi juga menghasilkan patch otomatis. Tutorial ini memaparkan arsitektur, persiapan, dan implementasi praktis, serta best‑practice keamanan untuk deployment di production.
Prasyarat & Persiapan
| Item | Keterangan | Tool |
|---|---|---|
| Akun LLM | Akun ChatGPT Plus (ai-chat) atau Claude Pro (ai-chat) | ChatGPT Plus / Claude Pro |
| API Key | Simpan di .env |
|
| Python 3.11+ | Untuk skrip agent | |
| Git | Version control | |
| GitHub Repository | Menyimpan kode dan workflow | |
| GitHub Actions | CI/CD pipeline | |
| Docker | Opsional, untuk isolasi lingkungan | |
| Notion AI | Dokumentasi otomatis | Notion AI |
| Canva Pro | Membuat diagram arsitektur | Canva Pro |
| Adobe Firefly | Membuat ilustrasi kode | Adobe Firefly |
| Remove.bg | Membersihkan background gambar | Remove.bg |
Catatan: Pastikan variabel
OPENAI_API_KEYatauCLAUDE_API_KEYsudah diset di environment.
Langkah‑Demi‑Langkah
1. Siapkan Repository dan Struktur Direktori
git init ai-coding-agent
cd ai-coding-agent
mkdir src tests docs
touch src/__init__.py
2. Konfigurasi LLM
Buat file config.yaml:
llm:
provider: chatgpt_plus # opsi: chatgpt_plus, claude_pro, gemini_advanced, perplexity_pro
api_key: ${OPENAI_API_KEY}
model: gpt-4o-mini
3. Instalasi Dependensi
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
requirements.txt:
openai==1.30.0
anthropic==0.27.0
google-generativeai==0.7.0
perplexity==0.1.0
python-dotenv==1.0.1
requests==2.32.3
4. Buat Agent Utama
src/agent.py:
import os
import yaml
import json
import requests
from dotenv import load_dotenv
load_dotenv()
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
LLM_PROVIDER = cfg["llm"]["provider"]
API_KEY = cfg["llm"]["api_key"]
MODEL = cfg["llm"]["model"]
def ask_llm(prompt: str) -> str:
if LLM_PROVIDER == "chatgpt_plus":
url = "https://api.openai.com/v1/chat/completions"
headers = {"Authorization": f"Bearer {API_KEY}"}
payload = {
"model": MODEL,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.2,
}
resp = requests.post(url, headers=headers, json=payload)
return resp.json()["choices"][0]["message"]["content"]
elif LLM_PROVIDER == "claude_pro":
url = "https://api.anthropic.com/v1/messages"
headers = {
"x-api-key": API_KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
}
payload = {
"model": MODEL,
"max_tokens": 2048,
"messages": [{"role": "user", "content": prompt}],
}
resp = requests.post(url, headers=headers, json=payload)
return resp.json()["content"][0]["text"]
# Tambahkan provider lain jika diperlukan
def detect_and_fix(file_path: str) -> None:
with open(file_path, "r") as f:
code = f.read()
prompt = f"""
Analisis kode berikut dan identifikasi bug yang mungkin terjadi.
Jika ada bug, berikan patch lengkap dalam format diff.
Kode:
```python
{code}
```
"""
response = ask_llm(prompt)
print("LLM Response:\n", response)
# Parsing diff dan menerapkan patch
if response.strip().startswith("```diff"):
diff = response.split("```diff")[1].split("```")[0]
apply_patch(file_path, diff)
def apply_patch(file_path: str, diff: str) -> None:
import subprocess
with open("temp.patch", "w") as f:
f.write(diff)
subprocess.run(["patch", file_path, "temp.patch"], check=True)
os.remove("temp.patch")
print(f"Patch diterapkan pada {file_path}")
if __name__ == "__main__":
import sys
if len(sys.argv) != 2:
print("Usage: python agent.py <file_path>")
sys.exit(1)
detect_and_fix(sys.argv[1])
5. Integrasi dengan GitHub Actions
Buat workflow ci.yml di .github/workflows/ci.yml:
name: AI Bug Fix
on:
pull_request:
branches: [main]
jobs:
ai-fix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- name: Run AI Agent
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
source .venv/bin/activate
python src/agent.py tests/sample_bug.py
- name: Commit patch
run: |
git config user.email "ci@example.com"
git config user.name "CI Bot"
git add tests/sample_bug.py
git commit -m "AI: Fix bug in sample_bug.py"
git push
Catatan: Simpan
OPENAI_API_KEYdi GitHub Secrets.
6. Dokumentasi Otomatis
Gunakan Notion AI untuk menulis dokumentasi hasil patch:
notion-ai --page "AI Bug Fix Documentation" --content "Patch applied to sample_bug.py: ..."
7. Visualisasi Arsitektur
Buat diagram arsitektur menggunakan Canva Pro:
- Buka Canva Pro
- Pilih template “Software Architecture”
- Tambahkan elemen: GitHub, CI/CD, LLM, Agent, Repository
- Export sebagai PNG, lalu bersihkan background dengan Remove.bg
8. Ilustrasi Kode
Gunakan Adobe Firefly untuk membuat ilustrasi kode yang menarik:
firefly generate "Python code snippet showing diff patch" --format png
Tips Optimasi & Keamanan
| Praktik | Penjelasan |
|---|---|
| Rate Limiting | Batasi panggilan ke LLM menggunakan queue atau back‑off. |
| Secrets Management | Simpan API key di GitHub Secrets atau Vault. |
| Audit Log | Catat setiap patch yang dihasilkan, termasuk prompt dan output. |
| Testing | Jalankan unit tests setelah patch diterapkan. |
| Rollback | Simpan snapshot sebelum patch, gunakan git revert jika perlu. |
| Model Selection | Gunakan model yang hemat biaya (mis. gpt-4o-mini) untuk produksi. |
| Input Sanitization | Validasi kode sumber sebelum dikirim ke LLM. |
Troubleshooting Error Umum
| Error | Penyebab | Solusi |
|---|---|---|
requests.exceptions.ConnectionError |
Jaringan terputus atau API key tidak valid | Periksa koneksi internet dan pastikan API key benar. |
patch: No such file or directory |
File patch tidak ditemukan | Pastikan apply_patch menulis file temp.patch dengan benar. |
Permission denied |
Izin file tidak cukup | Jalankan script dengan hak akses yang memadai atau ubah permission. |
LLM provider not supported |
Provider tidak terdaftar | Tambahkan blok elif untuk provider baru atau gunakan provider yang didukung. |
Rate limit exceeded |
Terlalu banyak panggilan API | Implementasikan back‑off atau batasi frekuensi panggilan. |
Kesimpulan
Dengan mengikuti langkah‑demi‑langkah di atas, Anda dapat membangun AI Coding Agent yang mampu mendeteksi dan memperbaiki bug secara otomatis, mengintegrasikannya ke pipeline CI/CD, serta menjaga keamanan dan auditability. Selamat mencoba dan semoga produktivitas tim Anda meningkat!