Perbandingan Framework AI Agent: Pilih yang Tepat

Minggu, Sep 20, 2026 | 20 menit baca | Diperbarui pada Minggu, Sep 20, 2026

@
Perbandingan Framework AI Agent: Pilih yang Tepat

Membangun AI agent tidak selalu membutuhkan framework besar. Untuk satu model, dua tool, dan satu loop pendek, kode Python biasa sering lebih mudah dirawat. Framework mulai terasa gunanya ketika alur harus berhenti menunggu persetujuan manusia, menyimpan state, mengulang langkah yang gagal, atau mengatur beberapa agen dengan tugas berbeda.

Pilihan praktisnya cukup jelas. Gunakan OpenAI Agents SDK jika kamu ingin runtime ringan dengan tools, handoff, guardrail, dan tracing. Pilih LangGraph saat alur stateful perlu terlihat seperti mesin keadaan yang bisa di-pause dan dilanjutkan. CrewAI cocok untuk tim agen berbasis peran yang ingin cepat membuat alur kerja. AutoGen masuk akal untuk eksperimen percakapan multi-agent dan sistem event-driven. Kalau masalahmu belum membutuhkan semua itu, mulai dari API model langsung.

Artikel ini membandingkan cara kerja, contoh kode, batasan, troubleshooting, serta jalur migrasi dari kelima pendekatan tersebut. Anggap informasi ini sebagai peta teknis yang diperiksa pada 20 September 2026. Nama API, versi paket, dukungan model, dan dokumentasi bisa berubah, jadi cek halaman resmi sebelum memasang dependency di proyek nyata.

Apa yang sebenarnya dibandingkan?

Istilah framework AI agent sering dipakai untuk menyebut benda yang berbeda. Ada SDK tipis yang menyediakan loop agen dan pemanggilan tool. Ada orkestrator yang memodelkan alur sebagai graf. Ada juga pustaka multi-agent yang membuat beberapa agen berbicara atau bekerja sebagai tim. Menaruh semuanya dalam satu tabel tanpa menjelaskan bentuk masalahnya justru bikin orang memilih dari nama, bukan kebutuhan.

Di panduan ini, “agent” berarti program yang dapat menerima tujuan, memanggil model, memakai tool, membaca hasil tool, lalu menentukan langkah berikutnya. Tool bisa berupa fungsi Python, pencarian, database, API internal, atau operasi file. Agen yang hanya menerima prompt dan mengembalikan teks sekali belum membutuhkan loop agentik.

Lima pilihan yang dibahas adalah:

  1. Tanpa framework, memakai API model dan loop sendiri.
  2. LangGraph untuk graf alur stateful dan kontrol jeda.
  3. CrewAI untuk Flow, Crew, task, dan pembagian peran.
  4. AutoGen untuk AgentChat serta fondasi event-driven Core.
  5. OpenAI Agents SDK untuk agent, tool, handoff, guardrail, session, dan tracing.

Perbandingannya memakai kriteria yang bisa dicek di kode, bukan klaim kecepatan yang tidak diuji di sini. Kriterianya mencakup bentuk alur, cara menyimpan state, campur tangan manusia, dukungan multi-agent, kemudahan debugging, ketergantungan pada vendor model, dan jumlah konsep baru yang harus dipelajari.

Tabel keputusan cepat

Kebutuhan proyekPilihan awal yang masuk akalAlasan
Satu agen dan satu sampai tiga toolAPI model langsung atau OpenAI Agents SDKKode tetap pendek dan mudah dilihat
Alur panjang yang bisa berhenti lalu lanjutLangGraphCheckpoint dan interrupt menjadi bagian dari desain
Proses yang punya urutan, router, dan stateCrewAI FlowsFlow mengatur jalur, Crew bisa dipanggil untuk tugas rumit
Percakapan beberapa agen untuk eksperimenAutoGen AgentChatAbstraksi tim dan pesan mudah dicoba
Sistem event-driven yang ingin dikustomisasiAutoGen CoreFondasinya memakai pesan dan runtime aktor
Handoff ke spesialis dalam layanan OpenAIOpenAI Agents SDKHandoff, tools, guardrail, dan tracing sudah tersedia
Kontrol penuh atas prompt dan schema toolTanpa frameworkTidak ada lapisan tambahan yang menyembunyikan loop

Tabel ini bukan peringkat. Framework yang tampak cocok di atas bisa menjadi pilihan buruk kalau tim tidak siap merawat dependency, tracing, penyimpanan state, dan kebijakan keamanan tool.

