Cette page couvre les mécanismes partagés des outils exécutés par le serveur : le bloc server_tool_use, la continuation pause_turn, les considérations ZDR et le filtrage de domaine. Pour les outils individuels, consultez la référence des outils.
Le bloc server_tool_use apparaît dans la réponse de Claude lorsqu'un outil exécuté par le serveur s'exécute. Son champ id utilise le préfixe srvtoolu_ pour le distinguer des appels d'outils clients :
{
"type": "server_tool_use",
"id": "srvtoolu_01A2B3C4D5E6F7G8H9",
"name": "web_search",
"input": { "query": "latest quantum computing breakthroughs" }
}L'API exécute l'outil en interne. Vous voyez l'appel et son résultat dans la réponse, mais vous ne gérez pas l'exécution. Contrairement aux blocs tool_use clients, vous n'avez pas besoin de répondre avec un tool_result. Le bloc de résultat apparaît immédiatement après le bloc server_tool_use dans le même tour d'assistant.
Lors de l'utilisation d'outils serveur comme la recherche web, l'API peut retourner une raison d'arrêt pause_turn, indiquant que l'API a mis en pause un tour de longue durée.
Voici comment gérer la raison d'arrêt pause_turn :
# Initial request with web search
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for comprehensive information about quantum computing breakthroughs in 2025",
}
],
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 10}],
)
# Check if the response has pause_turn stop reason
if response.stop_reason == "pause_turn":
# Continue the conversation with the paused content
messages = [
{
"role": "user",
"content": "Search for comprehensive information about quantum computing breakthroughs in 2025",
},
{"role": "assistant", "content": response.content},
]
# Send the continuation request
continuation = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=messages,
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 10}],
)
print(continuation)
else:
print(response)Lors de la gestion de pause_turn :
Les versions de base de la recherche web (web_search_20250305) et de la récupération web (web_fetch_20250910) sont éligibles pour la rétention zéro données (ZDR).
Les versions _20260209 avec filtrage dynamique ne sont pas éligibles à ZDR par défaut car le filtrage dynamique repose sur l'exécution de code en interne.
Pour utiliser un outil serveur _20260209 avec ZDR, désactivez le filtrage dynamique en définissant "allowed_callers": ["direct"] sur l'outil :
{
"type": "web_search_20260209",
"name": "web_search",
"allowed_callers": ["direct"]
}Cela restreint l'outil à l'invocation directe uniquement, en contournant l'étape d'exécution de code interne.
Bien que l'outil de récupération web lui-même soit éligible à ZDR, les éditeurs de sites web peuvent conserver tous les paramètres transmis à l'URL si Claude récupère du contenu de leur site.
Les outils serveur qui accèdent au web acceptent les paramètres allowed_domains et blocked_domains pour contrôler les domaines que Claude peut atteindre.
Lors de l'utilisation de filtres de domaine :
example.com au lieu de https://example.com)example.com couvre docs.example.com)docs.example.com retourne uniquement les résultats de ce sous-domaine, pas de example.com ou api.example.com)example.com/blog correspond à example.com/blog/post-1)allowed_domains soit blocked_domains, mais pas les deux dans la même demandeSupport des caractères génériques :
*) est autorisé par entrée de domaine, et il doit apparaître après la partie domaine (dans le chemin)example.com/*, example.com/*/articles*.example.com, ex*.com, example.com/*/news/*Les formats de domaine invalides retournent une erreur d'outil invalid_tool_input.
Les restrictions de domaine au niveau de la demande doivent être compatibles avec les restrictions de domaine au niveau de l'organisation configurées dans la Console. Les domaines au niveau de la demande ne peuvent que restreindre davantage les domaines, pas les remplacer ou les étendre au-delà de la liste au niveau de l'organisation. Si votre demande inclut des domaines qui entrent en conflit avec les paramètres de l'organisation, l'API retourne une erreur de validation.
Soyez conscient que les caractères Unicode dans les noms de domaine peuvent créer des vulnérabilités de sécurité par le biais d'attaques par homographes, où des caractères visuellement similaires provenant de scripts différents peuvent contourner les filtres de domaine. Par exemple, аmazon.com (utilisant le 'а' cyrillique) peut sembler identique à amazon.com mais représente un domaine différent.
Lors de la configuration des listes d'autorisation/blocage de domaines :
Les versions _20260209 de la recherche web et de la récupération web utilisent l'exécution de code en interne pour appliquer des filtres dynamiques aux résultats de recherche.
L'inclusion d'un outil code_execution autonome aux côtés des versions _20260209 des outils web crée deux environnements d'exécution, ce qui peut confondre le modèle. Utilisez l'un ou l'autre, ou épinglez les deux à la même version.
Les événements des outils serveur sont diffusés en continu dans le flux SSE normal. Le bloc server_tool_use et son résultat arrivent sous forme d'événements content_block_start et content_block_delta, de la même manière que le texte et les appels d'outils clients sont diffusés en continu.
Consultez Streaming pour la référence complète des événements. Les pages d'outils individuels documentent les noms d'événements spécifiques aux outils où ils diffèrent.
Tous les outils serveur prennent en charge le traitement par lot. Consultez Traitement par lot.
Recherchez le web et citez les résultats.
Récupérez le contenu d'URL spécifiques.
Exécutez Python dans un conteneur en bac à sable.
Découvrez et chargez les outils à la demande.
Was this page helpful?