Extraction de résultats à partir du sonnet de Claude 4 : Code, visuels et rapports
Maintenant, réutilisons et vérifions le code et les résultats générés par Claude.
Étape 5 : Téléchargez les résultats visuels des réponses de Claude
Pour nos rapports markdown, nous voulons inclure le code Python réel que Claude a exécuté :
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
Cette méthode recherche les éléments server_tool_use portant le nom "code_execution" et extrait le code Python du champ input. Cela nous donne le code que Claude a écrit et exécuté.
Étape 6 : Extraire le code de Claude pour le réutiliser et l'auditer
Notre générateur de rapports crée une documentation complète de chaque solution.
Tout d'abord, nous extrayons le contenu et mettons en place la structure du rapport :
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)
Ensuite, nous générons un nom de fichier sûr avec un horodatage :
# 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
Nous construisons le contenu en markdown avec un en-tête et un énoncé de problème :
# 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"
Incluez toutes les visualisations générées :
# 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)
Ce générateur de rapport crée un document markdown structuré contenant :
- Énoncé du problème et métadonnées
- Explication de la solution à partir des réponses au texte de Claude
- Blocs de code montrant le code Python réellement exécuté
- Visualisations intégrées utilisant des chemins relatifs
- Métadonnées du rapport pour le cursus et la référence
La génération de noms de fichiers crée des noms de fichiers sûrs et horodatés qui n'entreront pas en conflit avec des fichiers existants.
Exécution interactive du solveur mathématique
Ensuite, nous nous concentrerons sur la boucle d'interaction avec l'utilisateur, les outils de démonstration et les tests.
Étape 7 : Gérer la session interactive
La boucle de session interactive gère les entrées de l'utilisateur et coordonne tous nos composants.
Nous commençons par l'organisation de la session et le message de bienvenue :
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
La boucle principale gère les entrées de l'utilisateur et les conditions de sortie :
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
Pour chaque question valide, nous traitons l'ensemble du flux de travail :
# 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)
Nous terminons par la génération de rapports et le retour d'information des utilisateurs :
# 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.")
Cette boucle illustre un flux de travail complet :
- Interaction avec l'utilisateur : Poser des questions et gérer les commandes de sortie
- Résolution de problèmes : Appelez notre méthode
solve_problem() - Traitement des fichiers: Extraire et télécharger tous les fichiers générés
- Génération de rapports: Créer un rapport complet sur le markdown
- Gestion des erreurs: Gérer avec élégance les interruptions et les erreurs
Étape 8 : Écrire le point d'entrée de l'application
Enfin, nous avons besoin d'une fonction main() pour initialiser et démarrer notre application :
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())
Ce point d'entrée simple gère les erreurs d'initialisation (comme les clés API manquantes) et fournit des messages d'erreur utiles.
Étape 9 : Ajouter un générateur de problèmes de démonstration
Pour aider les utilisateurs à démarrer, nous allons créer un script séparé avec des exemples de problèmes. Créez demo_problems.py.
Tout d'abord, nous définissons nos catégories de problèmes :
# 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",
],
Ajoutez des ensembles de problèmes intermédiaires et avancés :
"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",
],
}
Créez des fonctions d'aide pour la sélection et l'affichage aléatoires :
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)
Ajoutez une fonction permettant d'afficher tous les problèmes disponibles :
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()
Ce script de démonstration fournit :
- Problèmes classés par catégories du niveau débutant au niveau avancé
- Sélection aléatoire d'un problème pour les tests
- Conseils d'utilisation pour les nouveaux utilisateurs
Étape 10 : Exécuter et tester l'application
Testons maintenant notre application complète ! Exécutez le solveur mathématique :
python math_solver.py
Essayez quelques exemples de questions :
- Calcul de base: "Qu'est-ce que 15% de 240 ?
- Algèbre: "Solve for x : 3x + 7 = 22”
- Visualisation: "Graphique y = x² - 4x + 3 et son sommet".
- Mathématiques avancées: "Trouvez la dérivée de sin(x) * e^x et tracez le graphique des deux fonctions".
Chaque question sera :
- Affichez le flux de données en temps réel au fur et à mesure que Claude travaille
- Générer toutes les visualisations nécessaires
- Sauvegarder un rapport markdown complet
- Téléchargez les fichiers graphiques dans votre répertoire d'images
Vous pouvez également exécuter le script de problèmes de démonstration pour voir tous les exemples disponibles :
python demo_problems.py
Ce que nous avons construit avec Claude Sonnet 4
Notre outil de résolution de problèmes mathématiques démontre plusieurs fonctionnalités puissantes de Claude 4 et les nouvelles capacités de l'API :
- Exécution du code: Claude peut écrire et exécuter du code Python pour résoudre des problèmes mathématiques, itérer sur les solutions et traiter des calculs complexes.
- Génération et gestion de fichiers: L'application gère automatiquement la création, le téléchargement et l'organisation des fichiers à l'aide de l'API Fichiers.
- Interaction en continu: Le retour d'information en temps réel rend l'expérience réactive et engageante.
- Documentation complète: Chaque solution est conservée dans des rapports markdown détaillés avec du code intégré et des visualisations.
- Interface conviviale: L'interface basée sur le terminal est simple mais efficace pour la résolution de problèmes mathématiques.
Ce projet montre comment les nouvelles capacités de Claude 4 peuvent être combinées pour créer des applications sophistiquées allant au-delà des simples interactions par chat. L'outil d'exécution de code, associé à une gestion appropriée des fichiers et à la diffusion en continu, crée une plate-forme puissante pour l'exploration et l'analyse mathématiques.
Vous pouvez également apprendre à construire des agents similaires en utilisant d'autres plateformes en suivant le cours sur le développement de systèmes d'IA avec l'API OpenAI.
Conclusion et étapes ultérieures
La construction de cet outil de résolution de problèmes mathématiques a démontré comment les nouvelles capacités de Claude 4 transforment ce qui est possible avec les applications de l'IA.
Notre application gère tout, des calculs de base aux visualisations mathématiques complexes, montrant comment les fonctionnalités de l'API fonctionnent ensemble pour créer de bonnes expériences pour les utilisateurs. L'outil d'exécution de code change particulièrement la donne, permettant à Claude d'itérer sur des solutions et de générer des résultats visuels qui auraient nécessité des outils distincts et des intégrations complexes dans le passé.
À partir de là, vous pouvez étendre ce solveur mathématique avec des interfaces web, l'intégrer à des sources de données externes par le biais de MCP, ou appliquer des modèles similaires pour construire des assistants spécifiques à d'autres domaines, tels que l'analyse de données, le calcul scientifique ou les outils éducatifs.
- Si vous êtes un développeur cherchant à certifier vos compétences en ingénierie de l'IA, envisagezle cursus Associate AI Engineer pour les développeurs, qui met l'accent sur les implémentations de niveau de production comme celle-ci.
- Les data scientists intéressés par l'opérationnalisation des LLM peuvent suivre le cursus Associate AI Engineer pour les data scientists, qui fait le lien entre l'analyse et le déploiement de l'IA.
FAQ
Qu'est-ce qui différencie Claude 4 des versions précédentes ?
Claude 4 introduit l'exécution du code natif, une réflexion approfondie sur l'utilisation des outils, l'exécution parallèle des outils, des capacités de mémoire améliorées et la prise en charge de plusieurs heures d'exécution de tâches en continu. Ces caractéristiques le rendent particulièrement performant pour les tâches d'ingénierie logicielle.
Claude 4 peut-il réellement exécuter du code Python pendant les conversations ?
Oui, Claude 4 peut exécuter du code Python dans un environnement sandbox sécurisé à l'aide du nouvel outil d'exécution de code. Il peut effectuer des calculs, générer des visualisations avec matplotlib et itérer sur des solutions basées sur les résultats de l'exécution.
Quelles sont les limites de l'environnement d'exécution du code de Claude ?
Le bac à sable n'a pas d'accès à l'internet, ses ressources informatiques sont limitées et il ne peut pas accéder à votre système de fichiers local. Il est livré avec des bibliothèques populaires telles que numpy, pandas et matplotlib préinstallées, mais vous ne pouvez pas installer de paquets supplémentaires.
Comment la nouvelle API Fichiers fonctionne-t-elle avec l'exécution de code ?
L'API Fichiers vous permet de télécharger des documents une seule fois et d'y faire référence dans les conversations. Lorsque Claude crée des fichiers pendant l'exécution du code (comme les graphiques), vous pouvez extraire leurs identifiants et les télécharger localement à l'aide de l'API.
Ai-je besoin d'un accès spécial à l'API pour utiliser les fonctions d'exécution de code de Claude 4 ?
Vous devez inclure l'en-tête beta "anthropic-beta": "code-execution-2025-05-22" dans vos demandes d'API et utiliser le modèle claude-sonnet-4-20250514. L'outil d'exécution de code est spécifié comme "code_execution_20250522" dans votre tableau tools.