Sebelum memilih, gambar alur kerjanya

Ambil contoh sederhana: pengguna mengirim pertanyaan tentang status pesanan. Agen harus mencari pesanan, membaca status pengiriman, lalu menjawab. Alurnya linear. Kalau pencarian gagal, kamu cukup mengembalikan pesan error yang jelas. Loop manual sudah memadai.

Sekarang ubah kebutuhannya. Agen harus memeriksa identitas, mencari data di dua sistem, meminta persetujuan sebelum mengubah alamat, menunggu jawaban staf, lalu mencoba ulang jika API ekspedisi sedang gagal. Bentuknya berubah. Kamu membutuhkan state yang tetap ada setelah proses berhenti, batas percobaan, aturan routing, dan log yang bisa menjelaskan mengapa agen melakukan tindakan tertentu.

Gambarkan node di kertas sebelum memasang paket. Tulis input, tool, keluaran terstruktur, titik persetujuan, kondisi gagal, serta data yang harus bertahan. Kalau semua langkah bisa dibaca sebagai lima fungsi biasa, jangan buru-buru menambah framework. Dependency baru punya ongkos pemeliharaan.

Satu jebakan sering muncul pada tahap ini. Tim menyebut proses “multi-agent” padahal sebenarnya hanya satu model dengan empat tool. Memberi nama “peneliti”, “penulis”, dan “editor” pada tiga prompt tidak otomatis membuat sistem lebih baik. Tiga panggilan model bisa menambah latency, token, jalur gagal, serta biaya observasi. Pecah tugas kalau ada alasan kerja yang jelas, misalnya izin tool berbeda atau output satu peran harus diperiksa peran lain.

Opsi pertama: tanpa framework

Loop paling sederhana bisa dibuat dengan API model yang mendukung tool calling. Model mengembalikan permintaan tool. Program memvalidasi nama dan argumennya, menjalankan fungsi, mengirim hasil kembali, lalu mengulang sampai model menghasilkan jawaban akhir. Kamu memegang semua detail.

Contoh pola minimal, dengan endpoint fiktif agar tidak mendorong siapa pun memasukkan alamat internal nyata:

from typing import Any

MAX_TURNS = 8

TOOLS = {
    "cek_status": lambda nomor: {"nomor": nomor, "status": "diproses"}
}


def run_agent(client: Any, user_text: str) -> str:
    messages = [{"role": "user", "content": user_text}]
    for _ in range(MAX_TURNS):
        response = client.responses.create(
            model="model-example",
            input=messages,
            tools=[{
                "type": "function",
                "name": "cek_status",
                "description": "Mencari status pesanan",
                "parameters": {
                    "type": "object",
                    "properties": {"nomor": {"type": "string"}},
                    "required": ["nomor"],
                    "additionalProperties": False,
                },
            }],
        )
        tool_calls = [item for item in response.output
                      if item.type == "function_call"]
        if not tool_calls:
            return response.output_text
        for call in tool_calls:
            if call.name not in TOOLS:
                raise ValueError("Tool tidak diizinkan")
            result = TOOLS[call.name](**call.arguments)
            messages.append({"type": "function_call_output",
                             "call_id": call.call_id,
                             "output": result})
    raise RuntimeError("Batas langkah tercapai")

Contoh itu belum siap produksi. Kamu masih harus menambahkan parsing JSON yang benar, timeout, retry terbatas, autentikasi, logging tanpa data rahasia, validasi keluaran, idempotensi, serta perlindungan agar model tidak memanggil fungsi yang berbahaya. Justru itu gunanya menulis contoh minimal. Kamu bisa melihat bagian yang belum ada.

Pendekatan langsung cocok ketika kebutuhanmu berupa router kecil, FAQ dengan satu pencarian, atau helper internal yang tidak menyimpan pekerjaan panjang. Ia juga cocok untuk tim yang perlu berpindah provider model tanpa membawa abstraksi besar. Kekurangannya terasa ketika setiap proyek membuat versi loop sendiri. Bug yang sama muncul berulang, cara mencatat tool berbeda, dan proses resume harus dirancang dari nol.

Pakai pendekatan ini sebagai baseline. Kalau framework yang kamu pilih tidak bisa mengalahkan baseline itu dalam keterbacaan, pengujian, atau kemampuan yang memang dibutuhkan, jangan dipakai dulu.

LangGraph: kontrol graf untuk proses panjang

