AI
OpenAI Agents SDK vs Google ADK vs Claude Agent SDK (2026)
Oktober 202611 menit baca

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.
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.
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.
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.
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.

Ringkasan Utama
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.
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 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.
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.
Ketiganya bisa menjalankan lebih dari satu agent, tetapi berbeda pendapat soal siapa yang memegang kendali selama pekerjaan berlangsung.
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.
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:4318Untuk 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.
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.
Inilah shortlist yang akan saya berikan kepada seseorang hari ini, dengan satu alasan penentu untuk tiap kasus.
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.