

Bild vom Autor
# Einführung
Sind Sie es leid, Skripte, Instruments und Eingabeaufforderungen zusammenzukleben? Der Claude Agent SDK lässt dich deine drehen Claude Code „Planen → Erstellen → Ausführen“-Workflow in echte, programmierbare Agenten umwandeln, sodass Sie Aufgaben automatisieren, Instruments vernetzen und Befehlszeilenschnittstellen-Apps (CLI) ohne jede Menge Klebercode bereitstellen können. Wenn Sie bereits gerne verwenden Claude Im Terminal bietet Ihnen dieses Software program Improvement Package (SDK) die gleiche Atmosphäre mit der richtigen Struktur, dem richtigen Zustand und der richtigen Erweiterbarkeit.
In diesem Tutorial richten Sie das Claude Agent SDK ein und erstellen eine kleine Multitool-CLI, die Schritte durchgängig verkettet (Plan → Handeln → Überprüfen). Unterwegs erfahren Sie, wie Sie Instruments registrieren, den Kontext verwalten und Agentenschleifen für lokale Arbeitsabläufe wie Debugging, Codegenerierung und Bereitstellung orchestrieren.
# Was ist das Claude Agent SDK?
Anthropisch‚S Claude Sonett 4.5 stellt eine bedeutende Weiterentwicklung der Fähigkeiten dar und verfügt über ein hochmodernes Codierungsmodell, das sich in Branchen-Benchmarks für logisches Denken, Mathematik und Aufgaben mit langem Kontext auszeichnet. Diese Model umfasst eine Chrome-Erweiterung, ein Speichertool und Funktionen zur Dokumentenerstellung. Die herausragende Komponente ist die Claude Agent SDKgebaut auf dem Fundament von Claude Code.
Mit dem Claude Agent SDK können Entwickler von Claude unterstützte Anwendungen erstellen, erweitern und anpassen. Es ermöglicht die Integration in Ihre lokale Umgebung, gewährt Claude Zugriff auf Ihre Instruments und erleichtert die Orchestrierung komplexer Arbeitsabläufe, einschließlich Codierung, Recherche, Notizen und Automatisierung.
# Einrichten des Claude Agent SDK
Stellen Sie vor dem Bau sicher, dass Sie beides eingerichtet haben Claude Code CLI und die Claude Agent SDK.
// 1. Voraussetzungen
- Python: Model 3.10 oder höher.
- Node.js: Model 18+ für die CLI.
- Claude-API-Schlüssel oder anthropisches Konto.
// 2. Installieren Sie die Claude Code-CLI
Wir installieren die Claude Code CLI unter Home windows, indem wir den folgenden Befehl in PowerShell eingeben:
irm https://claude.ai/set up.ps1 | iex
Fügen Sie dann diesen Pfad zu Ihrer Systemumgebung hinzu:
Starten Sie PowerShell neu und testen Sie:
Erwägen Sie für andere Plattformen die Verwendung des npm-Paketmanagers:
npm i -g @anthropic-ai/claude-code
Geben Sie nach der Set up Folgendes ein: claude in Ihrem Terminal, um sich anzumelden.
// 3. Installieren Sie das Claude Agent SDK (Python)
Installieren Sie das Claude Agent Python SDK mit dem Pip-Paketmanager.
pip set up claude-agent-sdk
Wenn Sie eine bekommen CLINotFoundErrorStellen Sie sicher, dass die Claude-CLI korrekt installiert und in Ihrem PATH enthalten ist.
# Erstellen einer Multi-Instrument-App mit dem Claude Agent SDK
In diesem Abschnitt erstellen wir die TrendSmith Anwendung, die Reside-Markttrends in verschiedenen Branchen verfolgt, darunter Startups, KI, Finanzen und Nachhaltigkeit.
Es verbindet Claude Sonett 4.5, WebSuche, WebFetchUnd lokaler Speicher Instruments in einem einzigen Multiagentensystem.
Erstellen Sie die Python-Datei trend_smith.py und fügen Sie den folgenden Code hinzu:
// 1. Importe und Grundeinstellungen
Dadurch werden Python-Bibliotheken, die Claude Agent SDK-Typen, ein kleines Hilfemenü, der Modellname und ein weicher grauer Textstil für Statuszeilen geladen.
import asyncio
import os
import re
import sys
import time
from datetime import datetime
from pathlib import Path
from claude_agent_sdk import (
AssistantMessage,
ClaudeAgentOptions,
ClaudeSDKClient,
ResultMessage,
TextBlock,
ToolResultBlock,
ToolUseBlock,
)
HELP = """Instructions:
/pattern Fast multi-source scan (auto-saves markdown)
/scan Quick one-page scan
/assist /exit Assist / Stop
"""
MODEL = os.getenv("CLAUDE_MODEL", "sonnet") # e.g. "sonnet-4.5"
GRAY = " 33(90m"
RESET = " 33(0m"
// 2. Systemaufforderung und Berichtsziel
Dadurch werden die „Hausregeln“ für Antworten festgelegt (schnelle, kompakte, konsistente Abschnitte) und eine ausgewählt stories/ Ordner neben Ihrem Skript für gespeicherte Briefings.
SYS = """You might be TrendSmith, a quick, concise pattern researcher.
- End rapidly (~20 s).
- For /pattern: ≤1 WebSearch + ≤2 WebFetch from distinct domains.
- For /scan: ≤1 WebFetch solely.
Return for /pattern:
TL;DR (1 line)
3-5 Alerts (quick bullets)
Key Gamers, Dangers, 30/90-day Watchlist
Sources (markdown: **Title** -- URL)
Return for /scan: 5 bullets + TL;DR + Sources.
After ending /pattern, the consumer will auto-save your full transient.
"""
BASE = Path(__file__).father or mother
REPORTS = BASE / "stories"
// 3. Dateien sicher speichern
Diese Helfer machen Dateinamen sicher, erstellen bei Bedarf Ordner und versuchen immer einen Fallback auf den Residence-Ordner, damit Ihr Bericht trotzdem gespeichert wird.
def _ts():
return datetime.now().strftime("%Ypercentmpercentd_percentHpercentM")
def _sanitize(s: str):
return re.sub(r"(^w-.)+", "_", s).strip("_") or "untitled"
def _ensure_dir(p: Path):
attempt:
p.mkdir(mother and father=True, exist_ok=True)
besides Exception:
move
def _safe_write(path: Path, textual content: str) -> Path:
"""Write textual content to path; if listing/permission fails, fall again to ~/TrendSmith/stories."""
attempt:
_ensure_dir(path.father or mother)
path.write_text(textual content, encoding="utf-8")
return path
besides Exception:
home_reports = Path.house() / "TrendSmith"https://www.kdnuggets.com/"stories"
_ensure_dir(home_reports)
fb = home_reports / path.title
fb.write_text(textual content, encoding="utf-8")
return fb
def save_report(subject: str, textual content: str) -> Path:
filename = f"{_sanitize(subject)}_{_ts()}.md"
goal = REPORTS / filename
return _safe_write(goal, textual content.strip() + "n")
// 4. Verfolgen Sie jeden Lauf
Dadurch bleibt alles erhalten, was Sie für eine Anfrage benötigen: gestreamter Textual content, Modell, Werkzeuganzahl, Token-Nutzung und Timing, und wird dann vor der nächsten Anfrage sauber zurückgesetzt.
class State:
def __init__(self):
self.transient = ""
self.model_raw = None
self.utilization = {}
self.price = None
self.last_cmd = None
self.last_topic = None
self.instruments = {}
self.t0 = 0.0
self.t1 = 0.0
def reset(self):
self.transient = ""
self.model_raw = None
self.utilization = {}
self.price = None
self.instruments = {}
self.t0 = time.perf_counter()
self.t1 = 0.0
def friendly_model(title: str | None) -> str:
if not title:
return MODEL
n = (title or "").decrease()
if "sonnet-4-5" in n or "sonnet_4_5" in n:
return "Claude 4.5 Sonnet"
if "sonnet" in n:
return "Claude Sonnet"
if "haiku" in n:
return "Claude Haiku"
if "opus" in n:
return "Claude Opus"
return title or "Unknown"
// 5. Kurzfristige Zusammenfassung
Dadurch wird ein übersichtliches graues Feld gedruckt, in dem das Modell, die Token, die Werkzeugnutzung und die Dauer angezeigt werden, ohne dass es sich in Ihren gestreamten Inhalt einmischt.
def usage_footer(st: State, opts_model: str):
st.t1 = st.t1 or time.perf_counter()
dur = st.t1 - st.t0
utilization = st.utilization or {}
it = utilization.get("input_tokens")
ot = utilization.get("output_tokens")
whole = utilization.get("total_tokens")
if whole is None and (it's not None or ot just isn't None):
whole = (it or 0) + (ot or 0)
tools_used = ", ".be part of(f"{okay}×{v}" for okay, v in st.instruments.objects()) or "--"
model_label = friendly_model(st.model_raw or opts_model)
field = (
"┌─ Run Abstract ─────────────────────────────────────────────",
f"│ Mannequin: {model_label}",
f"│ Tokens: {whole if whole just isn't None else '?'}"
+ (f" (in={it if it's not None else '?'} | out={ot if ot just isn't None else '?'})"
if (it's not None or ot just isn't None) else ""),
f"│ Instruments: {tools_used}",
f"│ Period: {dur:.1f}s",
"└───────────────────────────────────────────────────────────",
)
print(GRAY + "n".be part of(field) + RESET, file=sys.stderr)
// 6. Die Hauptschleife (All-in-One)
Dies startet die App, liest Ihren Befehl, fragt die KI, streamt die Antwort und speichert /pattern Berichte und druckt die Zusammenfassung.
async def important():
"""Setup → REPL → parse → question/stream → auto-save → abstract."""
st = State()
_ensure_dir(REPORTS)
opts = ClaudeAgentOptions(
mannequin=MODEL,
system_prompt=SYS,
allowed_tools=("WebFetch", "WebSearch"),
)
print("📈 TrendSmith nn" + HELP)
async with ClaudeSDKClient(choices=opts) as consumer:
whereas True:
# Learn enter
attempt:
consumer = enter("nYou: ").strip()
besides (EOFError, KeyboardInterrupt):
print("nBye!")
break
if not consumer:
proceed
low = consumer.decrease()
# Primary instructions
if low in {"/exit", "exit", "stop"}:
print("Bye!")
break
if low in {"/assist", "assist"}:
print(HELP)
proceed
# Parse right into a immediate
if low.startswith("/pattern "):
subject = consumer.break up(" ", 1)(1).strip().strip('"')
if not subject:
print('e.g. /pattern "AI chip startups"')
proceed
st.last_cmd, st.last_topic = "pattern", subject
immediate = f"Run a quick pattern scan for '{subject}' following the output spec."
elif low.startswith("/scan "):
q = consumer.break up(" ", 1)(1).strip()
if not q:
print('e.g. /scan "AI {hardware} information"')
proceed
st.last_cmd, st.last_topic = "scan", q
immediate = f"Fast scan for '{q}' in beneath 10s (≤1 WebFetch). Return 5 bullets + TL;DR + sources."
else:
st.last_cmd, st.last_topic = "free", None
immediate = consumer
# Execute request and stream outcomes
st.reset()
print(f"{GRAY}▶ Working...{RESET}")
attempt:
await consumer.question(immediate)
besides Exception as e:
print(f"{GRAY}❌ Question error: {e}{RESET}")
proceed
attempt:
async for m in consumer.receive_response():
if isinstance(m, AssistantMessage):
st.model_raw = st.model_raw or m.mannequin
for b in m.content material:
if isinstance(b, TextBlock):
st.transient += b.textual content or ""
print(b.textual content or "", finish="")
elif isinstance(b, ToolUseBlock):
title = b.title or "Instrument"
st.instruments(title) = st.instruments.get(title, 0) + 1
print(f"{GRAY}n🛠 Instrument: {title}{RESET}")
elif isinstance(b, ToolResultBlock):
move # quiet software payloads
elif isinstance(m, ResultMessage):
st.utilization = m.utilization or {}
st.price = m.total_cost_usd
besides Exception as e:
print(f"{GRAY}n⚠ Stream error: {e}{RESET}")
# Auto-save pattern briefs and present the abstract
if st.last_cmd == "pattern" and st.transient.strip():
attempt:
saved_path = save_report(st.last_topic or "pattern", st.transient)
print(f"n{GRAY}✅ Auto-saved → {saved_path}{RESET}")
besides Exception as e:
print(f"{GRAY}⚠ Save error: {e}{RESET}")
st.t1 = time.perf_counter()
usage_footer(st, opts.mannequin)
if __name__ == "__main__":
asyncio.run(important())
# Testen der TrendSmith-Anwendung
Wir testen die App nun, indem wir die Python-Datei ausführen. Hier ist eine kurze Zusammenfassung zur Verwendung der CLI-Anwendung:
- /pattern „
“ → Kurzer Multi-Supply-Scan, automatisch gespeichert unterstories/<subject>_<ts>.md. - /scan „
“ → Einseitiger Schnellscan (≤1 WebFetch), nur Drucken. - /helfen → zeigt Befehle an.
- /Ausfahrt → beendet.