LangGraph memodelkan workflow sebagai graf. State dibaca dan ditulis oleh node. Edge menentukan langkah berikutnya. Desain ini cocok untuk proses yang punya cabang, pengulangan, checkpoint, dan campur tangan manusia. Dokumentasi resminya menyebut dukungan untuk durable execution, human-in-the-loop, memory, streaming, serta tracing melalui LangSmith.

Kekuatan LangGraph ada pada keterlihatan alur. Kamu bisa membaca bahwa node classify mengarah ke search atau ask_human, lalu keduanya menuju write_answer. Proses yang sebelumnya tersembunyi di prompt punya tempat yang lebih jelas di kode.

Sketsa Python berikut hanya menunjukkan bentuk desain, bukan tes yang saya jalankan:

from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END

class State(TypedDict):
    question: str
    category: str
    answer: str


def classify(state: State):
    text = state["question"].lower()
    category = "teknis" if "api" in text else "umum"
    return {"category": category}


def write_answer(state: State):
    return {"answer": f"Kategori: {state['category']}"}


def route(state: State):
    return "write"

builder = StateGraph(State)
builder.add_node("classify", classify)
builder.add_node("write", write_answer)
builder.add_edge(START, "classify")
builder.add_conditional_edges("classify", route,
                             {"write": "write"})
builder.add_edge("write", END)
workflow = builder.compile()

Untuk persetujuan manusia, dokumentasi LangGraph memakai interrupt dan mekanisme resume. State dapat disimpan oleh checkpointer, lalu proses dihentikan sebelum tool berisiko dijalankan. Setelah operator menyetujui atau mengubah data, workflow dilanjutkan. Pola ini berguna untuk perubahan alamat, penghapusan data, pengiriman email massal, atau tindakan yang menyentuh uang.

Kelemahannya juga jelas. Kamu harus memahami state, node, edge, checkpointer, dan cara resume. Kesalahan pada identitas thread atau checkpoint bisa membuat proses tampak hilang. API framework ini lebih dekat ke mesin orkestrasi daripada chatbot siap pakai. Pemula yang hanya ingin membuat agen dengan satu tool mungkin merasa terlalu banyak kode.

LangGraph cocok saat alur adalah aset bisnisnya. Contohnya pemeriksaan dokumen bertahap, proses klaim yang perlu tinjauan, coding agent yang menyimpan pekerjaan, atau pipeline riset yang harus bisa mengulang satu tahap. Ia kurang cocok jika yang kamu cari hanya pembungkus singkat untuk satu panggilan model.

Cara mencegah alur LangGraph macet

Pertama, berikan identifier thread yang stabil untuk satu pekerjaan. Jangan membuat ID baru setiap kali halaman web melakukan polling. Kedua, catat state yang aman untuk disimpan. Jangan memasukkan API key atau isi dokumen rahasia ke log hanya karena objek state mudah dicetak. Ketiga, tentukan node yang idempotent. Kalau proses dilanjutkan setelah jaringan putus, operasi pengiriman email tidak boleh terkirim dua kali tanpa pemeriksaan idenya.

Periksa juga perbedaan antara interrupt sebelum tool dan interrupt di dalam tool. Titik jeda harus terlihat oleh operator. Kalau persetujuan muncul setelah perubahan sudah dilakukan, desainnya terlambat. Untuk proses yang membutuhkan waktu panjang, uji restart worker dan pemulihan database, bukan hanya jalur sukses di laptop.

CrewAI: Flow mengatur, Crew mengerjakan

CrewAI menggunakan dua lapisan yang perlu dibedakan. Flow mengatur peristiwa, state, percabangan, serta urutan. Crew berisi beberapa agen yang mengerjakan task bersama. Dokumentasi resminya menjelaskan decorator seperti @start() dan @listen(), state flow, conditional logic, loop, serta pemanggilan Crew di dalam Flow.

Analogi tim kerja membuat CrewAI gampang dipahami oleh orang non-spesialis. Kamu bisa memberi peran peneliti untuk mengambil bahan, analis untuk memeriksa temuan, dan penulis untuk menyusun laporan. Analogi ini berguna saat desain memang punya pembagian tanggung jawab. Jangan gunakan peran fiktif hanya agar proyek terlihat canggih.

Contoh bentuk Flow:

from crewai.flow.flow import Flow, start, listen

class ResearchState:
    topic: str = ""
    notes: str = ""

class ResearchFlow(Flow[ResearchState]):
    @start()
    def receive_topic(self):
        self.state.topic = "perawatan VPS"
        return self.state.topic

    @listen(receive_topic)
    def collect_notes(self, topic):
        self.state.notes = f"Catatan untuk {topic}"
        return self.state.notes

