Tahun lalu, klien saya minta dibuatkan "AI Agent untuk customer service." Setelah satu jam discovery call, ternyata yang mereka butuhkan adalah chatbot dengan FAQ yang bagus — bukan agent sama sekali.
Ini bukan salah mereka. Istilah "AI Agent" sudah terlalu banyak dipakai untuk hal yang berbeda-beda, sampai maknanya jadi kabur. Artikel ini saya tulis untuk meluruskan itu — dengan bahasa yang jelas dan contoh nyata dari sistem yang pernah saya bangun.
Tiga Hal yang Sering Dikira AI Agent
Sebelum mendefinisikan apa itu AI agent, lebih mudah kalau kita lihat apa yang bukan agent:
1. Chatbot
Chatbot adalah sistem yang menjawab pertanyaan berdasarkan script atau model bahasa. Inputnya adalah pertanyaan, outputnya adalah jawaban. Tidak ada "aksi" di luar itu. WhatsApp bot yang menjawab "Jam berapa buka?" dengan "Kami buka 08.00–17.00 WIB" adalah chatbot. Bahkan ChatGPT dalam percakapan biasa secara teknis adalah chatbot canggih — ia menjawab, bukan bertindak.
2. Automation / RPA
Automation seperti n8n, Zapier, atau RPA tool menjalankan workflow yang sudah dipredefinisikan. Trigger → Step 1 → Step 2 → Done. Deterministik. Kalau ada kondisi yang tidak diantisipasi, ia akan error atau skip — tidak bisa berimprovisasi. Ini powerful, tapi bukan agent.
3. LLM dengan Tool Calling
Ini yang paling sering salah dikira agent. Ketika Anda memberi Claude atau GPT kemampuan untuk memanggil fungsi (search_web(), get_weather()), itu adalah tool calling — satu langkah. LLM memutuskan tool mana yang dipanggil, memanggilnya sekali, dan menjawab. Ini sudah lebih dekat ke agent, tapi masih belum penuh.
Apa yang Membuat Sesuatu Disebut Agent
Ada empat komponen yang harus ada agar sebuah sistem layak disebut agent:
Loop ini — Plan → Act → Observe → Plan lagi — adalah inti dari semua agentic system. Dalam kode, ini sering disebut ReAct loop (Reason + Act).
Perbandingan Langsung
| Karakteristik | Chatbot | Automation | AI Agent |
|---|---|---|---|
| Menerima tujuan terbuka | ✗ | ✗ | ✓ |
| Bisa berimprovisasi | ✗ | ✗ | ✓ |
| Multi-step execution | ✗ | ✓ (fixed) | ✓ (dynamic) |
| Observasi & adaptasi | ✗ | ✗ | ✓ |
| Predictable / auditable | ✓ | ✓ | △ (perlu logging) |
| Cost per request | Rendah | Rendah | Tinggi (multiple LLM calls) |
Agent jauh lebih mahal dan lambat daripada chatbot atau automation biasa. Setiap "loop" berarti minimal satu panggilan LLM tambahan. Untuk use case yang sudah predictable, automation sederhana hampir selalu lebih baik.
Contoh Nyata: Agent di Proyek PT JRP
Salah satu proyek yang saya kerjakan adalah sistem complaint handling untuk perusahaan properti. Klien awalnya minta "chatbot WhatsApp." Setelah analisis, ternyata yang dibutuhkan adalah agent — karena flownya tidak bisa diprediksi:
- Customer kirim foto kerusakan via WhatsApp
- Sistem perlu menganalisis foto (Computer Vision) untuk identifikasi jenis kerusakan
- Berdasarkan jenis kerusakan, perlu query knowledge base untuk SLA yang berlaku
- Lalu buat tiket di sistem dengan prioritas yang tepat
- Kalau foto tidak jelas, agent perlu meminta foto tambahan sebelum lanjut
Step terakhir — "kalau foto tidak jelas, minta tambahan" — inilah yang membuat ini agent bukan automation. Agent bisa memutuskan untuk meminta informasi lebih dulu sebelum melanjutkan, berdasarkan observasi terhadap kualitas input.
Kode Minimal: Sebuah Agent Sederhana
Ini adalah struktur paling sederhana dari sebuah agent menggunakan LangChain. Perhatikan bagaimana AgentExecutor yang mengelola loop — bukan kita:
from langchain.agents import AgentExecutor, create_react_agent
from langchain_anthropic import ChatAnthropic
from langchain_core.tools import tool # langchain >= 0.1
# 1. Definisikan tools yang bisa dipakai agent
@tool
def analyze_image(image_url: str) -> str:
"""Menganalisis gambar dan mengembalikan deskripsi kerusakan."""
# implementasi vision API di sini
return "Kerusakan: retak di dinding, estimasi minor"
@tool
def query_sla_policy(damage_type: str) -> str:
"""Query kebijakan SLA berdasarkan jenis kerusakan."""
# RAG query ke knowledge base
return "SLA untuk minor damage: 7 hari kerja"
@tool
def create_ticket(details: str, priority: str) -> str:
"""Membuat tiket di sistem dengan prioritas yang sesuai."""
# API call ke ticketing system
return f"Tiket #TKT-2847 dibuat dengan prioritas {priority}"
# 2. Setup LLM dan agent
llm = ChatAnthropic(model="claude-3-5-haiku-20241022")
tools = [analyze_image, query_sla_policy, create_ticket]
# Prompt template ReAct standar dari LangChain Hub
from langchain import hub
prompt = hub.pull("hwchase17/react") # Reason + Act template
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # untuk debug — log setiap step
max_iterations=5, # circuit breaker — jangan biarkan infinite loop
)
# 3. Jalankan — agent yang memutuskan urutan tools
result = agent_executor.invoke({
"input": "Ada foto kerusakan dari unit 12B. Tolong proses dan buat tiket.",
"image_url": "https://..."
})
Perhatikan max_iterations=5. Ini penting — tanpa circuit breaker, agent yang stuck bisa loop selamanya dan menghabiskan token (dan uang) tanpa henti. Ini salah satu hal yang jarang diajarkan di tutorial.
Dari pengalaman saya, Claude (Anthropic) konsisten lebih baik untuk agentic task yang butuh reasoning panjang dan tepat kapan harus berhenti. GPT-4 lebih baik untuk creative writing. Untuk production agent, saya default ke Claude — biasanya Haiku untuk speed, Sonnet untuk task yang butuh reasoning lebih dalam.
Kapan Pakai Agent, Kapan Tidak
Ini pertanyaan yang paling penting dan paling sering tidak ditanyakan. Agent adalah overkill untuk banyak use case:
Pakai Agent kalau:
- Tujuan terbuka dan tidak bisa diprediksi langkahnya dari awal
- Ada kebutuhan untuk improvisasi berdasarkan input yang bervariasi
- Proses melibatkan beberapa tools yang urutan pemanggilannya dinamis
- Ada kondisi "jika ini tidak berhasil, coba pendekatan lain" yang kompleks
Jangan pakai Agent kalau:
- Workflow sudah jelas dan predictable → pakai automation (n8n, Airflow)
- Hanya butuh satu kali call ke LLM → pakai tool calling biasa
- Latency adalah faktor kritis → agent terlalu lambat
- Budget terbatas → setiap agent run = multiple LLM calls = mahal
Rule of thumb saya: kalau bisa digambarkan sebagai flowchart dengan semua cabang yang pasti, pakai automation. Kalau flowchartnya punya cabang "tergantung isi dari X", pertimbangkan agent.
Kesimpulan
AI Agent bukan tentang teknologi yang canggih — tapi tentang pattern yang tepat untuk masalah yang tepat. Definisi yang saya pakai: sistem yang bisa Plan → Act → Observe → Plan lagi secara iteratif sampai tujuan tercapai.
Artikel berikutnya dalam series ini akan membahas RAG Pipeline — komponen yang paling sering dipakai sebagai "tool" dalam agent, dan bagian yang paling sering diimplementasikan dengan buruk.
Kalau ada pertanyaan atau mau diskusi lebih lanjut, DM saya di LinkedIn atau WhatsApp di +62 812-1113-0168.