Bild vom Autor
Wir haben das verwendet /pattern Possibility zur Suche nach KI-Chip-Startups.
/pattern "AI chip startups"
Aus diesem Grund hat die App verschiedene Such- und Net-Scraping-Instruments verwendet, um Informationen von verschiedenen Web sites zu sammeln.


Bild vom Autor
Letztendlich hat es die vollständige Antwort bereitgestellt, den Bericht automatisch in der Markdown-Datei gespeichert und die Nutzungszusammenfassung erstellt. Es hat uns 0,136 $ gekostet.


Bild vom Autor
Hier ist eine Vorschau des gespeicherten Markdown-Berichts zu den AI Chips Startups.


Bild vom Autor
Wir werden nun die Scan-Possibility testen und mithilfe einer Websuche eine Zusammenfassung zum Thema erstellen.
Es nutzt ein einfaches Net-Such- und Abruftool, um eine kurze Zusammenfassung zum Thema zu erstellen.


Bild vom Autor
# Letzte Gedanken
Diese App lief reibungslos und funktionierte mit dem Claude Agent SDK hat wirklich Spaß gemacht. Wenn Sie bereits auf der sind Claude Code Ich empfehle Ihnen dringend, es auszuprobieren, um Ihren täglichen Terminal-Workflow in einen zuverlässigen und wiederholbaren Workflow umzuwandeln Agenten-CLIs.
Verwenden Sie es, um:
- Automatisieren Sie allgemeine Entwicklungsaufgaben (Debuggen, Testen, Bereitstellen).
- Erstellen Sie Skripts für einfache Analyse- oder Betriebsroutinen.
- Packen Sie Ihren Move in ein wiederverwendbares, gemeinsam nutzbares Instrument.
Das SDK eignet sich intestine für Profis, die dies wünschen Stabilität, ReproduzierbarkeitUnd geringer Klebercode-Overhead. Und ja, Sie können Claude Code sogar bitten, Ihnen beim Erstellen der eigentlichen Agentenanwendung mit dem SDK zu helfen.
Abid Ali Awan (@1abidaliawan) ist ein zertifizierter Datenwissenschaftler, der gerne Modelle für maschinelles Lernen erstellt. Derzeit konzentriert er sich auf die Erstellung von Inhalten und das Schreiben technischer Blogs zu maschinellem Lernen und Datenwissenschaftstechnologien. Abid verfügt über einen Grasp-Abschluss in Technologiemanagement und einen Bachelor-Abschluss in Telekommunikationstechnik. Seine Imaginative and prescient ist es, ein KI-Produkt mithilfe eines graphischen neuronalen Netzwerks für Schüler mit psychischen Erkrankungen zu entwickeln.
