OneProvider

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.

json
{
"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.

json
{
"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 :

Données de référence
Le client envoieLe modèle reçoitPourquoi
{"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èmeTous 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èmeIdem ; la consigne nomme l’outil.
Pourquoi c’est important Sans cette réécriture, 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_case et PascalCase fonctionnent 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