Appels d’outils (tool use)
Function calling : définissez des outils, lisez les blocs tool_use, gérez tool_choice et les appels parallèles. Compatible styles Anthropic et OpenAI.
Appel de fonctions sur l’endpoint natif Anthropic. L’API normalise tool_choice afin que les anciens SDK qui émettent {type:any} ou {type:tool} continuent de fonctionner.
Tous les modèles, leurs capacités et leurs tarifs Index de la documentation pour les agents IA :https://oneprovider.dev/docs/llms.txt Forme de la requête
Déclarez les outils sous forme de tableau. Chaque outil a un name, une description et un input_schema au format JSON Schema. Le modèle émet un bloc de contenu tool_use chaque fois qu’il décide d’en appeler un.
{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Return current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string" },
"units": { "type": "string", "enum": ["c", "f"] }
},
"required": ["city"]
}
}
],
"messages": [
{ "role": "user", "content": "What's the weather in Berlin in celsius?" }
]
} Réponse avec un appel d’outil
json{
"id": "msg_01...",
"stop_reason": "tool_use",
"content": [
{ "type": "text", "text": "Let me check that for you." },
{
"type": "tool_use",
"id": "toolu_bdrk_01...",
"name": "get_weather",
"input": { "city": "Berlin", "units": "c" }
}
]
} Poursuivre la boucle
Une fois que votre code a exécuté l’outil, renvoyez le résultat dans un message user contenant un bloc tool_result. Le modèle émet alors soit un nouvel appel d’outil, soit une réponse finale en texte.
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_bdrk_01...",
"content": "{\"city\":\"Berlin\",\"temp_c\":18,\"sky\":\"clear\"}"
}
]
} tool_choice — comment nous le normalisons
Anthropic accepte quatre formes de tool_choice. L’API OneProvider accepte les quatre depuis votre client, mais en transmet deux au modèle sous une autre forme :
| Le client envoie | Le modèle reçoit | Pourquoi |
|---|---|---|
{"type":"auto"} (ou absent) | inchangé | Le modèle décide — cas nominal. |
{"type":"none"} | inchangé | Forcer une réponse en texte seul. |
{"type":"any"} | {"type":"auto"} + consigne système | Tous les modèles ne prennent pas en charge les appels d’outils forcés ; la consigne dit au modèle « you MUST call a tool ». |
{"type":"tool","name":"X"} | {"type":"auto"} + consigne système | Idem ; la consigne nomme l’outil. |
tool_choice:any et tool_choice:tool échoueraient sur certains modèles. Avec auto et une consigne système appuyée, environ 95 % de ces requêtes aboutissent dans nos tests. Si un appel d’outil attendu est remplacé par de la prose, la consigne n’a pas suffi à orienter le modèle — précisez votre prompt utilisateur ou passez à un modèle plus capable. Appels d’outils en parallèle
Une seule réponse peut contenir plusieurs blocs tool_use — le modèle décide s’il les lance en parallèle. Exécutez-les tous, puis renvoyez un seul message user avec plusieurs blocs tool_result (un par tool_use_id). L’ordre n’a pas d’importance.
Nom des outils
- Les noms sont sensibles à la casse et passent tels quels — le modèle renvoie exactement ce que vous avez enregistré.
snake_caseetPascalCasefonctionnent tous les deux. La CLI Claude Code utilise PascalCase (Read,Bash,Edit) ; les SDK génériques utilisent en général snake_case.- Gardez des noms de moins de 64 caractères, en ASCII
[a-zA-Z0-9_].
Appel d’outils à la manière d’OpenAI
Sur l’endpoint /v1/chat/completions , utilisez la forme OpenAI standard tools / tool_calls — nous la traduisons en coulisses en blocs Anthropic tool_use.
Réponses rapides
Quelle base URL utiliser ?
Claude Code et les SDK Anthropic utilisent https://api.oneprovider.dev. Les SDK OpenAI et les clients compatibles OpenAI utilisent https://api.oneprovider.dev/v1. Une seule clé fonctionne avec les deux ; la liste des modèles est sur la page des modèles , les tarifs sur la page des tarifs .
Comment s’authentifier ?
Envoyez la clé sk-… telle quelle dans x-api-key ou Authorization: Bearer : l’un des deux, jamais les deux. Conservez la clé dans une variable d’environnement, pas dans un fichier qui sera commité. En savoir plus sur l’authentification .
Où obtenir une clé ?
Ouvrez votre espace client dans le bot Telegram @oneprovider_robot ou sur app.oneprovider.dev, rechargez le solde et appuyez sur « Créer une clé ». Chaque clé peut avoir sa propre limite de dépense. Espace client et clés API .
Que signifient 401, 404 et 429 ?
401 : la clé est absente, mal saisie ou envoyée dans le mauvais en-tête ; collez la clé entière, sans guillemets ni espaces. 404 : le plus souvent une base URL incorrecte, par exemple un /v1 manquant ou en double. 429 avec « Insufficient balance » : le solde de l’espace client est à zéro ou la clé a atteint sa limite de dépense, donc rechargez au lieu de réessayer ; tout autre 429 est une limite de débit, donc attendez le délai indiqué par Retry-After. Détails : codes d’erreur et dépannage .
Pourquoi les flux se coupent-ils ou se réinitialisent-ils ?
Les VPN et les proxys VLESS mettent souvent le SSE en mémoire tampon ou perturbent la négociation HTTP/2. OneProvider n’a aucune restriction régionale et ne met pas les flux en mémoire tampon : désactivez le proxy et réessayez.
Où demander de l’aide si cela ne suffit pas ?
Écrivez à @Oneproviderhelpbot sur Telegram ou ouvrez « Support » dans l’espace client web, en indiquant le code de statut HTTP et le message d’erreur exact. Comment fonctionne le support .
Dernière mise à jour: 2026-11-08 Vous avez trouvé un bug ? @Oneproviderhelpbot