flow = ResearchFlow()
result = flow.kickoff()
print(result)

Potongan itu belum membuat panggilan model. Ia hanya memperlihatkan alur state. Crew bisa dipanggil dari salah satu langkah ketika pekerjaan memang memerlukan beberapa agen yang berkolaborasi. Flow tetap memegang urutan yang lebih luas, sehingga kamu tidak menyerahkan seluruh kontrol pada percakapan antar-agen.

CrewAI enak untuk prototipe riset, produksi konten yang punya tahap pengumpulan bahan dan penyuntingan, atau otomasi yang mudah dijelaskan sebagai tim kecil. Flow membantu ketika proses perlu router, state, dan pemulihan. Dokumentasinya juga mencakup guardrail, structured output, memory, dan observability, tetapi detail dukungan versi perlu kamu cek pada dokumentasi yang sedang dipakai.

Risikonya terletak pada jumlah percakapan yang sulit ditebak. Agen bisa mengulang, membuat output yang terlalu panjang, atau saling mengoper konteks yang tidak perlu. Batasi jumlah iterasi dan ukuran hasil setiap task. Tetapkan schema keluaran, bukan hanya instruksi “buat laporan yang bagus”. Untuk biaya, catat pemakaian token per langkah. Jangan menganggap tiga agen selalu lebih murah atau lebih cepat daripada satu agen dengan tool yang baik.

Crew atau satu agen?

Pakai Crew kalau tugas memiliki batas antar-peran yang bisa diperiksa. Peneliti mengumpulkan URL. Pemeriksa menghapus klaim tanpa sumber. Penulis mengubah temuan menjadi artikel. Setiap tahap menghasilkan artefak yang bisa kamu simpan dan uji.

Satu agen lebih masuk akal jika semua langkah membutuhkan konteks yang sama dan tidak ada alasan memisahkan izin. Satu agen dengan tool pencarian dan schema keluaran lebih mudah dilacak daripada tiga agen yang saling berbicara hanya untuk menghasilkan paragraf.

Kalau kamu tetap memakai Crew, simpan prompt setiap peran di version control. Log siapa melakukan apa. Tambahkan batas waktu pada tool. Pengguna perlu tahu apakah jawaban akhir berasal dari satu model, hasil gabungan, atau keputusan manager agent.

AutoGen: percakapan dan runtime event-driven

AutoGen menyediakan AgentChat sebagai API tingkat lebih tinggi untuk aplikasi satu atau multi-agent. Di bawahnya ada AutoGen Core, fondasi event-driven untuk sistem agen yang lebih dapat dikustomisasi. Dokumentasi Microsoft menyebut AgentChat cocok untuk memulai prototipe, sedangkan Core ditujukan bagi sistem multi-agent yang lebih serius dan terdistribusi. Ada pula AutoGen Studio untuk membuat prototipe melalui UI.

Pola AgentChat biasanya dimulai dengan satu atau beberapa agen, lalu mengatur team, kondisi berhenti, serta cara pesan berpindah. Ini cocok untuk eksperimen diskusi terarah, misalnya agen perencana mengirim pekerjaan ke agen peneliti lalu agen pemeriksa. Kondisi berhenti harus ditulis jelas. “Berhenti kalau sudah selesai” bukan batas yang bisa diaudit.

Sketsa konseptual:

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import MaxMessageTermination

async def main(model_client):
    researcher = AssistantAgent(
        "researcher", model_client,
        system_message="Cari fakta dan tulis sumber yang dipakai."
    )
    reviewer = AssistantAgent(
        "reviewer", model_client,
        system_message="Periksa klaim dan tandai bagian tanpa sumber."
    )
    team = RoundRobinGroupChat(
        [researcher, reviewer],
        termination_condition=MaxMessageTermination(6),
    )
    result = await team.run(task="Buat daftar pertanyaan riset.")
    return result

# asyncio.run(main(client))

Kode di atas sengaja tidak mengisi client model dan tidak dijalankan. Itu bukan hasil benchmark. Contohnya hanya menunjukkan tempat konfigurasi client dan kondisi berhenti. Dalam proyek sungguhan, beri setiap agen izin tool yang berbeda. Agen reviewer tidak perlu memiliki akses menulis database hanya karena ia ikut dalam team.

Kelebihan AutoGen adalah pilihan abstraksi. Kamu dapat mulai dari AgentChat, lalu turun ke Core ketika perlu routing pesan, runtime aktor, atau distribusi. Kekurangannya adalah konsep serta perubahan API yang perlu diikuti. Proyek lama berbasis AutoGen 0.2 tidak dapat dianggap sama dengan struktur paket generasi baru. Baca migration guide resmi sebelum menyalin tutorial lama.

AutoGen masuk akal untuk riset multi-agent, demo internal, dan sistem yang memang berkomunikasi lewat event. Ia perlu disiplin lebih ketat pada kondisi berhenti, ukuran konteks, dan izin tool. Kalau targetmu aplikasi produksi sederhana dengan satu agen, AgentChat mungkin menambah lapisan yang belum perlu.

Troubleshooting AutoGen

Jika team tidak berhenti, cek semua kondisi terminasi dan pasang batas jumlah pesan sebagai pagar terakhir. Jika output kosong, periksa apakah task terakhir hanya menghasilkan event tool, bukan pesan teks. Jika integrasi model gagal, pastikan client yang dipakai sesuai paket extension dan versi Python yang diminta dokumentasi. Jangan menambal tutorial lama dengan nama import baru secara acak. Lebih cepat mulai dari quickstart versi yang sama dengan paket terpasang.

Untuk sistem terdistribusi, uji ulang pengiriman pesan setelah worker mati. Pastikan pesan punya ID dan handler dapat menangani duplikasi. Event-driven bukan sinonim dari otomatis aman. Queue, retry, dan deduplikasi tetap pekerjaanmu.

OpenAI Agents SDK: primitives yang tipis

OpenAI Agents SDK memberi beberapa komponen kecil. Agent berisi instruksi dan tools. Handoff memindahkan kendali ke agen lain. Agents as tools memungkinkan agen utama memakai agen spesialis sebagai tool. Guardrail memvalidasi input atau output. SDK juga menyediakan sessions, human-in-the-loop, MCP server tool calling, sandbox agents, dan tracing menurut dokumentasi resminya.

Pendekatan ini cocok bagi developer yang ingin runtime menangani giliran, eksekusi tool, handoff, guardrail, dan session tanpa membangun seluruh loop sendiri. SDK menggunakan Responses API untuk model OpenAI secara default, tetapi dokumentasinya juga menjelaskan kapan API tersebut dipanggil langsung untuk kontrol yang lebih rendah.

Contoh paling kecil:

import asyncio
from agents import Agent, Runner

agent = Agent(
    name="Asisten status",
    instructions="Jawab singkat. Minta nomor pesanan sebelum mencari data.",
)

async def main():
    result = await Runner.run(agent, "Saya ingin mengecek pesanan.")
    print(result.final_output)

asyncio.run(main())

Contoh ini belum memiliki tool pencarian. Untuk menambah tool, ubah fungsi Python menjadi function tool dengan schema yang jelas, lalu validasi aksesnya. Handoff cocok jika agen triase memang menyerahkan percakapan ke spesialis. Agents as tools cocok jika agen utama tetap memegang jawaban akhir dan hanya meminta bantuan spesialis.

Perbedaan dua pola itu sering membingungkan. Pada handoff, spesialis mengambil alih kendali. Pada agents as tools, spesialis mengembalikan hasil ke agen utama. Pilih berdasarkan siapa yang harus bertanggung jawab atas jawaban terakhir.

SDK ini terasa ringkas pada awal proyek. Batasannya muncul ketika kamu ingin graf arbitrer, checkpoint yang sangat khusus, atau provider model dengan kemampuan yang tidak sama. Kamu dapat menggabungkannya dengan komponen lain, tetapi setiap adapter menambah titik pemeliharaan. Jika aplikasi bergantung penuh pada layanan OpenAI, SDK menjadi pilihan yang wajar. Jika portabilitas provider adalah syarat utama, tes abstraksi model sejak hari pertama.

Guardrail bukan pengganti izin

Guardrail dapat menolak input atau output yang tidak memenuhi aturan. Ia bukan pengganti authorization di server. Tool ubah_alamat tetap harus memeriksa identitas dan hak pengguna di dalam fungsi tool. Jangan percaya bahwa prompt “hanya lakukan untuk pemilik akun” cukup untuk melindungi data.

Pola aman biasanya memisahkan empat lapisan. Model mengusulkan tindakan. Schema memaksa bentuk argumen. Guardrail memeriksa isi yang terlihat. Fungsi tool memeriksa izin, batas nilai, dan idempotensi. Log menyimpan keputusan tanpa membocorkan rahasia. Kalau salah satu lapisan dilewati, agen punya ruang gerak yang terlalu besar.

