Cara Membangun AI Agent Sederhana dengan Python dan LangChain: Tutorial Step-by-Step
ND
Naufal Dev

Dipublikasikan 4 Juni 2026

Cara Membangun AI Agent Sederhana dengan Python dan LangChain: Tutorial Step-by-Step

AI agent sudah menjadi topik hangat di kalangan developer sejak perilisan GPT-4 dan Claude 3. Berbeda dengan chatbot biasa yang hanya merespons prompt satu kali, AI agent memiliki kemampuan untuk merencanakan tugas, menggunakan tool eksternal, dan mengevaluasi hasil secara berulang hingga goal tercapai. Bagi developer Indonesia yang ingin memahami paradigma ini secara hands-on, Python dan LangChain adalah stack paling ramah pemula.

Dalam tutorial ini, kita akan membangun AI agent dari nol yang mampu menjawab pertanyaan kompleks dengan menggabungkan kemampuan browsing web dan perhitungan matematika. Tidak perlu GPU mahal atau subscription premium: cukup Python 3.10+, API key OpenAI, dan library LangChain.

Apa Itu AI Agent dalam Konteks LLM?

AI agent pada dasarnya adalah loop di mana Large Language Model (LLM) bertindak sebagai otak pengambil keputusan. Loop tersebut terdiri dari tiga fase:

  • Thought: LLM memikirkan langkah apa yang perlu diambil untuk menjawab pertanyaan user

  • Action: LLM memilih dan mengeksekusi tool yang sesuai, seperti kalkulator atau search engine

  • Observation: LLM membaca hasil dari tool dan menentukan apakah goal sudah tercapai

Pola ini dikenal sebagai ReAct (Reasoning and Acting). LangChain menyediakan abstrasi tingkat tinggi sehingga kita tidak perlu menulis loop ini secara manual.

Persiapan Environment

Pastikan Python versi 3.10 atau lebih baru terinstal di sistem kamu. Buat virtual environment baru untuk menghindari konflik dependency:

python3 -m venv venv
source venv/bin/activate
pip install langchain langchain-openai python-dotenv

Buat file .env di root project dan tambahkan API key OpenAI kamu:

OPENAI_API_KEY=sk-your-key-here

Pastikan file .env sudah masuk ke .gitignore supaya tidak tercommit ke repository publik.

Langkah 1: Membuat Agent dengan Tool Dasar

Kita mulai dengan agent yang memiliki dua tool: Search untuk browsing dan Calculator untuk perhitungan matematika. Buat file agent.py:

import os
from dotenv import load_dotenv
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain.utilities import SerpAPIWrapper
from langchain.chains import LLMMathChain

load_dotenv()

# Inisialisasi LLM
llm = ChatOpenAI(temperature=0, model_name="gpt-4o-mini")

# Tool 1: Search via SerpAPI
search = SerpAPIWrapper(serpapi_api_key=os.getenv("SERPAPI_API_KEY"))
search_tool = Tool(
    name="Search",
    func=search.run,
    description="Gunakan untuk mencari informasi terkini di internet"
)

# Tool 2: Calculator
math_chain = LLMMathChain.from_llm(llm=llm)
calc_tool = Tool(
    name="Calculator",
    func=math_chain.run,
    description="Gunakan untuk perhitungan matematika kompleks"
)

tools = [search_tool, calc_tool]

# Inisialisasi agent
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# Jalankan agent
response = agent.run("Berapa harga Bitcoin hari ini dan bagaimana perbandingannya dengan harga Ethereum?")
print(response)

Pastikan kamu sudah memiliki API key dari SerpAPI untuk fitur pencarian. Alternatifnya, kamu bisa mengganti tool search dengan DuckDuckGo search yang tidak memerlukan API key.

Langkah 2: Menambahkan Tool Kustom

Salah satu kekuatan LangChain adalah kemudahan menambahkan tool kustom. Misalnya, kita ingin agent bisa membaca cuaca dari API eksternal. Buat fungsi Python sederhana dan bungkus sebagai Tool:

import requests

def get_weather(city: str) -> str:
    url = f"https://api.openweathermap.org/data/2.5/weather?q={city}" + chr(38) + "appid={os.getenv('OWM_API_KEY')}" + chr(38) + "units=metric"
    resp = requests.get(url).json()
    if resp.get("main"):
        temp = resp["main"]["temp"]
        return f"Cuaca di {city}: {temp}C"
    return "Data cuaca tidak ditemukan"

weather_tool = Tool(
    name="Weather",
    func=get_weather,
    description="Gunakan untuk mendapatkan informasi cuaca saat ini di kota tertentu"
)

tools = [search_tool, calc_tool, weather_tool]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("Bagaimana cuaca di Jakarta dan apakah perlu bawa payung?")

Dengan menambahkan tool kustom, agent kamu menjadi spesifik untuk domain bisnis. Misalnya, tool bisa berupa query ke database internal, pemanggilan CRM API, atau kalkulasi financial model.

Langkah 3: Memahami Alur Kerja Agent

Ketika kamu menjalankan agent dengan verbose=True, LangChain akan mencetak setiap step secara detail. Berikut contoh output yang mungkin kamu lihat:

> Entering new AgentExecutor chain...
Berapa harga Bitcoin hari ini dan bagaimana perbandingannya dengan harga Ethereum?
Saya perlu mencari harga keduanya.
Action: Search
Action Input: "harga Bitcoin hari ini"
Observation: Bitcoin diperdagangkan pada $67,000...
Saya perlu mencari harga Ethereum juga.
Action: Search
Action Input: "harga Ethereum hari ini"
Observation: Ethereum diperdagangkan pada $3,500...
Sekarang saya bisa membandingkan keduanya.
Final Answer: Bitcoin $67,000 lebih tinggi 19x dari Ethereum $3,500.
> Finished chain.

Perhatikan bagaimana agent memutuskan untuk melakukan dua kali pencarian sebelum memberikan jawaban final. Ini adalah core dari paradigma ReAct: reasoning, action, observation, dan repeat.

Langkah 4: Menangani Error dan Retry

Agent tidak selalu benar di percobaan pertama. Terkadang tool menghasilkan error atau LLM menghasilkan action input yang tidak valid. LangChain menyediakan beberapa mekanisme untuk menangani ini:

  • max_iterations: batasi jumlah loop agar tidak infinite. Default biasanya 15.

  • handle_parsing_errors: otomatis retry jika LLM menghasilkan output yang tidak bisa di-parse.

  • early_stopping_method: tentukan apa yang terjadi saat max iteration tercapai.

Contoh konfigurasi yang lebih robust:

agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    max_iterations=10,
    handle_parsing_errors=True,
    early_stopping_method="generate"
)

Best Practices dan Batasan

Meskipun menarik, AI agent berbasis LLM masih memiliki keterbatasan yang perlu dipahami:

  • Biaya API bisa meningkat drastis jika agent melakukan terlalu banyak iterasi. Selalu set batasan dan monitor penggunaan token.

  • Agent tidak memiliki memori permanen antar session. Untuk memori jangka panjang, gunakan vector store seperti Pinecone atau ChromaDB.

  • Tool yang lambat akan memperlambat response agent secara keseluruhan. Optimasi latensi tool sama pentingnya dengan optimasi prompt.

  • Jangan memberikan tool yang bisa menulis ke database production tanpa approval manusia. Gunakan read-only access untuk tool eksternal.

Tip: untuk production, pertimbangkan menggunakan LangGraph daripada AgentExecutor dasar. LangGraph memberikan kontrol lebih besar terhadap state dan flow, serta memudahkan implementasi conditional edges.


Kesimpulan

Membangun AI agent dengan Python dan LangChain adalah pengalaman belajar yang sangat berharga bagi developer yang ingin memahami paradigma agentic workflow. Dari tutorial ini, kamu sudah bisa membuat agent yang mampu browsing, menghitung, dan mengakses API eksternal secara autonomus.

Langkah selanjutnya adalah mengeksplorasi arsitektur yang lebih kompleks seperti multi-agent collaboration dengan LangGraph, atau mengintegrasikan agent dengan backend FastAPI untuk dijadikan service. Dokumentasi resmi LangChain tersedia di LangChain Documentation. Jangan lupa juga untuk membaca paper asli ReAct di arXiv agar pemahaman teoritis semakin kuat.