Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.
01Apa perbedaan OpenAI Agents SDK dan Google ADK?
OpenAI Agents SDK adalah sekumpulan kecil primitive, yaitu agent, Runner, handoffs, guardrails, sessions, dan sandbox agents, di Python dan TypeScript. Google ADK 2.0 menambahkan graph workflows tempat agent dan fungsi menjadi node yang dihubungkan edge, evaluasi bawaan lewat adk eval, dan SDK untuk Python, Go, serta TypeScript. ADK juga lebih agnostik terhadap model sejak awal.
02Bisakah OpenAI Agents SDK memakai model Claude atau Gemini?
Bisa, lewat adapter LiteLLM atau Any-LLM, yang ditandai beta di dokumentasi SDK. Anda memasang extra-nya, misalnya openai-agents dengan extra litellm, lalu memberikan nama model berawalan litellm. Structured outputs, tool calling, dan metrik usage kemudian bergantung pada provider upstream, jadi uji dulu sebelum mengandalkannya.
03Apakah Claude Agent SDK hanya untuk coding agent?
Tidak, tetapi SDK ini dibangun di atas harness Claude Code, sehingga paling kuat untuk agent yang membaca file, mengeditnya, atau menjalankan shell command. Anda mendapat tool bawaan, permission, hooks, subagent, dan sessions milik Claude Code tanpa menulisnya sendiri. Untuk agent sempit yang hanya memanggil beberapa API, runtime-nya lebih berat daripada yang dibutuhkan.
04Agent SDK mana yang punya evaluasi bawaan terbaik?
Google ADK, dengan selisih yang jelas. ADK menyertakan command adk eval, antarmuka adk web, dan AgentEvaluator untuk pytest, dengan metrik untuk trajectory tool call yang persis, kecocokan respons ROUGE-1, dan kualitas yang dinilai LLM. Baik OpenAI Agents SDK maupun Claude Agent SDK tidak mencantumkan eval runner di antara primitive-nya.
05Apakah saya harus meng-host agent SDK ini sendiri?
Untuk SDK-nya, ya: kodenya berjalan di proses atau container Anda sendiri. Setiap vendor juga punya opsi hosted, yaitu OpenAI Agents API, Claude Managed Agents, dan Agent Runtime di Google Cloud untuk ADK. Jika Anda tidak ingin mengoperasikan server agent, bandingkan hosted runtime tersebut sebelum memilih SDK.
OpenAI Agents SDK adalah framework paling ringan, dengan handoffs, guardrails, dan sandbox agents di Python dan TypeScript. Google ADK 2.0 menambahkan graph workflows, evaluasi bawaan, dan SDK Go. Claude Agent SDK menanamkan harness Claude Code beserta tool file dan shell-nya. Pilih berdasarkan bentuk loop dan target hosting produksi, bukan hanya vendor modelnya.
Pada minggu OpenAI merilis Agents API dalam status beta, saya membuka dokumentasi tiga agent SDK dari tiga vendor secara berdampingan, mencoba memutuskan di atas SDK mana agent saya berikutnya akan dibangun. Dokumentasi tiap vendor menjawab pertanyaan yang sedikit berbeda, karena tiap SDK punya gagasan berbeda tentang apa itu agent.
Ini panduan memilih, bukan tutorial. Artikel ini membandingkan OpenAI Agents SDK, Agent Development Kit 2.0 dari Google, dan Claude Agent SDK dari Anthropic sebagaimana kondisinya pada Oktober 2026, dari sisi bahasa, desain multi-agent, sandboxing, memory, tracing, evaluasi, portabilitas model, dan hosted runtime yang dituju masing-masing. Setiap klaim kemampuan diambil dari dokumentasi resmi vendor, yang tautannya ada di akhir.
OpenAI Agents SDK vs Google ADK vs Claude Agent SDK: jawaban singkat
Kalau Anda ingin sekumpulan primitive paling kecil dan berencana memakai model OpenAI, OpenAI Agents SDK adalah jalur terpendek: Agent, Runner, handoffs antar-agent, guardrails, sessions, dan sandbox agents dengan workspace sendiri. Kalau Anda butuh orkestrasi deterministik, evaluasi bawaan, atau SDK Go, Google ADK 2.0 adalah framework yang lebih kuat. Kalau tugas agent adalah mengolah file dan menjalankan command, Claude Agent SDK memberi Anda tool, permission, dan hooks milik Claude Code tanpa perlu menulisnya sendiri.
Perbedaan yang kurang terlihat adalah di mana tiap SDK diharapkan berjalan di produksi. OpenAI dan Anthropic kini sama-sama menawarkan hosted harness di samping library-nya, yaitu Agents API dan Claude Managed Agents, sementara ADK di-deploy ke Agent Runtime, Cloud Run, atau GKE di Google Cloud. Memilih SDK diam-diam juga berarti memilih jalur migrasi.
Tabel perbandingan berdampingan untuk Oktober 2026
Tabel ini merangkum dokumentasi tiap vendor menjadi sembilan pertanyaan yang menentukan shortlist saya. Jika sebuah sel menyebut kemampuan tidak tercantum, artinya dokumentasi vendor tidak menawarkannya sebagai primitive SDK, dan itu tidak sama dengan mustahil.
Dimensi
OpenAI Agents SDK
Google ADK 2.0
Claude Agent SDK
Bahasa
Python dan TypeScript
Python, Go, dan TypeScript saat 2.0 GA; Java dan Kotlin juga terdokumentasi
Python dan TypeScript; bahasa lain lewat CLI dalam mode headless
Abstraksi inti
Objek Agent plus Runner yang memegang loop
Agent dan Workflow, sebuah graph berisi node agent dan node fungsi
query() atau ClaudeSDKClient yang menjalankan subprocess CLI Claude Code
Model multi-agent
Handoffs, atau agent yang diekspos sebagai tool
Edge dan route pada graph, plus pola sequential, parallel, dan loop
Subagent yang dideklarasikan dengan AgentDefinition
Sandboxing
SandboxAgent dengan Manifest; provider Unix-local, Docker, dan hosted
Bukan primitive SDK; isolasi datang dari target deployment
Berjalan di container yang Anda sediakan; permission dan hooks menyaring tiap tool call
Sessions dan memory
Backend session untuk SQLite, SQLAlchemy, Redis, MongoDB, Dapr, dan penyimpanan terenkripsi
Sessions, memory, dan artifacts dirakit menjadi context; 2.0 mengubah skema session
Transkrip JSONL di disk lokal dengan resume dan fork; adapter SessionStore mencerminkannya
Tracing
Tracing adalah primitive inti, dengan integrasi observability
Logging, metrics, dan traces terdokumentasi
Traces, metrics, dan logs OpenTelemetry yang dikonfigurasi lewat environment variable
Evaluasi
Tidak ada eval runner di daftar primitive SDK
CLI adk eval, UI adk web, dan AgentEvaluator untuk pytest dengan metrik trajectory
Tidak ada eval runner yang tercantum
Portabilitas model
Default OpenAI; adapter LiteLLM dan Any-LLM, keduanya beta
Gemini dan Gemma plus Claude, OpenAI, Ollama, vLLM, dan LiteLLM
Hanya Claude, lewat Anthropic API, Amazon Bedrock, atau Google Cloud
Hosted runtime
Agents API, harness terkelola di layanan OpenAI
Agent Runtime, Cloud Run, atau GKE di Google Cloud
Claude Managed Agents, beta header managed-agents-2026-04-01
Dua baris lebih penting daripada kelihatannya. Portabilitas model menentukan apakah Anda bisa mencoba model yang lebih murah nanti tanpa rewrite, dan baris hosted runtime menentukan berapa biaya pindah dari server sendiri setelah agent berjalan di produksi.
Tiga gagasan berbeda tentang apa itu agent
Tugas kecil yang sama, yaitu pertanyaan tagihan yang diarahkan ke seorang spesialis, terlihat berbeda di tiap SDK, dan perbedaan itulah intinya. OpenAI memberi Anda objek dan Runner yang melakukan loop di atasnya. ADK 2.0 memberi Anda graph tempat agent LLM dan fungsi Python biasa sama-sama menjadi node, dihubungkan oleh edge. Claude Agent SDK memberi Anda sebuah proses: query() menjalankan CLI Claude Code, yang sudah tahu cara membaca, mengedit, mencari, dan menjalankan shell command.
# 1) OpenAI Agents SDK (pip install openai-agents)
# The Runner owns the loop; agents are objects you wire together.
from agents import Agent, Runner, SQLiteSession
billing = Agent(name="Billing", instructions="Answer invoice questions.")
triage = Agent(
name="Triage",
instructions="Route the user to the right specialist.",
handoffs=[billing], # Billing takes over the conversation, not just one call
)
session = SQLiteSession("user-42") # history survives between runs
result = Runner.run_sync(triage, "Why was INV-118 charged twice?", session=session)
print(result.final_output)
# 2) Google ADK 2.0 (pip install google-adk)
# A Workflow is a graph: agents and plain functions are both nodes.
from google.adk import Agent, Workflow
extract = Agent(name="extract", model="gemini-flash-latest",
instruction="Return only the invoice number in the message.")
def lookup(node_input: str):
return {"invoice": node_input, "status": "paid twice"} # deterministic code node
root_agent = Workflow(name="root_agent",
edges=[("START", extract, lookup)])
# 3) Claude Agent SDK (pip install claude-agent-sdk)
# query() spawns the Claude Code CLI; its built-in tools come with it.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition
options = ClaudeAgentOptions(
allowed_tools=["Read", "Grep", "Bash"], # Claude Code's own tools, no wiring
max_turns=20, # there is no session timeout, so bound the loop yourself
agents={"reviewer": AgentDefinition(
description="Reviews a diff for bugs",
prompt="You are a strict code reviewer.",
tools=["Read", "Grep"])},
)
async def main():
async for message in query(prompt="Find why ./billing tests fail", options=options):
print(message)
asyncio.run(main())
Poin terakhir itu mudah diremehkan. Di OpenAI dan ADK, setiap tool yang bisa disentuh agent adalah fungsi yang Anda tulis atau hosted tool yang Anda aktifkan. Di Claude Agent SDK, Read, Edit, Bash, dan lainnya datang siap pakai, sehingga pekerjaan bergeser dari menulis tool menjadi membatasinya dengan allowed_tools, permission mode, dan hooks. Untuk agent dokumen atau kode, itu keuntungan besar di awal. Untuk agent API yang sempit, runtime-nya jauh lebih besar daripada yang dibutuhkan.
Desain multi-agent: handoffs, graph, dan subagent
Ketiganya bisa menjalankan lebih dari satu agent, tetapi berbeda pendapat soal siapa yang memegang kendali selama pekerjaan berlangsung.
Handoffs di OpenAI memindahkan percakapan: agent triage mundur dan spesialis menjawab pengguna secara langsung. Mengekspos agent sebagai tool justru membuat pemanggil tetap memegang kendali. Memilih di antara keduanya adalah keputusan produk tentang siapa yang berbicara kepada pengguna.
Graph workflows di ADK membuat alur kontrol menjadi eksplisit. Edge berjalan dari START melewati node agent dan node fungsi, dan sebuah node bisa mengembalikan route yang memilih cabang berikutnya. Hanya di sini orkestrasi bisa dibaca sebagai data, bukan ditebak dari prompt.
Subagent Claude adalah pekerja yang didelegasikan dengan prompt, daftar tool, dan model sendiri, yang dipanggil agent utama saat ia memutuskannya. Tidak ada batas waktu wall-clock per subagent, jadi panduan hosting Anthropic menyarankan membatasi tiap subagent dengan maxTurns di AgentDefinition-nya.
Sandbox, sessions, dan di mana state disimpan
OpenAI menjadikan sandbox sebagai objek kelas satu di SDK. Sebuah SandboxAgent mendapat workspace yang dibangun dari Manifest berisi file, repository, dan mount, berjalan lewat sandbox client seperti UnixLocalSandboxClient atau client Docker, dan bisa dilanjutkan dari state sandbox yang tersimpan atau sebuah snapshot. Memory percakapan terpisah, berupa Session dengan backend SQLite, SQLAlchemy, Redis, MongoDB, atau Dapr. ADK memperlakukan sessions, memory, dan artifacts sebagai lapisan context tersendiri, dan rilis 2.0 mengubah skema untuk custom session storage, sehingga store dari 1.x perlu dimigrasikan.
Claude Agent SDK berangkat dari ujung sebaliknya: semuanya lokal secara default. Setiap session adalah subprocess CLI dengan shell dan working directory sendiri, yang menulis transkrip JSONL di folder projects milik ~/.claude. Panduan hosting Anthropic menyarankan 1 GiB RAM, 5 GiB disk, dan 1 CPU per agent sebagai titik awal, dan concurrency di satu host dibatasi oleh berapa banyak subprocess yang muat di RAM-nya.
Container Claude Agent SDK yang restart akan kehilangan transkrip, file memory CLAUDE.md, dan artifacts di working directory. Adapter SessionStore hanya mencerminkan transkrip, dan penulisan mirror bersifat best effort: batch yang gagal dibuang dengan system message mirror_error sementara query tetap berjalan. Pasang alert untuk message itu jika pengguna berharap bisa melanjutkan session mereka.
Tracing dan evaluasi tanpa tool tambahan
Evaluasi adalah bagian di mana ADK unggul jelas. ADK menyertakan command adk eval, UI adk web dengan threshold metrik, dan AgentEvaluator untuk pytest, serta menilai trajectory selain jawabannya. tool_trajectory_avg_score menuntut urutan tool call yang persis sama, response_match_score memakai ROUGE-1 terhadap jawaban referensi, dan metrik berbasis LLM judge serta rubrik menangani jawaban yang tidak punya satu rumusan benar. Baik SDK OpenAI maupun Claude tidak mencantumkan eval runner di antara primitive-nya.
# Google ADK: evaluation is a CLI verb, not a separate product
adk eval ./billing_agent ./billing_agent/refunds.evalset.json \
--config_file_path=./billing_agent/test_config.json \
--print_detailed_results
# test_config.json -- thresholds per metric
# tool_trajectory_avg_score 1.0 = the exact tool-call sequence must match
# response_match_score 0.8 = ROUGE-1 against the reference answer
{
"criteria": {
"tool_trajectory_avg_score": 1.0,
"response_match_score": 0.8
}
}
# Claude Agent SDK: traces come from env vars, exported over OTLP
CLAUDE_CODE_ENABLE_TELEMETRY=1
CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 # required for traces, not for metrics/logs
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318
Untuk tracing, hasilnya lebih seimbang. Tracing adalah primitive inti di SDK OpenAI, dengan integrasi untuk tool observability eksternal. Claude Agent SDK mewarisi pengaturan OpenTelemetry dari environment, seperti di atas, dan tidak menyertakan teks prompt maupun input tool di export kecuali Anda mengaktifkannya. ADK mendokumentasikan logging, metrics, dan traces. Dalam praktiknya, saya akan mengirim ketiganya ke OpenTelemetry collector yang sama dan membandingkannya di satu dashboard, bukan di viewer masing-masing vendor.
Portabilitas model dan lock-in
ADK adalah yang paling agnostik terhadap model di antara ketiganya: dokumentasinya mencantumkan Gemini dan Gemma di samping Claude, OpenAI, Ollama, vLLM, dan LiteLLM. OpenAI Agents SDK menjangkau provider lain lewat dua adapter, LiteLLM dan Any-LLM, yang oleh dokumentasinya sendiri ditandai beta.
# pip install "openai-agents[litellm]" (adapter is marked beta)
from agents import Agent, ModelSettings
agent = Agent(
name="Portable",
instructions="Summarise the purchase order.",
model="litellm/gemini/gemini-2.5-flash", # litellm/<provider>/<model>
# Some upstream providers return no usage numbers through the adapter;
# without this, your cost dashboard silently reads zero.
model_settings=ModelSettings(include_usage=True),
)
Claude Agent SDK hanya menjalankan Claude. Yang bervariasi adalah jalurnya: Anthropic API, Amazon Bedrock, atau Google Cloud, masing-masing butuh HTTPS keluar ke endpoint-nya sendiri. Itu lock-in nyata di lapisan model, ditukar dengan set tool bawaan yang di dua SDK lainnya harus Anda tulis sendiri.
Portabilitas lewat adapter tidak gratis. Untuk LiteLLM, dokumentasi SDK OpenAI memperingatkan bahwa structured outputs, tool calling, dan metrik usage bergantung pada provider upstream. Jalankan eval set Anda terhadap model kedua sebelum menjanjikan fallback yang lebih murah kepada siapa pun.
Agent SDK mana yang dipilih, berdasarkan use case
Inilah shortlist yang akan saya berikan kepada seseorang hari ini, dengan satu alasan penentu untuk tiap kasus.
Asisten untuk pelanggan di atas model OpenAI dengan beberapa spesialis dan pengecekan input: OpenAI Agents SDK. Handoffs dan guardrails memang dibuat untuk masalah itu, dan package TypeScript-nya memungkinkan tim web memegangnya.
Proses bisnis multi-langkah yang harus bisa diaudit, seperti pipeline approval atau dokumen: Google ADK 2.0. Graph workflow menuliskan urutan langkah di kode, dan adk eval memberi Anda gerbang regresi untuk trajectory.
Backend Go yang butuh agent di dalam proses yang sama: Google ADK, satu-satunya dari ketiganya yang punya SDK Go saat 2.0 GA.
Agent yang membaca repository, mengedit file, atau menjalankan shell command: Claude Agent SDK. Anda mewarisi tool dan model permission Claude Code alih-alih membangunnya ulang.
Anda sama sekali tidak mau mengelola server agent: bandingkan dulu hosted runtime-nya, yaitu OpenAI Agents API, Claude Managed Agents, atau ADK di Agent Runtime, karena hosted harness itulah yang benar-benar akan Anda operasikan.
Aturan yang saya bawa pulang: pilih agent SDK berdasarkan bentuk loop-nya dan tempat ia akan berjalan di produksi, lalu periksa portabilitas model. Pilihan model adalah batasan yang perlu dipastikan sejak awal, tetapi model orkestrasi adalah hal yang paling sulit diubah setelah traffic nyata bergantung padanya.