← Semua pembelajaran / AWS untuk AI Engineer
Fase 5 · Agent, Tool Use & MCP

Strands Agents SDK

Strands mengambil pendekatan model-driven: kamu mendefinisikan tool dan membiarkan model yang mengorkestrasi. Untuk agent kustom di AWS, ini titik awal yang paling ringkas.

Intisari

  • pip install strands-agents; paket strands-agents-tools berisi tool siap pakai.
  • Dekorator @tool mengubah fungsi Python jadi tool — docstring-nya jadi deskripsi tool.
  • Default-nya memakai penyedia model Amazon Bedrock.
  • Mendukung tool MCP, keluaran terstruktur lewat Pydantic, streaming, dan pola multi-agent.
  • Disebut di exam guide AIP-C01 sebagai jalur orkestrasi native AWS, bersama AgentCore.

Agent pertama

uv add strands-agents strands-agents-tools
from strands import Agent, tool
from strands_tools import calculator, current_time


@tool
def hitung_sisa_cuti(nip: str, tahun: int) -> int:
    """Hitung sisa cuti tahunan seorang karyawan.

    Args:
        nip: Nomor induk pegawai
        tahun: Tahun yang ditanyakan

    Returns:
        Jumlah hari cuti yang tersisa
    """
    return ambil_dari_dynamodb(nip, tahun)


agent = Agent(tools=[calculator, current_time, hitung_sisa_cuti])

print(agent("Berapa sisa cuti NIP 12345 tahun ini?"))

Docstring bukan hiasan. Strands menurunkan deskripsi tool dan skema argumennya dari docstring dan type hint. Docstring yang malas menghasilkan tool yang salah dipakai — persis seperti masalah deskripsi tool di materi Converse. Kalau kamu sudah menulis docstring rapi sejak learn-python, kamu sudah setengah jalan.

Yang dikerjakan Strands untukmu

BagianLoop manual (materi tool use)Strands
Definisi skema toolJSON Schema tulis tanganDari type hint dan docstring
Loop giliranKamu tulisBawaan
Pengiriman toolResultKamu urus toolUseIdBawaan
Penanganan error toolKamu bungkus sendiriBawaan
Riwayat percakapanList yang kamu kelolaObjek agent

Materi tool use manual tetap penting: saat agent berperilaku aneh, kamu perlu tahu apa yang sedang terjadi di dalam loop itu. Strands menghemat pengetikan, bukan pemahaman.

Memakai tool MCP

from strands import Agent
from strands.tools.mcp import MCPClient

klien = MCPClient(url=GATEWAY_MCP_URL, headers={"Authorization": f"Bearer {token}"})

with klien:
    agent = Agent(tools=klien.list_tools_sync())
    print(agent("Ringkas kebijakan cuti dan buatkan tiket kalau ada yang tidak jelas."))

Keluaran terstruktur

from pydantic import BaseModel


class Ringkasan(BaseModel):
    judul: str
    poin: list[str]
    perlu_tindakan: bool


hasil = agent.structured_output(Ringkasan, "Ringkas dokumen kebijakan cuti.")
print(hasil.poin)          # objek Pydantic, sudah tervalidasi

Ini sambungan langsung dari Pydantic di learn-python: alih-alih memparsing teks dan berharap, kamu mendeklarasikan bentuk yang diinginkan dan mendapat objek yang sudah divalidasi.

Debugging

import logging

logging.getLogger("strands").setLevel(logging.DEBUG)
logging.basicConfig(format="%(levelname)s | %(name)s | %(message)s")

agent = Agent(tools=[hitung_sisa_cuti])
agent("Berapa sisa cutiku?")     # cetak seluruh prompt, permintaan tool, dan hasilnya

Nyalakan ini saat pertama kali membangun agent. Melihat prompt yang sebenarnya terkirim — beserta deskripsi tool hasil generate — menjelaskan sebagian besar perilaku yang tampak misterius.

Menaikkannya ke produksi

KebutuhanJawaban
Tempat menjalankanAgentCore Runtime, atau Lambda/Fargate biasa
Memori lintas sesiAgentCore Memory
Tool bersama antar agentAgentCore Gateway
Penyaringan input/outputBedrock Guardrails (Fase 6)
TelemetriAgentCore Observability + CloudWatch (Fase 7)

Latihan: tulis ulang agent dari materi tool use memakai Strands, dengan tool yang sama persis. Nyalakan log DEBUG dan bandingkan prompt yang dikirim Strands dengan toolConfig yang kamu susun manual sebelumnya. Catat apa yang ditambahkan Strands yang tidak kamu pikirkan.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.