A Anthropic lançou o Claude Sonnet 4.5, um modelo de codificação de última geração que já está no topo das listas e benchmarks do setor. O que torna esta versão especialmente interessante é a sua integração perfeita entre ferramentas e estruturas. Desde a extensão VS Code e os recursos de edição de contexto até a ferramenta de memória, execução de código e criação de arquivos (planilhas, slides, documentos). Ele até se expande para novas experiências com o Claude for Chrome e o Imagine with Claude.
Mas o destaque deste lançamento é o novíssimo SDK Claude Agent, construído com base no Claude Code. Este SDK traz uma estrutura poderosa que permite aos desenvolvedores criar, personalizar e expandir as capacidades do Claude de maneiras totalmente novas.
Neste tutorial, vamos ver o que tem de novo no Claude 4.5, experimentar o SDK do Claude Agent, configurá-lo localmente e criar três projetos simples para ver o potencial dele em ação.
O que há de novo no Claude 4.5?
O Claude Sonnet 4.5 traz melhorias importantes nas funcionalidades. É o melhor modelo de codificação do mundo, o mais forte para a construção de agentes complexos e o melhor em tarefas de uso de computador, com ganhos substanciais em raciocínio e matemática. Esse modelo é o que há de mais moderno no benchmark verificado SWE-bench e foi observado mantendo o foco por mais de 30 horas em tarefas complexas e com várias etapas.
No ranking da OSWorld, ele melhorou seu desempenho para 61,4%, contra 42,2% há apenas quatro meses. Especialistas das áreas de finanças, direito, medicina e ciências exatas relataram uma melhora significativa no conhecimento e no raciocínio sobre o assunto.

Fonte: Apresentando Claude Sonnet 4.5 \ Antrópico
Além disso, esse é o modelo de fronteira mais alinhado da Anthropic até agora, mostrando menos bajulação, engano, busca por poder e incentivo à ilusão. Também reforçou as defesas contra injeções rápidas. Lançados sob as salvaguardas ASL-3, os classificadores atualizados têm como objetivo filtrar conteúdo de alto risco, reduzindo significativamente os falsos positivos em comparação com versões anteriores.
Entendendo o SDK do Claude Agent
O Claude Agent SDK, que antes era chamado de Claude Code SDK, tem um monte de ferramentas pra te ajudar a criar agentes poderosos e versáteis usando a mesma estrutura que o Claude Code.
O princípio básico é simples: dar ao Claude acesso a um computador. Com acesso ao terminal e ao sistema de arquivos, os agentes podem pesquisar, escrever, executar e iterar no código, assim como um desenvolvedor. Essas capacidades vão muito além da codificação, incluindo pesquisa aprofundada, criação de vídeos, anotações, análise de dados e muito mais.
O SDK do Claude Agent descreve um ciclo estruturado do agente envolvendo quatro etapas principais: coleta de contexto, tomada de ação, verificar o trabalhoe repetir.
Na prática, comece com a pesquisa agênica para contexto e adicione a pesquisa semântica quando precisar de velocidade. As ações devem se concentrar em ferramentas de alto sinal, scripts bash e integrações com serviços externos por meio do Protocolo de Contexto do Modelo.
A verificação junta verificações baseadas em regras, feedback visual e assistência LLM opcional. Recomenda-se a iteração contínua para refinar o desempenho, expandir as ferramentas e aprimorar os recursos de pesquisa à medida que os recursos são desenvolvidos.
Principais características:
- SDKs: TypeScript e Python para backends web/Node.js e ciência de dados, com conceitos compartilhados para que as equipes possam reutilizar padrões em todas as pilhas.
- Modos: Streaming para uma experiência do usuário interativa e de baixa latência e execução única para execuções em lote ou determinísticas — escolha por tarefa para equilibrar velocidade e controle.
- Gerenciamento de contexto: Compactação automática e controle de contexto de longo prazo para evitar sobrecarga e manter os agentes no programa durante sessões prolongadas.
- Ferramentas: Operações de arquivo integradas, execução de código e pesquisa na web, além de extensibilidade para ferramentas externas e dados via MCP.
- Permissões: Controles de capacidade detalhados (por exemplo, permissões/proibições por ferramenta e modos de política) para limitar o que um agente pode fazer na produção.
- Pronto para produção: Gerenciamento de erros, gerenciamento de sessões e monitoramento integrados para que você possa implantar agentes confiáveis com observabilidade desde o primeiro dia.
- Integração com Claude: Cache automático de prompts e otimizações de desempenho pra reduzir a latência e os custos, melhorando a taxa de transferência.
- Autenticação: Use uma chave API Claude ou faça o roteamento por meio de provedores como Amazon Bedrock e Google Vertex AI para se adequar ao seu ambiente de implantação.
- Mensagens do sistema: Defina a função, a especialização e as diretrizes para moldar o comportamento do agente de forma consistente em todas as tarefas e sessões.
- Integrações (MCP): Conecte ferramentas personalizadas, bancos de dados e APIs através do Protocolo de Contexto de Modelo aberto, um padrão apoiado pela Anthropic com SDKs TypeScript oficiais e um ecossistema em crescimento.
Introdução ao SDK do Claude Agent em Python
Antes de começar a criar projetos, você precisa definir alguns pré-requisitos, instalar o Claude Code CLI e o Claude Agent SDK.
Pré-requisitos
- Certifique-se de que você tem a versão 3.10 ou superior do Python.
- Pra usar o Claude Code CLI de forma eficaz, você também precisa instalar o Node.js versão 18 ou superior e o pacote NPM.
Instalar o Claude Code CLI
Para Windows:
Abra o PowerShell e execute o seguinte comando para baixar e instalar o Claude Code:
irm https://claude.ai/install.ps1 | iex
Depois de instalar, adicione C:\Users\\.local\bin ao PATH do seu sistema. Reinicie o PowerShell e você verá que o Claude está em execução.
Para outras plataformas:
Se você já tem o Node.js e o NPM instalados, tente executar o seguinte comando no terminal para instalar o Claude Code:
npm i -g @anthropic-ai/claude-code
Siga as instruções para configurar suas variáveis de ambiente para que você possa acessar o Claude Code simplesmente digitando “claude” no terminal.
Configurando o Claude Code
Depois de instalar o Claude Code, abra-o digitando “claude” no terminal e faça login. Se você tem um plano Claude Pro ou Max, escolha “Fazer login com sua conta de assinatura” para que o uso seja contabilizado no seu plano.
Se você preferir o modelo pré-pago, autentique-se com uma chave API; o faturamento será feito pelo Anthropic Console.
Por fim, defina suas preferências de tema e interface/CLI para que tudo se adapte ao seu fluxo de trabalho desde o primeiro dia.
Eu configurei meu Claude Code com a chave API. Você pode ver a configuração aqui:

Instalar o SDK do Claude Agent
Certifique-se de que o Python está instalado e, em seguida, abra o seu terminal. Para instalar o SDK do Claude Agent, execute:
pip install claude-agent-sdk
Observação: Se você encontrar um CLINotFoundError, certifique-se de ter instalado a CLI acima e que o Claude esteja incluído no seu PATH.
Criando projetos com o SDK do Claude Agent e o Claude Sonnet 4.5
Agora vamos criar três projetos simples usando o SDK do Claude Agent como estrutura, o código Claude para ferramentas e uso do computador e o Claude Sonnet 4.5 como nosso modelo de IA.
- Esboço do blog One-shot: Uma consulta simples e única que mostra como usar o SDK do Claude Agent sem precisar de ferramentas.
- InspireBot CLI: Esse projeto junta recursos de busca na web com uma ferramenta personalizada de citações motivacionais.
- Aplicativo NoteSmith Multi-Tool: Um aplicativo de notas completo com várias ferramentas, ganchos de segurança e acompanhamento de uso.
Todo o código-fonte está disponível no repositório GitHub: kingabzpro/claude-agent-projects
1. Esboço de blog único
Neste projeto, usamos a função query() do SDK com o Claude Sonnet 4.5 para criar um esboço de blog. Essa é uma consulta simples e única que mostra como usar o SDK básico do Claude Agent sem precisar de ferramentas.
O código é composto por:
- Streaming assíncrono: Usa
asynciocom o iterador assíncronoquery()do SDK para uma saída sem bloqueio, token por token. - Prompt e opções: Define um esboço do blog
PROMPTe configura o modelo/persona através deClaudeAgentOptions. - Fluxo de mensagens digitadas: Repete as mensagens; pega só o conteúdo
AssistantMessage → TextBlock. - Saída em tempo real: Imprime o texto conforme ele chega (
end="") para uma visualização limpa do console de streaming. - Tratamento dos resultados: Ignora o `
ResultMessage`, deixando o fluxo terminar naturalmente. - Ponto de entrada: Executa tudo com um
asyncio.run(main())e quando um script é executado. - Personalizável e minimalista: Fácil de trocar modelo/prompt; script leve, ideal para demonstrações ou pipelines.
oneshot_outline.py:
import asyncio
from claude_agent_sdk import (
query,
ClaudeAgentOptions,
AssistantMessage,
TextBlock,
ResultMessage,
)
PROMPT = """Create a crisp markdown outline (H2/H3 bullets) for a 500-word blog post:
Title: Why Sovereign AI Compute Matters in 2026
Audience: CTOs and Heads of AI
Tone: pragmatic, non-hype
Include: 3 buyer pains, 3 evaluation criteria, 1 closing CTA
"""
async def main():
options = ClaudeAgentOptions(
model="sonnet",
system_prompt="You are a precise technical copy strategist."
)
async for msg in query(prompt=PROMPT, options=options):
if isinstance(msg, AssistantMessage):
for block in msg.content:
if isinstance(block, TextBlock):
print(block.text, end="") # only the outline
elif isinstance(msg, ResultMessage):
pass # let the iterator end naturally
if __name__ == "__main__":
asyncio.run(main())
Vamos rodar o script e depois salvar o resultado como um arquivo markdown.
python oneshot_outline.py > outline.md
Você pode abrir o arquivo markdown e ver que ele gerou uma cópia técnica adequada.

Você pode voltar ao seu painel em https://console.anthropic.com/usage para conferir o seu uso. Como você pode ver, o modelo está usando o Claude Sonnet 4.5.

2. CLI do InspireBot
Neste projeto, criamos um gerador de motivação fácil de usar no terminal que transmite citações usando o Claude Sonnet 4.5. Primeiro, ele tenta uma pesquisa na Web e, em seguida, recorre a uma ferramenta personalizada inspire_me que retorna citações aleatórias.
O código é composto por:
- Ferramenta de fallback personalizada: Define
inspire_mecom citações motivacionais pré-definidas, registradas através decreate_sdk_mcp_server. - Ajudantes da CLI:
is_tty,typewrite,bold,faintadicionam animação de máquina de escrever e saída estilizada no terminal. - Prompt e opções: Configurado com
ClaudeAgentOptions, permitindo ferramentas (WebSearch+inspire_me) e uma persona do sistema “InspireBot”. - A ferramenta de streaming chama: Repete as mensagens, mostrando o uso da ferramenta (
ToolUseBlock), os resultados (ToolResultBlock) e a saída final (TextBlock). - Lógica de fallback: Se não aparecer nada que possa ser usado, ele vai mostrar uma citação local aleatória.
- UX interativo: Mostra as entradas/resultados da ferramenta de streaming e, em seguida, anima a frase inspiradora final com efeito de máquina de escrever.
inspire_web.py:
import sys
import json
import asyncio
import random
import time
from typing import Any
from claude_agent_sdk import (
query,
ClaudeAgentOptions,
tool,
create_sdk_mcp_server,
AssistantMessage,
TextBlock,
ToolUseBlock,
ToolResultBlock,
ResultMessage,
)
# -------------------------
# Custom fallback tool
# -------------------------
QUOTES = [
"Dream big, start small -- but start.",
"Stay curious, stay humble, keep building.",
"Every expert was once a beginner.",
"Small wins stack into big victories.",
"Consistency beats intensity when intensity is inconsistent.",
]
@tool("inspire_me", "Return a random motivational quote", {})
async def inspire_me(_: dict) -> dict:
return {"content": [{"type": "text", "text": random.choice(QUOTES)}]}
UTILS = create_sdk_mcp_server("inspire_util", "1.0.0", [inspire_me])
# -------------------------
# Tiny terminal helpers
# -------------------------
def is_tty() -> bool:
try:
return sys.stdout.isatty()
except Exception:
return False
def typewrite(text: str, delay: float = 0.02) -> None:
"""Print with a typewriter effect if TTY; otherwise plain print."""
if not is_tty():
print(text)
return
for ch in text:
print(ch, end="", flush=True)
time.sleep(delay)
print()
def faint(s: str) -> str:
"""Dim text if terminal supports ANSI."""
return s if not is_tty() else f"\033[2m{s}\033[0m"
def bold(s: str) -> str:
return s if not is_tty() else f"\033[1m{s}\033[0m"
# -------------------------
# Main
# -------------------------
async def main():
topic = "engineering focus" if len(sys.argv) < 2 else " ".join(sys.argv[1:])
options = ClaudeAgentOptions(
model="sonnet", # switch to "sonnet-4.5" if your CLI lists it
system_prompt=(
"You are InspireBot.\n"
"- First, try WebSearch to find a short, uplifting quote relevant to the user's topic.\n"
"- If WebSearch is unhelpful or no clear quote is found, call the custom 'inspire_me' tool.\n"
"- Output ONE short line only. No preface, no commentary, <= 120 characters."
),
allowed_tools=[
"WebSearch",
"mcp__inspire_util__inspire_me",
],
mcp_servers={"inspire_util": UTILS},
)
prompt = (
"Find a short, uplifting quote for today's inspiration. "
f"Topic: {topic}. Prefer something crisp and modern.\n"
"If search yields multiple options, pick the best single line."
)
final_line_parts: list[str] = []
if is_tty():
print(bold("🌐 InspireBot (WebSearch + fallback tool)"))
print(faint("Tip: pass a custom topic: python inspire_web_animated.py \"women in leadership\""))
print()
async for message in query(prompt=prompt, options=options):
# Stream assistant messages for tool usage + final text
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, ToolUseBlock):
tool_name = block.name
tool_input = block.input or {}
print(f"{bold('🛠️ Tool used:')} {tool_name}")
print(f"{faint(' input:')} {json.dumps(tool_input, ensure_ascii=False)}")
elif isinstance(block, ToolResultBlock):
# Show summarized tool result text if present
shown = False
if isinstance(block.content, list):
for part in block.content:
if isinstance(part, dict) and part.get("type") == "text":
text = (part.get("text") or "").strip()
if text:
preview = text if len(text) <= 200 else (text[:197] + "...")
print(f"{faint(' result:')} {preview}")
shown = True
break
if not shown:
print(f"{faint(' result:')} (no textual content)")
elif isinstance(block, TextBlock):
# This should be the final "inspiration" line content
final_line_parts.append(block.text)
elif isinstance(message, ResultMessage):
# allow the iterator to finish naturally (no break)
pass
final_line = " ".join(part.strip() for part in final_line_parts).strip()
if not final_line:
final_line = random.choice(QUOTES) # ultimate fallback, just in case
# Animate the final line (typewriter), or plain if not a TTY
typewrite(final_line, delay=0.02)
if __name__ == "__main__":
asyncio.run(main())
Vamos rodar o script com o tópico padrão usando o seguinte comando:
python inspire_web.py
Como dá pra ver, ele mostra as ferramentas usadas, o que foi colocado nessas ferramentas e, depois, mostra uma frase motivacional.