Avec la sortie de Claude Sonnet 4, les développeurs ont maintenant accès à de nouvelles capacités puissantes - y compris l'exécution de code natif, une API de fichiers flexible, et l'utilisation d'outils dynamiques. Ces fonctionnalités ouvrent des perspectives passionnantes pour la création d'applications alimentées par l'IA qui vont au-delà des simples interactions textuelles.
Dans ce tutoriel, je vous guiderai à travers ces nouvelles fonctionnalités en construisant un agent basé sur Python qui peut résoudre des problèmes mathématiques avancés directement depuis votre terminal. Vous apprendrez à utiliser l'outil d'exécution de code natif nouvellement introduit et l'API des fichiers sur.
À la fin, vous aurez un agent fonctionnel alimenté par Claude Sonnet 4 pour analyser les problèmes, écrire et exécuter du code Python, et rendre des visuels comme ceux ci-dessous.
Consultez le dépôt GitHub de ce projet pour voirtout le code de construction de l'application.
Si vous commencez tout juste à construire avec des LLM comme Claude, cette feuille de route pour les développeurs d'IA présente lesoutils, les compétences et les parcours d'apprentissage essentiels pour démarrer.
Nouveautés de l'API Anthropique
Avant de commencer le tutoriel, examinons les nouvelles fonctionnalités récemment mises à disposition par l'intermédiaire de l'API Anthropic. N'hésitez pas à passer à l'étape suivante si vous les connaissez déjà.
Je pense que toute l' annonce de Claude 4 peut êtrerésumée dans cette image :
Les modèles Claude 4 (Opus et Sonnet 4) ont battu la concurrence dans les tâches de génie logiciel vérifiées avec une marge significative. Anthropic a réussi cet exploit en introduisant quelques changements importants dans le comportement des modèles :
De plus, dans le cadre de l'annonce de la famille de modèles Claude 4, Anthropic a ajouté quatre nouvelles fonctionnalités pour afin de construire des agents d'intelligence artificielle : l'outil d'exécution de code, l'API Fichiers, le connecteur MCP et la mise en cache étendue de l'invite. Ces outils modifient la façon dont les développeurs peuvent créer des applications d'IA.
Outil d'exécution de code : Exécuter du code Python en toute sécurité
L' outil d'exécution de code permet à Claude d'exécuter du code Python dans un environnement sandbox sécurisé. Au lieu de se contenter d'écrire des suggestions de code, Claude peut maintenant exécuter le code, analyser les résultats et itérer sur les solutions.
Pour utiliser l'outil d'exécution de code, ajoutez-le à votre tableau
toolset incluez l'en-tête beta requis :Lorsque Claude exécute un code, la réponse contient à la fois le code généré et les résultats de son exécution. Voici comment analyser les différents composants :
Limites du bac à sable : L'environnement d'exécution du code comporte plusieurs restrictions de sécurité intégrées. Claude s'exécute dans un conteneur isolé, sans accès à Internet, avec des ressources informatiques limitées (1 Go de RAM, 5 Go d'espace disque et 1 CPU), et ne peut pas accéder à votre système de fichiers local. L'environnement est préinstallé avec des bibliothèques populaires telles que
numpy,pandas,matplotlib, etscipy, mais vous ne pouvez pas installer d'autres paquets pendant l'exécution.Fichiers API : Contexte de fichier persistant pour les tâches complexes
L' API Fichiers permet à de télécharger des documents une seule fois et d'y faire référence dans plusieurs conversations. Il n'est donc plus nécessaire d'inclure des documents volumineux dans chaque demande d'API.
Tout d'abord, téléchargez votre fichier sur les serveurs d'Anthropic :
Une fois téléchargé, référencez le fichier dans vos appels API à l'aide du type de contenu
container_upload:Lorsque Claude crée des fichiers pendant l'exécution du code (comme des graphiques ou des données traitées), vous pouvez les extraire et les télécharger :
Connecteur MCP : Branchez Claude sur n'importe quel flux de travail
Le connecteur MCP apporte la prise en charge du protocole de contexte de modèle directement à l'API. Les MCP permettent à Claude de se connecter à des services externes tels que des bases de données, des API et des outils de productivité sans code d'intégration personnalisé.
Auparavant, la connexion aux serveurs MCP nécessitait la mise en place d'une infrastructure client. Désormais, il vous suffit de fournir l'URL d'un serveur MCP distant dans votre demande d'API, et Claude découvre automatiquement les outils disponibles, gère les connexions et l'authentification.
Cela ouvre l'accès à un écosystème croissant de serveurs MCP de sociétés telles que Zapier et Asana, vous permettant de créer des agents qui peuvent lire votre calendrier, mettre à jour des outils de gestion de projet ou s'intégrer à des centaines d'autres services.
S'initier à Claude Sonnet 4 : Vue d'ensemble du projet et configuration
Maintenant que nous comprenons les nouvelles fonctionnalités de l'API, construisons notre solution interactive de problèmes mathématiques. Il combinera les capacités d'exécution de code de Claude avec la manipulation de fichiers pour créer un assistant mathématique complet.
Notre application acceptera des questions mathématiques en langage naturel, exécutera du code Python pour les résoudre, générera des visualisations et enregistrera des rapports complets.
Pour une approche structurée de la construction de projets de ce type, consultez le cursus Développer des applications d'IA.
> Note : Étant donné que nous séparons les longs blocs de code par des explications, l'indentation du code peut ne pas être tout à fait exacte dans les extraits. Pour cette raison, nous vous recommandons d'ouvrir le dépôt GitHub de ce projet dans un onglet séparé pendant que vous suivez les instructions.
Étape 0 : Créez l'environnement de votre projet Claude Sonnet 4
Avant d'écrire le moindre code, configurons notre environnement de développement et nos dépendances.
Créez un nouveau répertoire pour votre projet et installez les fichiers nécessaires :
Créez un fichier
requirements.txtavec les dépendances nécessaires :Installez les dépendances :
Définissez votre clé API Anthropic comme variable d'environnement :
Étape 1 : Concevoir la structure de l'application
Commençons par créer la structure de base de notre classe
MathSolver. Cette classe prend en charge toutes les fonctionnalités principales : Communication API, gestion de fichiers et interaction avec l'utilisateur.Commençons par définir les importations et la structure de base :
Définissons maintenant la structure de notre classe principale :
Enfin, nous ajoutons la gestion de la session et le point d'entrée :
Cette structure nous donne une feuille de route claire : initialisation, résolution de problèmes, traitement de fichiers, génération de rapports et interaction avec l'utilisateur. Chaque méthode a une responsabilité spécifique dans notre processus de résolution des problèmes mathématiques.
Construire un solveur mathématique avec l'exécution du code de Claude Sonnet 4
Mettons maintenant en œuvre la fonctionnalité de base en utilisant l'outil d'exécution de code de Claude et les réponses en continu.
Étape 2 : Initialiser Claude avec des en-têtes API sécurisés
Mettons en œuvre la méthode
__init__()pour gérer la configuration du client API et la création du répertoire.Tout d'abord, nous nous occupons de la gestion des clés d'API :
Ensuite, nous configurons le client Anthropic avec les en-têtes beta nécessaires :
Enfin, nous créons la structure du répertoire de sortie :
Cette initialisation a trois fonctions importantes :
Étape 3 : Écrire la fonction de base du solveur
La méthode
solve_problem()est le cœur de notre application. Il envoie des demandes à Claude qui prend en charge la diffusion en continu.Commençons par la signature de la fonction et la configuration initiale :
Nous traitons différents types d'événements en continu :
Enfin, nous renvoyons le résultat ou traitons les erreurs :
Cette fonction illustre plusieurs concepts importants :
client.messages.stream()au lieu declient.messages.create()pour obtenir un retour d'information en temps réel pendant que Claude travaille sur le problème.content_block_start: Lorsque Claude commence à écrire un texte ou à utiliser un outilcontent_block_delta: Au fur et à mesure que le contenu est générécontent_block_stop: Lorsqu'un bloc de contenu est terminémessage_delta: Lorsque le message est complettoolsavec le type exact"code_execution_20250522".Étape 4 : Résoudre des problèmes mathématiques grâce à l'exécution de code en continu
Lorsque Claude crée des fichiers pendant l'exécution du code (comme les graphiques de matplotlib), nous devons extraire leurs identifiants de fichier et les télécharger localement.
La méthode d'extraction de fichiers permet de naviguer dans la structure de réponse :
Nous recherchons ensuite les identifiants de fichiers dans le contenu :
Le processus de téléchargement récupère les fichiers et les enregistre localement :
Nous assurons le cursus des fichiers téléchargés et gérons les erreurs :
extract_files_from_response()parcourt la structure de la réponse pour trouver les identifiants des fichiers. Les résultats de l'exécution du code sont imbriqués dans un format spécifique où les fichiers apparaissent dans le tableaucontent.download_files():