Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
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 unter stories/<subject>_<ts>.md.
  • /scan „ → Einseitiger Schnellscan (≤1 WebFetch), nur Drucken.
  • /helfen → zeigt Befehle an.
  • /Ausfahrt → beendet.

Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
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.

Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
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.

Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
Bild vom Autor

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

Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
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.

Erste Schritte mit dem Claude Agent SDKErste Schritte mit dem Claude Agent SDK
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.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert