Extração de resultados do Soneto de Claude 4: Código, recursos visuais e relatórios
Agora, vamos reutilizar e auditar o código e os resultados gerados pelo Claude.
Etapa 5: Baixe os resultados visuais das respostas do Claude
Para nossos relatórios de markdown, queremos incluir o código Python real que o Claude executou:
def extract_code_blocks(self, response) -> List[str]:
"""Extract all code blocks from the response."""
code_blocks = []
for item in response.content:
if item.type == "server_tool_use" and item.name == "code_execution":
if (
hasattr(item, "input")
and isinstance(item.input, dict)
and "code" in item.input
):
code_blocks.append(item.input["code"])
return code_blocks
Esse método procura os itens server_tool_use com o nome "code_execution" e extrai o código Python do campo input. Isso nos dá o código real que Claude escreveu e executou.
Etapa 6: Extraia o código do Claude para reutilização e auditoria
Nosso gerador de relatórios cria uma documentação abrangente de cada solução.
Primeiro, extraímos o conteúdo e configuramos a estrutura do relatório:
def generate_markdown_report(self, result: Dict[str, Any], downloaded_files: List[str]) -> str:
"""Generate a comprehensive markdown report of the solution."""
response = result["response"]
question = result["question"]
timestamp = result["timestamp"]
# Extract text content and code blocks
text_content = []
code_blocks = self.extract_code_blocks(response)
for item in response.content:
if item.type == "text":
text_content.append(item.text)
Em seguida, geramos um nome de arquivo seguro com um registro de data e hora:
# Generate filename with timestamp
safe_question = "".join(
c for c in question[:50] if c.isalnum() or c in (" ", "-", "_")
).strip()
filename = f"{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}_{safe_question.replace(' ', '_')}.md"
filepath = self.reports_dir / filename
Criamos o conteúdo do markdown com um cabeçalho e uma declaração de problema:
# Create markdown content
markdown_content = f"""# Math Problem Solution Report
**Generated:** {timestamp}
**Question:** {question}
---
## Problem Statement
{question}
---
## Solution
"""
Add the solution explanation and code blocks:
# Add the main explanation
for text in text_content:
markdown_content += f"{text}\n\n"
# Add code sections
if code_blocks:
markdown_content += "---\n\n## Code Used\n\n"
for i, code in enumerate(code_blocks, 1):
markdown_content += f"### Code Block {i}\n\n```python\n{code}\n```\n\n"
Inclua todas as visualizações geradas:
# Add images section
if downloaded_files:
markdown_content += "---\n\n## Generated Visualizations\n\n"
for file_path in downloaded_files:
filename = Path(file_path).name
relative_path = f"../images/{filename}"
markdown_content += f"\n\n"
Finally, add metadata and save the report:
# Add footer
markdown_content += f"""---
## Report Details
- **Generated by:** Claude 4 Math Solver
- **Model:** claude-sonnet-4-20250514
- **Timestamp:** {timestamp}
- **Files created:** {len(downloaded_files)} visualization(s)
---
*This report was automatically generated using Claude's code execution capabilities.*
"""
# Save the report
with open(filepath, "w", encoding="utf-8") as f:
f.write(markdown_content)
return str(filepath)
Esse gerador de relatórios cria um documento markdown estruturado contendo:
- Declaração do problema e metadados
- Explicação da solução a partir das respostas do texto de Claude
- Blocos de código que mostram o código Python real executado
- Visualizações incorporadas usando caminhos relativos
- Metadados de relatório para rastreamento e referência
A geração de nome de arquivo cria nomes de arquivo seguros, com registro de data e hora, que não entrarão em conflito com os arquivos existentes.
Executando o Math Solver de forma interativa
Em seguida, vamos nos concentrar no loop de interação com o usuário, nas ferramentas de demonstração e nos testes.
Etapa 7: Gerenciar a sessão interativa
O loop de sessão interativa lida com a entrada do usuário e coordena todos os nossos componentes.
Começamos com a configuração da sessão e a mensagem de boas-vindas:
def run_interactive_session(self):
"""Run the main interactive session loop."""
print("🧮 Interactive Math Problem Solver with Claude 4")
print("=" * 60)
print("Ask me any math question and I'll solve it step by step!")
print("I can handle algebra, calculus, statistics, geometry, and more.")
print("Type 'quit', 'exit', or 'q' to end the session.")
print("=" * 60)
session_count = 0
O loop principal lida com a entrada do usuário e as condições de saída:
while True:
try:
# Get user input
question = input(f"\n📝 Question #{session_count + 1}: ").strip()
if question.lower() in ["quit", "exit", "q"]:
print("\n👋 Thanks for using the Math Solver! Goodbye!")
break
if not question:
print("Please enter a question.")
continue
session_count += 1
Para cada pergunta válida, processamos o fluxo de trabalho completo:
# Solve the problem
result = self.solve_problem(question)
if not result:
continue
# Extract and download any files created
file_ids = self.extract_files_from_response(result["response"])
downloaded_files = []
if file_ids:
print(f"📥 Downloading {len(file_ids)} file(s)...")
downloaded_files = self.download_files(file_ids)
Concluímos com a geração de relatórios e feedback do usuário:
# Generate markdown report
print(f"📝 Generating report...")
report_path = self.generate_markdown_report(result, downloaded_files)
print(f"\n✅ Solution complete!")
print(f"📄 Report saved: {report_path}")
if downloaded_files:
print(f"🖼️ Visualizations: {len(downloaded_files)} file(s) saved")
except KeyboardInterrupt:
print("\n\n👋 Session interrupted. Goodbye!")
break
except Exception as e:
print(f"❌ An error occurred: {e}")
print("Please try again with a different question.")
Esse loop demonstra um fluxo de trabalho completo:
- Interação com o usuário: Solicitar perguntas e lidar com comandos de saída
- Resolução de problemas: Chame nosso método
solve_problem() - Processamento de arquivos: Extraia e faça o download de todos os arquivos gerados
- Geração de relatórios: Criar um relatório abrangente de remarcação para baixo
- Tratamento de erros: Lidar graciosamente com interrupções e erros
Etapa 8: Escreva o ponto de entrada do aplicativo
Por fim, precisamos de uma função main() para inicializar e iniciar nosso aplicativo:
def main():
"""Main entry point for the application."""
try:
solver = MathSolver()
solver.run_interactive_session()
except Exception as e:
print(f"❌ Failed to initialize Math Solver: {e}")
print("Make sure you have set the ANTHROPIC_API_KEY environment variable.")
return 1
return 0
if __name__ == "__main__":
exit(main())
Esse ponto de entrada simples lida com erros de inicialização (como chaves de API ausentes) e fornece mensagens de erro úteis.
Etapa 9: Adicionar um gerador de problemas de demonstração
Para ajudar os usuários a começar, vamos criar um script separado com exemplos de problemas. Criar demo_problems.py.
Primeiro, definimos nossas categorias de problemas:
# demo_problems.py
#!/usr/bin/env python3
"""
Demo problems for the Interactive Math Problem Solver
"""
# Sample problems organized by difficulty and topic
DEMO_PROBLEMS = {
"Beginner": [
"What is 15% of 240?",
"Solve for x: 3x + 7 = 22",
"Find the area of a circle with radius 5",
"Convert 45 degrees to radians",
"Calculate the hypotenuse of a right triangle with legs 3 and 4",
],
Adicione conjuntos de problemas intermediários e avançados:
"Intermediate": [
"Solve the quadratic equation: 2x^2 + 5x - 3 = 0",
"Graph y = x^2 - 4x + 3 and find its vertex",
"Calculate mean, median, and standard deviation of [12, 15, 18, 22, 25, 28]",
"Find where f(x) = x^3 - 3x^2 + 2 crosses the x-axis",
"Solve the system of equations: 2x + 3y = 7, x - y = 1",
],
"Advanced": [
"Find the derivative of sin(x) * e^x and plot both functions",
"Calculate the integral of x^2 from 0 to 5",
"Use Newton's method to find the root of x^3 - 2x - 5 = 0",
"Perform linear regression on data points and plot the results",
"Solve the differential equation dy/dx = x*y with initial condition y(0) = 1",
],
}
Crie funções auxiliares para seleção e exibição aleatórias:
def get_random_problem(category=None):
"""Get a random problem from a specific category or all categories."""
import random
if category and category in DEMO_PROBLEMS:
return random.choice(DEMO_PROBLEMS[category])
else:
# Pick from all problems
all_problems = []
for problems in DEMO_PROBLEMS.values():
all_problems.extend(problems)
return random.choice(all_problems)
Adicione uma função para exibir todos os problemas disponíveis:
def print_demo_problems():
"""Print all demo problems organized by category."""
print("🧮 Demo Problems for Interactive Math Solver")
print("=" * 60)
print("Here are example problems you can try, organized by difficulty:\n")
for category, problems in DEMO_PROBLEMS.items():
print(f"### {category}")
print("-" * (len(category) + 4))
for i, problem in enumerate(problems, 1):
print(f"{i:2d}. {problem}")
print()
print("💡 Tips:")
print(" • Copy and paste any question into the math solver")
print(" • All visualizations and reports will be saved automatically")
print("\n🚀 Start the solver with: python math_solver.py")
if __name__ == "__main__":
print_demo_problems()
Esse script de demonstração fornece:
- Problemas categorizados dos níveis iniciante ao avançado
- Seleção aleatória de problemas para teste
- Orientação de uso Para novos usuários
Etapa 10: Execute e teste o aplicativo
Agora vamos testar nosso aplicativo completo! Execute o solucionador matemático:
python math_solver.py
Experimente alguns exemplos de perguntas:
- Cálculo básico: "O que é 15% de 240?"
- Algebra: "Resolva para x: 3x + 7 = 22”
- Visualização: "Faça o gráfico de y = x² - 4x + 3 e encontre seu vértice"
- Matemática avançada: "Encontre a derivada de sin(x) * e^x e faça o gráfico de ambas as funções"
Cada pergunta será:
- Mostrar a saída de streaming em tempo real enquanto o Claude trabalha
- Gerar as visualizações necessárias
- Salvar um relatório abrangente de remarcação para baixo
- Faça o download dos arquivos de plotagem para o diretório de imagens
Você também pode executar o script de problemas de demonstração para ver todos os exemplos disponíveis:
python demo_problems.py
O que construímos com Claude Sonnet 4
Nosso solucionador de problemas matemáticos demonstra vários recursos avançados do Claude 4 e os novos recursos da API:
- Execução de código: O Claude pode escrever e executar código Python para resolver problemas matemáticos, iterar soluções e lidar com cálculos complexos.
- Geração e gerenciamento de arquivos: O aplicativo lida automaticamente com a criação, o download e a organização de arquivos usando a API Files.
- Interação de streaming: O feedback em tempo real faz com que a experiência pareça ágil e envolvente.
- Documentação abrangente: Cada solução é preservada em relatórios detalhados de markdown com código incorporado e visualizações.
- Interface amigável: A interface baseada em terminal é simples, mas eficaz para a solução de problemas matemáticos.
Este projeto mostra como os novos recursos do Claude 4 podem ser combinados para criar aplicativos sofisticados que vão além das simples interações de bate-papo. A ferramenta de execução de código, combinada com o manuseio e o fluxo de arquivos adequados, cria uma plataforma avançada para exploração e análise matemática.
Você também pode aprender a criar agentes semelhantes usando outras plataformas fazendo o curso Developing AI Systems with the OpenAI API.
Conclusão e etapas futuras
A criação desse solucionador de problemas matemáticos demonstrou como os novos recursos do Claude 4 transformam o que é possível com os aplicativos de IA.
Nosso aplicativo lida com tudo, desde cálculos básicos até visualizações matemáticas complexas, mostrando como esses recursos da API trabalham juntos para criar excelentes experiências de usuário. A ferramenta de execução de código destaca-se particularmente como um divisor de águas, permitindo que a Claude itere em soluções e gere resultados visuais que, no passado, exigiriam ferramentas separadas e integrações complexas.
A partir daí, você pode estender esse solucionador matemático com interfaces da Web, integrá-lo a fontes de dados externas por meio de MCPs ou aplicar padrões semelhantes para criar assistentes específicos de domínio para outros campos, como análise de dados, computação científica ou ferramentas educacionais.
- Se você for um desenvolvedor que deseja certificar suas habilidades de engenharia de IA, considereo programa Associate AI Engineer para desenvolvedores, que enfatiza implementações de nível de produção como essa.
- Os cientistas de dados interessados em operacionalizar os LLMs podem seguir o programa Associate AI Engineer para cientistas de dados, que faz a ponte entre a análise e a implementação de IA.
Perguntas frequentes
O que torna o Claude 4 diferente das versões anteriores?
O Claude 4 apresenta a execução de código nativo, raciocínio ampliado com o uso de ferramentas, execução de ferramentas paralelas, recursos de memória aprimorados e suporte para várias horas de execução contínua de tarefas. Esses recursos o tornam particularmente forte em tarefas de engenharia de software.
O Claude 4 pode realmente executar código Python durante as conversas?
Sim, o Claude 4 pode executar código Python em um ambiente de sandbox seguro usando a nova ferramenta de execução de código. Ele pode executar cálculos, gerar visualizações com matplotlib e iterar em soluções com base nos resultados da execução.
Quais são as limitações do ambiente de execução de código do Claude?
A sandbox não tem acesso à Internet, tem recursos computacionais limitados e não pode acessar seu sistema de arquivos local. Ele vem com bibliotecas populares como numpy, pandas e matplotlib pré-instaladas, mas você não pode instalar pacotes adicionais.
Como a nova API Files funciona com a execução de código?
A API Files permite que você carregue documentos uma vez e os consulte em todas as conversas. Quando o Claude cria arquivos durante a execução do código (como gráficos), você pode extrair os IDs dos arquivos e baixá-los localmente usando a API.
Preciso de acesso especial à API para usar os recursos de execução de código do Claude 4?
Você precisa incluir o cabeçalho beta "anthropic-beta": "code-execution-2025-05-22" em suas solicitações de API e usar o modelo claude-sonnet-4-20250514. A ferramenta de execução de código é especificada como "code_execution_20250522" em sua matriz tools.



Com o lançamento do Claude Sonnet 4, os desenvolvedores agora têm acesso a novos recursos avançados, incluindo execução de código nativo, uma API de arquivos flexível e uso dinâmico de ferramentas. Esses recursos abrem possibilidades interessantes para a criação de aplicativos com tecnologia de IA que vão além das simples interações de texto.
Neste tutorial, mostrarei a você esses novos recursos, criando um agente baseado em Python que pode resolver problemas matemáticos avançados diretamente do seu terminal. Você aprenderá a usar a recém-introduzida ferramenta de execução de código nativo e a API de arquivos.
No final, você terá um agente em funcionamento com a tecnologia do Claude Sonnet 4 para analisar problemas, escrever e executar código Python e renderizar imagens como as apresentadas abaixo.
Confira o repositório do GitHub para este projeto e vejatodo o código para criar o aplicativo.
Se você está apenas começando sua jornada de desenvolvimento com LLMs como o Claude, este roteiro para desenvolvedores de IA descreveas ferramentas, as habilidades e as trilhas de aprendizagem essenciais para começar.
O que há de novo na API antrópica
Antes de entrarmos no tutorial, vamos dar uma olhada em todos os novos recursos lançados recentemente e disponíveis na API do Anthropic. Sinta-se à vontade para pular a página se você já estiver ciente delas.
Acho que todo o anúncio do Claude 4 pode serresumido nesta única imagem:
Os modelos Claude 4 (Opus e Sonnet 4) venceram a concorrência em tarefas de engenharia de software verificadas por uma margem significativa. O Anthropic conseguiu essa façanha introduzindo algumas mudanças importantes na forma como os modelos se comportam:
Além disso, como parte do anúncio da família de modelos Claude 4, a Anthropic adicionou quatro novos recursos para a criação de agentes de IA no site: a ferramenta de execução de código, a API Files, o conector MCP e o cache de prompt estendido. Essas ferramentas mudam a forma como os desenvolvedores podem criar aplicativos de IA.
Ferramenta de execução de código: Execute o código Python com segurança
A ferramenta de execução de código permite que o Claude execute o código Python em um ambiente seguro de sandbox. Em vez de apenas escrever sugestões de código, o Claude agora pode executar o código, analisar os resultados e iterar nas soluções.
Para usar a ferramenta de execução de código, adicione-a à sua matriz
toolse inclua o cabeçalho beta necessário:Quando o Claude executa o código, a resposta contém o código gerado e os resultados da execução. Veja como você pode analisar os diferentes componentes:
Limitações do sandbox: O ambiente de execução de código tem várias restrições de segurança incorporadas. O Claude é executado em um contêiner isolado, sem acesso à Internet, com recursos computacionais limitados (1 GB de RAM, 5 GB de espaço em disco e 1 CPU) e não pode acessar o sistema de arquivos local. O ambiente vem pré-instalado com bibliotecas populares como
numpy,pandas,matplotlibescipy, mas você não pode instalar pacotes adicionais durante a execução.Arquivos API: Contexto de arquivo persistente para tarefas complexas
A API Files permite que você carregue documentos uma vez e faça referência a eles em várias conversas. Isso elimina a necessidade de incluir documentos grandes em cada solicitação de API.
Primeiro, carregue seu arquivo nos servidores do Anthropic:
Após o upload, faça referência ao arquivo em suas chamadas de API usando o tipo de conteúdo
container_upload:Quando o Claude cria arquivos durante a execução do código (como gráficos ou dados processados), você pode extraí-los e baixá-los:
Conector MCP: Conecte o Claude a qualquer fluxo de trabalho
O conector MCP oferece suporte ao protocolo de contexto de modelo diretamente para a API. Os MCPs permitem que o Claude se conecte a serviços externos, como bancos de dados, APIs e ferramentas de produtividade, sem código de integração personalizado.
Anteriormente, a conexão com os servidores MCP exigia a criação de uma infraestrutura de cliente. Agora, você pode simplesmente fornecer um URL de servidor MCP remoto na sua solicitação de API, e o Claude descobre automaticamente as ferramentas disponíveis, gerencia as conexões e lida com a autenticação.
Isso abre o acesso a um ecossistema crescente de servidores MCP de empresas como Zapier e Asana, permitindo que você crie agentes que possam ler seu calendário, atualizar ferramentas de gerenciamento de projetos ou integrar-se a centenas de outros serviços.
Primeiros passos com Claude Sonnet 4: Visão geral e configuração do projeto
Agora que entendemos os novos recursos da API, vamos criar nosso solucionador de problemas matemáticos interativo. Ele combinará os recursos de execução de código do Claude com o manuseio de arquivos para criar um assistente matemático completo.
Nosso aplicativo aceitará perguntas matemáticas em linguagem natural, executará código Python para resolvê-las, gerará visualizações e salvará relatórios abrangentes.
Para obter uma abordagem estruturada para criar projetos como esse, confira o programa Developing AI Applications (Desenvolvendo aplicativos de IA).
> Observação: Como dividiremos blocos de código longos com explicações, a indentação do código pode não ser totalmente precisa nos trechos. Por esse motivo, recomendamos que você abra o repositório do GitHub para esse projeto em uma guia separada enquanto o acompanha.
Etapa 0: Configure o ambiente do projeto Claude Sonnet 4
Antes de escrever qualquer código, vamos configurar nosso ambiente de desenvolvimento e dependências.
Crie um novo diretório para o seu projeto e configure os arquivos necessários:
Crie um arquivo
requirements.txtcom as dependências necessárias:Instale as dependências:
Defina sua chave de API do Anthropic como uma variável de ambiente:
Etapa 1: Projetar a estrutura do aplicativo
Vamos começar criando a estrutura básica da nossa classe
MathSolver. Essa classe tratará de toda a funcionalidade principal: Comunicação de API, gerenciamento de arquivos e interação com o usuário.Primeiro, vamos configurar as importações e a estrutura básica:
Agora vamos definir nossa estrutura de classe principal:
Por fim, adicionamos o gerenciamento de sessão e o ponto de entrada:
Essa estrutura nos dá um roteiro claro: inicialização, solução de problemas, manipulação de arquivos, geração de relatórios e interação com o usuário. Cada método tem uma responsabilidade específica em nosso pipeline de resolução de problemas matemáticos.
Criando um solucionador matemático com a execução de código do Claude Sonnet 4
Agora, vamos implementar a funcionalidade principal usando a ferramenta de execução de código do Claude e respostas de streaming.
Etapa 2: Inicializar o Claude com cabeçalhos de API seguros
Vamos implementar o método
__init__()para lidar com a configuração do cliente da API e a criação do diretório.Primeiro, lidamos com o gerenciamento de chaves de API:
Em seguida, configuramos o cliente Anthropic com os cabeçalhos beta necessários:
Por fim, criamos a estrutura do diretório de saída:
Essa inicialização faz três coisas importantes:
Etapa 3: Escreva a função principal do solucionador
O método
solve_problem()é o coração do nosso aplicativo. Ele envia solicitações ao Claude com suporte a streaming.Vamos começar com a assinatura da função e a configuração inicial:
Lidamos com diferentes tipos de eventos de streaming:
Por fim, retornamos o resultado ou tratamos os erros:
Essa função demonstra vários conceitos importantes:
client.messages.stream()em vez doclient.messages.create()para obter feedback em tempo real à medida que Claude resolve o problema.content_block_start: Quando Claude começa a escrever um texto ou a usar uma ferramentacontent_block_delta: Como o conteúdo está sendo geradocontent_block_stop: Quando um bloco de conteúdo é concluídomessage_delta: Quando a mensagem inteira estiver concluídatoolscom o tipo exato"code_execution_20250522".Etapa 4: Resolva problemas matemáticos com a execução de código em fluxo contínuo
Quando o Claude cria arquivos durante a execução do código (como os gráficos do matplotlib), precisamos extrair os IDs dos arquivos e baixá-los localmente.
O método de extração de arquivos navega pela estrutura de resposta:
Em seguida, procuramos IDs de arquivos no conteúdo:
O processo de download recupera os arquivos e os salva localmente:
Nós programamos os arquivos baixados e tratamos os erros:
extract_files_from_response()navega pela estrutura de resposta para localizar IDs de arquivos. Os resultados da execução do código são aninhados em um formato específico em que os arquivos aparecem na matrizcontent.download_files():