Uso degli strumenti con Claude
Claude è in grado di interagire con strumenti e funzioni, permettendoti di estendere le capacità di Claude per eseguire una varietà più ampia di compiti.
Ecco un esempio di come fornire strumenti a Claude utilizzando l'API Messages:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "What is the weather like in San Francisco?"
}
]
}'import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
}
},
"required": ["location"],
},
}
],
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)
print(response)import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY
});
async function main() {
const response = await anthropic.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 1024,
tools: [{
name: "get_weather",
description: "Get the current weather in a given location",
input_schema: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA"
}
},
required: ["location"]
}
}],
messages: [{
role: "user",
content: "Tell me the weather in San Francisco."
}]
});
console.log(response);
}
main().catch(console.error);import java.util.List;
import java.util.Map;
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.core.JsonValue;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;
import com.anthropic.models.messages.Tool;
import com.anthropic.models.messages.Tool.InputSchema;
public class GetWeatherExample {
public static void main(String[] args) {
AnthropicClient client = AnthropicOkHttpClient.fromEnv();
InputSchema schema = InputSchema.builder()
.properties(JsonValue.from(Map.of(
"location",
Map.of(
"type", "string",
"description", "The city and state, e.g. San Francisco, CA"))))
.putAdditionalProperty("required", JsonValue.from(List.of("location")))
.build();
MessageCreateParams params = MessageCreateParams.builder()
.model(Model.CLAUDE_OPUS_4_0)
.maxTokens(1024)
.addTool(Tool.builder()
.name("get_weather")
.description("Get the current weather in a given location")
.inputSchema(schema)
.build())
.addUserMessage("What's the weather like in San Francisco?")
.build();
Message message = client.messages().create(params);
System.out.println(message);
}
}Come funziona l'uso degli strumenti
Claude supporta due tipi di strumenti:
-
Strumenti client: Strumenti che vengono eseguiti sui tuoi sistemi, che includono:
- Strumenti personalizzati definiti dall'utente che crei e implementi
- Strumenti definiti da Anthropic come uso del computer e editor di testo che richiedono implementazione client
-
Strumenti server: Strumenti che vengono eseguiti sui server di Anthropic, come gli strumenti ricerca web e recupero web. Questi strumenti devono essere specificati nella richiesta API ma non richiedono implementazione da parte tua.
Gli strumenti definiti da Anthropic utilizzano tipi versionati (ad esempio, web_search_20250305, text_editor_20250124) per garantire compatibilità tra le versioni del modello.
Strumenti client
Integra gli strumenti client con Claude in questi passaggi:
Fornisci a Claude strumenti e un prompt utente
- Definisci gli strumenti client con nomi, descrizioni e schemi di input nella tua richiesta API.
- Includi un prompt utente che potrebbe richiedere questi strumenti, ad esempio, "Com'è il tempo a San Francisco?"
Claude decide di utilizzare uno strumento
- Claude valuta se qualche strumento può aiutare con la query dell'utente.
- Se sì, Claude costruisce una richiesta di uso strumento formattata correttamente.
- Per gli strumenti client, la risposta API ha un
stop_reasonditool_use, segnalando l'intenzione di Claude.
Esegui lo strumento e restituisci i risultati
- Estrai il nome dello strumento e l'input dalla richiesta di Claude
- Esegui il codice dello strumento sul tuo sistema
- Restituisci i risultati in un nuovo messaggio
usercontenente un blocco di contenutotool_result
Claude utilizza il risultato dello strumento per formulare una risposta
- Claude analizza i risultati dello strumento per creare la sua risposta finale al prompt originale dell'utente.
Nota: I passaggi 3 e 4 sono opzionali. Per alcuni flussi di lavoro, la richiesta di uso strumento di Claude (passaggio 2) potrebbe essere tutto ciò di cui hai bisogno, senza inviare risultati di ritorno a Claude.
Strumenti server
Gli strumenti server seguono un flusso di lavoro diverso:
Fornisci a Claude strumenti e un prompt utente
- Gli strumenti server, come ricerca web e recupero web, hanno i loro parametri.
- Includi un prompt utente che potrebbe richiedere questi strumenti, ad esempio, "Cerca le ultime notizie sull'IA" o "Analizza il contenuto a questo URL."
Claude esegue lo strumento server
- Claude valuta se uno strumento server può aiutare con la query dell'utente.
- Se sì, Claude esegue lo strumento, e i risultati vengono automaticamente incorporati nella risposta di Claude.
Claude utilizza il risultato dello strumento server per formulare una risposta
- Claude analizza i risultati dello strumento server per creare la sua risposta finale al prompt originale dell'utente.
- Non è necessaria alcuna interazione aggiuntiva dell'utente per l'esecuzione dello strumento server.
Esempi di uso degli strumenti
Ecco alcuni esempi di codice che dimostrano vari modelli e tecniche di uso degli strumenti. Per brevità, gli strumenti sono strumenti semplici, e le descrizioni degli strumenti sono più brevi di quanto sarebbe ideale per garantire le migliori prestazioni.
Prezzi
Tool use requests are priced based on:
- The total number of input tokens sent to the model (including in the
toolsparameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
Client-side tools are priced the same as any other Claude API request, while server-side tools may incur additional charges based on their specific usage.
The additional tokens from tool use come from:
- The
toolsparameter in API requests (tool names, descriptions, and schemas) tool_usecontent blocks in API requests and responsestool_resultcontent blocks in API requests
When you use tools, we also automatically include a special system prompt for the model which enables tool use. The number of tool use tokens required for each model are listed below (excluding the additional tokens listed above). Note that the table assumes at least 1 tool is provided. If no tools are provided, then a tool choice of none uses 0 additional system prompt tokens.
| Model | Tool choice | Tool use system prompt token count |
|---|---|---|
| Claude Opus 4.1 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Opus 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.7 (deprecated) | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 3.5 | auto, noneany, tool | 264 tokens 340 tokens |
| Claude Opus 3 (deprecated) | auto, noneany, tool | 530 tokens 281 tokens |
| Claude Sonnet 3 | auto, noneany, tool | 159 tokens 235 tokens |
| Claude Haiku 3 | auto, noneany, tool | 264 tokens 340 tokens |
These token counts are added to your normal input and output tokens to calculate the total cost of a request.
Fai riferimento alla nostra tabella di panoramica dei modelli per i prezzi attuali per modello.
Quando invii un prompt di uso strumento, proprio come qualsiasi altra richiesta API, la risposta produrrà sia i conteggi dei token di input che di output come parte delle metriche usage riportate.
Prossimi Passi
Esplora il nostro repository di esempi di codice di uso strumento pronti per l'implementazione nei nostri cookbook:
Strumento Calcolatrice
Impara come integrare un semplice strumento calcolatrice con Claude per calcoli numerici precisi.
Agente Servizio Clienti
Costruisci un bot di servizio clienti reattivo che sfrutta strumenti client per migliorare il supporto.
Estrattore JSON
Vedi come Claude e l'uso degli strumenti possono estrarre dati strutturati da testo non strutturato.