Vamos dar ao script Python um tópico personalizado:
python inspire_web.py "Sadness and Love"
Isso mostra uma frase motivacional que inclui as palavras-chave “amor” e “tristeza”.

3. Aplicativo multifuncional NoteSmith
Neste projeto, criamos um assistente de pesquisa multifuncional que salva e pesquisa notas localmente, resume páginas da web e transmite os resultados com o Claude Sonnet 4.5. Ele junta ferramentas MCP personalizadas, ferramentas integradas e um gancho de segurança para uma experiência CLI mais rica.
O código é composto por:
- Armazenamento local: Salva notas no disco com carimbos de data/hora; suporta pesquisa sem distinção entre maiúsculas e minúsculas usando lógica grep simples.
- Ferramentas MCP personalizadas:
save_note(armazenar texto) efind_note(notas de pesquisa), registradas comcreate_sdk_mcp_server. - Gancho de segurança:
block_dangerous_bashimpede comandos shell maliciosos (por exemplo,rm -rf /) antes de executar a ferramenta. - Prompt do sistema e comandos: Define
/summarize,/note,/find,/help,/exit; prompt orienta o uso da ferramenta (WebFetch,save_note,find_note). - Interação de streaming: Usa
ClaudeSDKClientpara lidar comAssistantMessage,ToolUseBlock,ToolResultBlock, imprimindo texto e resultados de ferramentas em tempo real. - Rastreamento de uso: Imprime um rodapé com o nome do modelo, tokens e custo em stderr, mantendo a saída principal limpa.
- Interface de chat: Funciona como um REPL leve, onde você digita comandos (
/note,/find,/summarize) e recebe respostas imediatas, dando a sensação de estar conversando com um assistente.
note_smith.py:
import sys
import json
import asyncio
from datetime import datetime
from pathlib import Path
from typing import Any
from claude_agent_sdk import (
ClaudeSDKClient,
ClaudeAgentOptions,
AssistantMessage,
TextBlock,
ToolUseBlock,
ToolResultBlock,
ResultMessage,
tool,
create_sdk_mcp_server,
HookMatcher,
HookContext,
)
# ----------------------------
# Storage (simple local notes)
# ----------------------------
NOTES_DIR = Path(__file__).parent / "notes"
NOTES_DIR.mkdir(exist_ok=True)
def _ts() -> str:
return datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
def save_note_to_disk(text: str) -> str:
path = NOTES_DIR / f"note_{_ts()}.txt"
path.write_text(text.strip() + "\n", encoding="utf-8")
return str(path)
def grep_notes(pattern: str) -> list[str]:
pat = pattern.lower()
out: list[str] = []
for p in NOTES_DIR.glob("*.txt"):
for i, line in enumerate(p.read_text(encoding="utf-8").splitlines(), start=1):
if pat in line.lower():
out.append(f"{p.name}:{i}: {line}")
return out
# ----------------------------
# Custom MCP tools
# ----------------------------
@tool("save_note", "Save a short note to local disk", {"text": str})
async def save_note(args: dict[str, Any]) -> dict[str, Any]:
path = save_note_to_disk(args["text"])
return {"content": [{"type": "text", "text": f"Saved note → {path}"}]}
@tool("find_note", "Find notes containing a pattern (case-insensitive)", {"pattern": str})
async def find_note(args: dict[str, Any]) -> dict[str, Any]:
hits = grep_notes(args["pattern"])
body = "\n".join(hits) if hits else "No matches."
return {"content": [{"type": "text", "text": body}]}
UTILS_SERVER = create_sdk_mcp_server(
name="notes_util",
version="1.0.0",
tools=[save_note, find_note],
)
# ----------------------------
# Optional safety hook (Bash)
# ----------------------------
async def block_dangerous_bash(
input_data: dict[str, Any],
tool_use_id: str | None,
context: HookContext
):
if input_data.get("tool_name") == "Bash":
cmd = str(input_data.get("tool_input", {}).get("command", "")).strip().lower()
if "rm -rf /" in cmd or "format c:" in cmd:
return {
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "Dangerous command blocked"
}
}
return {}
# ----------------------------
# Prompts & UI
# ----------------------------
SYSTEM_PROMPT = """You are NoteSmith, a concise research assistant.
- Prefer bullet answers with crisp takeaways.
- When the user asks to /summarize <url>, use WebFetch to retrieve and then summarize 5 key points + a 1-line TL;DR.
- When the user types /note <text>, call the custom save_note tool.
- When the user types /find <pattern>, call the custom find_note tool.
- Keep answers short unless asked to expand.
"""
HELP = """Commands:
/summarize <url> Summarize a webpage (WebFetch)
/note <text> Save a note locally
/find <pattern> Search saved notes
/help Show this help
/exit Quit
"""
# Use the broadest model label for compatibility; switch to "sonnet-4.5" if your CLI lists it.
MODEL = "sonnet"
# ----------------------------
# Main app
# ----------------------------
async def main():
options = ClaudeAgentOptions(
model=MODEL,
system_prompt=SYSTEM_PROMPT,
permission_mode="acceptEdits",
allowed_tools=[
# Built-ins (Claude may use these if relevant)
"WebFetch", "Read", "Write", "Grep", "Glob",
# Our MCP tools (SDK prefixes mcp__<alias>__<toolname>)
"mcp__utils__save_note",
"mcp__utils__find_note",
],
mcp_servers={"utils": UTILS_SERVER},
hooks={"PreToolUse": [HookMatcher(hooks=[block_dangerous_bash])]},
setting_sources=None, # no filesystem settings; everything is programmatic
)
print("💡 NoteSmith (Claude Sonnet)\n")
print(HELP)
async with ClaudeSDKClient(options=options) as client:
while True:
user = input("\nYou: ").strip()
if not user:
continue
if user.lower() in {"/exit", "exit", "quit"}:
print("Bye!")
break
if user.lower() in {"/help", "help"}:
print(HELP)
continue
# Lightweight command parsing (the system prompt also guides tool usage)
if user.startswith("/summarize "):
url = user.split(" ", 1)[1].strip()
prompt = f"Summarize this URL using WebFetch and return 5 bullets + TL;DR:\n{url}"
elif user.startswith("/note "):
text = user.split(" ", 1)[1]
prompt = f'Please call tool save_note with text="{text}"'
elif user.startswith("/find "):
patt = user.split(" ", 1)[1]
prompt = f'Please call tool find_note with pattern="{patt}"'
else:
prompt = user
await client.query(prompt)
# -------- Response streaming with footer to STDERR --------
model_used = None
usage = None
cost = None
async for message in client.receive_response():
if isinstance(message, AssistantMessage):
if model_used is None:
model_used = message.model # e.g., "sonnet" or "sonnet-4.5"
for block in message.content:
if isinstance(block, TextBlock):
print(block.text, end="", flush=True) # stdout
elif isinstance(block, ToolUseBlock):
print(f"\n🛠️ Using tool: {block.name} with input: {json.dumps(block.input)}")
elif isinstance(block, ToolResultBlock):
if isinstance(block.content, list):
for part in block.content:
if isinstance(part, dict) and part.get("type") == "text":
print(f"\n🔎 Tool says: {part.get('text')}")
elif isinstance(message, ResultMessage):
usage = message.usage or {}
cost = message.total_cost_usd
# Do not break early; let stream end naturally
# Footer (model + tokens + cost) → STDERR so normal output stays clean
def _token_summary(u: dict) -> str:
total = u.get("total_tokens")
if total is None:
it, ot = u.get("input_tokens"), u.get("output_tokens")
if it is not None or ot is not None:
total = (it or 0) + (ot or 0)
if total is None:
return "tokens=?"
if "input_tokens" in u or "output_tokens" in u:
return f"tokens={total} (in={u.get('input_tokens','?')}, out={u.get('output_tokens','?')})"
return f"tokens={total}"
footer = (
f"\n\n-- Turn done. model={(model_used or options.model)} "
f"{_token_summary(usage or {})} cost={cost if cost is not None else '?'} --"
)
print(footer, file=sys.stderr)
# Entry
if __name__ == "__main__":
asyncio.run(main())
Para rodar o aplicativo, digite o seguinte comando no terminal:
python note_smith.py
Isso vai abrir a interface de bate-papo da CLI com comandos úteis.