Bagaimana memilih berdasarkan kriteria teknis

Kontrol alur

Tanpa framework memberi kontrol paling jelas karena loop ada di file kamu. LangGraph memberi kontrol graf yang eksplisit. CrewAI Flow memberi kontrol event dan state, sementara Crew mengurus kerja tim. AutoGen memusatkan pesan dan kondisi team. OpenAI Agents SDK memakai loop runtime, handoff, serta tool yang lebih ringan.

Jangan pilih berdasarkan jumlah fitur. Tanyakan satu hal: apakah reviewer dapat menggambar alur yang berjalan dari log? Jika tidak, sistem akan sulit diperbaiki ketika model memilih jalur yang tidak kamu duga.

State dan resume

State percakapan pendek bisa disimpan di request atau database biasa. Pekerjaan panjang perlu checkpoint. LangGraph menempatkan kebutuhan ini di tengah desain. CrewAI Flow menyediakan state flow serta kemampuan persistence yang perlu diperiksa sesuai versi. OpenAI Agents SDK menyediakan session dan mekanisme resume untuk alur tertentu. AutoGen memiliki state komponen dan team, tetapi desain penyimpanan tetap harus kamu tentukan.

Uji resume secara nyata. Matikan worker setelah tool pertama, nyalakan lagi, lalu lanjutkan pekerjaan yang sama. Catat apakah tool pertama berjalan dua kali. Tes ini jauh lebih berguna daripada sekadar melihat demo sukses.

Multi-agent

Multi-agent bukan kategori kualitas. Ia adalah bentuk arsitektur. CrewAI paling mudah dibaca jika pembagian peran adalah pusat desain. AutoGen terasa alami untuk pertukaran pesan dan team. OpenAI Agents SDK memilih handoff atau agents as tools. LangGraph bisa memodelkan supervisor, worker, atau subgraph dengan kontrol eksplisit.

Pilih yang paling mudah menjawab tiga pertanyaan. Siapa yang mengirim tugas? Siapa yang berhak memanggil tool? Siapa yang menyetujui jawaban akhir? Jika jawabannya tersembunyi dalam prompt, kamu belum punya desain yang cukup kuat.

Debugging

Tracing membantu, tapi tidak otomatis menjelaskan kualitas. Simpan input tool, nama tool, waktu mulai, waktu selesai, hasil validasi, dan alasan routing. Pisahkan data sensitif dari log. Buat satu ID untuk satu pekerjaan agar jejak antar-langkah bisa diikuti.

LangGraph cocok jika kamu ingin melihat lintasan node. OpenAI Agents SDK punya tracing bawaan untuk memvisualisasikan alur. CrewAI menyediakan observability sesuai fitur dan versi. AutoGen memberi event serta pesan yang dapat ditampilkan. Tanpa framework, kamu perlu membangun format trace sendiri. Format sederhana yang konsisten sering lebih berguna daripada dashboard mahal yang tidak dibaca.

Portabilitas model

Framework yang dibuat di sekitar primitive generik biasanya lebih mudah dipindahkan, tetapi tidak ada portabilitas gratis. Tool calling, structured output, streaming, context window, dan error provider bisa berbeda. Abstraksi yang menyembunyikan perbedaan mungkin memudahkan awal, lalu menyulitkan saat kamu membutuhkan fitur khusus.

Jika model provider bisa berubah, buat contract test. Jalankan pertanyaan dan tool call yang sama pada model pilihan. Periksa apakah nama tool, schema, jumlah panggilan, dan bentuk output tetap bisa diterima aplikasi. Jangan menyimpulkan portabilitas dari satu import yang terlihat serupa.

Contoh keputusan untuk empat jenis proyek

Chatbot status layanan

Mulai tanpa framework atau OpenAI Agents SDK. Sediakan tool cek_status, validasi nomor pelanggan di backend, dan kembalikan jawaban ringkas. Tidak ada alasan membuat team lima agen untuk mencari satu status. Tambahkan tracing agar staf dapat melihat permintaan yang gagal.

Pemeriksa dokumen dengan persetujuan staf

Pilih LangGraph jika pemeriksaan memiliki tahap baca, ekstrak, validasi, minta revisi, dan simpan. State perlu bertahan saat staf belum menjawab. Setiap perubahan harus memiliki ID dokumen dan status yang bisa dilihat pengguna.

Produksi laporan riset rutin

CrewAI Flow masuk akal jika Flow mengatur jadwal dan state, lalu Crew menjalankan penelitian dengan peran yang jelas. Batasi daftar sumber, simpan URL dan tanggal akses, serta paksa keluaran berbentuk schema. Reviewer manusia tetap dibutuhkan untuk klaim yang akan diterbitkan.

Laboratorium multi-agent

AutoGen cocok untuk menguji apakah planner, researcher, dan evaluator dapat menyelesaikan tugas dalam kondisi terkontrol. Mulai dengan batas pesan kecil dan data sintetis. Jangan memberikan kredensial produksi kepada team eksperimen. Ketika pola kerja sudah stabil, pertimbangkan memindahkan jalur yang penting ke graf eksplisit atau loop yang lebih sederhana.

Cara menguji framework tanpa mengarang benchmark

Artikel ini tidak menjalankan benchmark lintas framework. Kamu juga tidak perlu membuat tabel skor palsu hanya agar keputusan tampak ilmiah. Buat evaluasi yang sesuai dengan pekerjaanmu.

Siapkan sekurangnya dua puluh input yang sudah punya jawaban atau kriteria benar. Campurkan pertanyaan normal, data tidak lengkap, tool gagal, input berbahaya, timeout, jawaban panjang, dan permintaan yang harus ditolak. Jalankan setiap kandidat dengan model serta tool yang sama. Catat hasil akhir, jumlah panggilan model, jumlah tool call, waktu, error, dan pemakaian token jika provider menyediakannya.

Nilai hal yang benar-benar kamu pedulikan. Misalnya, agen harus menyebutkan sumber, tidak mengubah data tanpa persetujuan, dan dapat melanjutkan pekerjaan setelah restart. Jangan menyebut framework A “lebih cepat” jika kamu mengganti model, prompt, server, serta ukuran input pada percobaan yang berbeda.

Buat tes kecil untuk tiap tool. Pastikan argumen dengan tipe salah ditolak. Pastikan pengguna tanpa izin tidak dapat memanggil operasi sensitif. Pastikan retry tidak menggandakan transaksi. Pastikan log tidak menyimpan token. Ini bukan pekerjaan glamor, tetapi di sinilah agent biasanya gagal.

Masalah umum saat mulai membangun

Agen terus memanggil tool

Pasang batas giliran atau pesan. Periksa instruksi tool dan kondisi berhenti. Tool harus mengembalikan hasil yang jelas saat tidak ada data, bukan string kosong yang membuat model menebak. Kalau model perlu mengulang pencarian, simpan jumlah percobaan di state dan hentikan setelah batas yang wajar.

Schema tool ditolak

Pastikan tipe data, field wajib, enum, serta additionalProperties sesuai adapter model. Jangan mengandalkan parser longgar di awal lalu berharap semua provider mengirim format sama. Cetak payload yang sudah disanitasi saat debugging. Jangan mencetak token autentikasi.

Resume menjalankan aksi dua kali

Masalahnya biasanya idempotensi, bukan model. Beri setiap operasi eksternal sebuah idempotency key. Simpan status sebelum dan sesudah panggilan. Saat worker hidup kembali, baca status itu dulu. Pengiriman email, pembuatan resource, atau pengurangan saldo tidak boleh mengandalkan ingatan agen.

Konteks makin panjang dan jawaban memburuk

Ringkas state yang sudah tidak perlu, pisahkan dokumen besar menjadi bagian yang dapat dicari, dan jangan mengirim seluruh riwayat pada setiap node. Simpan fakta terstruktur secara terpisah dari percakapan. Context window yang besar bukan izin untuk menumpuk semua data.

Agent terlihat pintar dalam demo, lalu gagal di data nyata

Demo biasanya memakai input bersih dan tool yang selalu berhasil. Tambahkan error, data kosong, bahasa campuran, permintaan ambigu, serta pengguna yang berubah pikiran. Uji dengan data sintetis yang bentuknya mirip produksi. Jangan memasukkan data rahasia ke notebook eksperimen.

Dependency bertabrakan

Catat versi Python, package, dan provider dalam lockfile. Pasang framework di environment terpisah. Baca migration guide ketika tutorial lama memakai import yang tidak lagi tersedia. Jangan menaikkan semua package sekaligus sebelum kamu punya tes yang bisa menunjukkan apa yang rusak.

Urutan migrasi yang aman

Kalau sekarang kamu punya loop manual, jangan langsung memindahkan semua fitur. Pertahankan contract tool. Bungkus satu tool dulu. Bandingkan input, output, error, dan log antara implementasi lama serta framework baru. Setelah itu pindahkan state, lalu routing, kemudian persetujuan manusia.