Primeiro, vamos resumir a página da web. Eu já mandei o link do meu site de portfólio:
/resumir trabalho abid.
Primeiro, o agente vai decidir quais ferramentas usar, pegar o conteúdo da página da web, extrair cinco pontos principais e mostrá-los na interface de chat. No final, vai aparecer um relatório de uso que inclui o nome do modelo, o uso de tokens e o custo.
I'll fetch and summarize the content from that URL for you.
🛠️ Using tool: WebFetch with input: {"url": "https://abid.work", "prompt": "Extract the main content and key information from this page, including what the person does, their background, projects, and any notable achievements or areas of focus."}
**5 Key Points:**
• **Prolific Tech Educator** - Authored 500+ articles making data science & ML accessible through tutorials, cheat sheets, and practical guides
• **Certified Data Scientist** - Professional focus on building innovative machine learning solutions across NLP, computer vision, and MLOps
• **Multi-Domain Expertise** - Covers Python, SQL, AI, and end-to-end ML workflows with hands-on project demonstrations
• **Content-First Philosophy** - Maintains extensive portfolio including blogs, tutorials, book reviews, and career resources
• **Open Contributor** - Active on GitHub (kingabzpro) sharing code and projects with the community
**TL;DR:** Abid Ali Awan is a certified data scientist who's authored 500+ educational articles and tutorials, specializing in ML, NLP, and making complex tech concepts accessible to learners.
-- Turn done. model=claude-sonnet-4-5-20250929 tokens=326 (in=6, out=320) cost=0.062402849999999996 --
Agora, vamos salvar uma nota:
/nota o que é o amor
Pedimos pra ele salvar a nota com o texto “o que é amor”.
🛠️ Using tool: mcp__utils__save_note with input: {"text": "what is love"}
✓ Note saved: "what is love"
-- Turn done. model=claude-sonnet-4-5-20250929 tokens=81 (in=6, out=75) cost=0.07421549999999999 --
Por fim, vamos encontrar a nota fornecendo uma palavra-chave da nota:
/encontrar o amor
Como você pode ver, ele encontrou o arquivo e mostrou o texto dele.
🛠️ Using tool: mcp__utils__find_note with input: {"pattern": "love"}
**Found 1 note matching "love":**
• `note_2025-09-30_17-18-02.txt` - "what is love"
-- Turn done. model=claude-sonnet-4-5-20250929 tokens=105 (in=6, out=99) cost=0.08423339999999999 --
Conclusão
O SDK do Claude Agent é fácil de configurar, principalmente se você já tiver o Claude Code instalado no seu computador. Tudo o que você precisa fazer é instalar o pacote SDK.
O SDK Python oferece duas maneiras principais de interagir com o Claude:
query()– uma API simples de geração de texto que é ideal para casos de uso leves, embora não ofereça suporte a ferramentas.ClaudeSDKClient– uma API com todos os recursos que te permite retomar sessões, usar ferramentas, manter o controle manual e muito mais.
Neste tutorial, a gente explorou o mais recente modelo da Anthropic, o Claude Sonnet 4.5, e apresentou o novo SDK do Claude Agent. A gente deu uma olhada no processo de instalação e criou três projetos de exemplo pra mostrar o que ele pode fazer.
Se você estiver interessado em experimentar fluxos de trabalho com agentes, recomendo muito que experimente este SDK.

Sou um cientista de dados certificado que gosta de criar aplicativos de aprendizado de máquina e escrever blogs sobre ciência de dados. No momento, estou me concentrando na criação e edição de conteúdo e no trabalho com modelos de linguagem de grande porte.