Kalau pindah dari multi-agent chat ke graf, mulai dari satu jalur kerja yang paling sering gagal. Tulis node dan edge-nya. Jadikan percakapan antar-agen sebagai data yang dibatasi, bukan alur yang menentukan semuanya. Ini biasanya membuat sistem lebih mudah diprediksi, meski file kodenya sedikit lebih panjang.

Kalau pindah antar-provider, pisahkan instruksi agen dari konfigurasi client. Gunakan schema tool yang netral. Buat adapter tipis hanya di batas provider. Jangan menyebarkan nama model dan format response ke seluruh fungsi bisnis.

Keamanan yang tidak boleh dilewati

Agen yang bisa memanggil tool memiliki kemampuan, bukan kehendak yang dapat dipercaya. Semua izin harus diperiksa server. Batasi domain yang boleh diakses. Batasi direktori file. Jalankan kode hasil model di sandbox jika memang harus dieksekusi. Jangan berikan akses shell penuh kepada agen yang hanya perlu membaca status layanan.

Pisahkan lingkungan percobaan dan produksi. Pakai domain contoh seperti api.example.test dan IP dokumentasi 203.0.113.55 di tutorial. Rahasiakan API key dari prompt, log, screenshot, dan file konfigurasi yang masuk Git. Untuk data pribadi, minimalkan field yang dikirim ke model dan tetapkan masa simpan yang jelas.

Tool juga harus tahan terhadap prompt injection. Isi halaman web, file, atau email bisa berisi instruksi yang mencoba mengubah tujuan agen. Model boleh membaca isi itu sebagai data, bukan sebagai kebijakan yang otomatis harus diikuti. Simpan aturan izin di luar prompt yang dapat dipengaruhi dokumen.

Kalau tindakan berdampak ke pengguna, uang, akun, atau server, tambahkan persetujuan manusia. Jangan menjadikan nama framework sebagai alasan untuk melewati pemeriksaan.

Hubungan dengan artikel Ajeng Media yang sudah terbit

Artikel AI Agent Framework Terbaik 2026 membahas pilihan framework secara lebih ringkas dan berorientasi pengenalan. Artikel ini mengambil sudut yang berbeda. Fokusnya ada pada bentuk alur, kontrol state, pola kode, troubleshooting, dan cara menguji pilihan tanpa membuat benchmark palsu.

Untuk eksplorasi kode open source, baca AI Agent di GitHub. Pembaca yang ingin mencoba agent yang sudah tersedia dapat melanjutkan ke 5 AI Agent Gratis. Sementara itu, AI Agent Skills membahas cara menambah konteks prosedural ke coding agent, bukan membandingkan orkestrator di artikel ini.

Tautan tersebut tidak menggantikan dokumentasi vendor. API berubah lebih cepat daripada artikel. Simpan tanggal pemeriksaan saat kamu menyalin contoh ke proyek.

Sumber resmi

  1. LangGraph Concepts, dokumentasi LangChain tentang stateful workflow, durable execution, human-in-the-loop, memory, dan tracing.
  2. CrewAI Documentation, terutama bagian Flows dan Crews tentang state, event, task, proses, serta koordinasi.
  3. AutoGen Documentation, dokumentasi Microsoft Open Source tentang Studio, AgentChat, Core, dan extensions.
  4. OpenAI Agents SDK, dokumentasi resmi tentang agent, tools, handoffs, guardrail, sessions, sandbox, serta tracing.

Sumber resmi dipakai untuk memeriksa bentuk komponen dan kemampuan yang didokumentasikan. Tidak ada klaim benchmark, angka kecepatan, angka biaya, atau hasil pengujian pribadi di artikel ini.

Kalau alurnya cuma satu panggilan model dan satu tool, tulis loop kecil dulu. Ketika proses mulai membutuhkan checkpoint, persetujuan, routing, atau beberapa peran yang benar-benar terpisah, baru pilih framework yang membuat masalah itu terlihat di kode. Pilihan yang paling baik biasanya bukan yang punya daftar fitur terpanjang, melainkan yang membuat kegagalan paling mudah ditemukan.

Artikel ini membahas teknologi perangkat lunak, bukan nasihat profesional untuk keputusan keamanan, hukum, keuangan, atau perlindungan data. Uji sistem di lingkungan aman dan minta peninjauan manusia sebelum menghubungkannya ke data atau tindakan produksi.