OneProvider

Uso de ferramentas

Adicione function calling: defina ferramentas, leia blocos tool_use, controle tool_choice e rode chamadas em paralelo, no estilo Anthropic ou OpenAI.

Function calling no endpoint nativo da Anthropic. A API normaliza o tool_choice, de modo que SDKs antigos que enviam {type:any} ou {type:tool} continuam funcionando.

Todos os modelos, recursos e preços Índice da documentação para agentes de IA: https://oneprovider.dev/docs/llms.txt

Formato da requisição

Declare as ferramentas em um array. Cada ferramenta tem um name, uma description e um input_schema em JSON Schema. O modelo emite um bloco de conteúdo tool_use sempre que decide chamar uma.

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?" }
]
}

Resposta com uma chamada de ferramenta

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" }
}
]
}

Continuando o ciclo

Depois que o seu código executar a ferramenta, devolva o resultado como uma mensagem user contendo um bloco tool_result. Em seguida, o modelo emite outra chamada de ferramenta ou uma resposta final em texto.

json
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_bdrk_01...",
"content": "{\"city\":\"Berlin\",\"temp_c\":18,\"sky\":\"clear\"}"
}
]
}

tool_choice — como normalizamos

A Anthropic aceita quatro formas de tool_choice. A API da OneProvider aceita as quatro vindas do seu cliente, mas repassa duas delas ao modelo em outra forma:

Dados de referência
O cliente enviaO modelo recebePor quê
{"type":"auto"} (ou ausente)sem alteraçãoO modelo decide — o caso normal.
{"type":"none"}sem alteraçãoForça uma resposta só em texto.
{"type":"any"}{"type":"auto"} + dica no prompt de sistemaNem todo modelo aceita chamadas de ferramenta forçadas; a dica diz ao modelo "você DEVE chamar uma ferramenta".
{"type":"tool","name":"X"}{"type":"auto"} + dica no prompt de sistemaO mesmo; a dica cita a ferramenta pelo nome.
Por que isso importa Sem essa reescrita, tool_choice:any e tool_choice:tool falhariam em alguns modelos. Com auto + uma dica forte no prompt de sistema, cerca de 95% dessas requisições funcionam nos nossos testes. Se uma chamada de ferramenta esperada for substituída por texto, a dica não conseguiu induzir o modelo — reforce o seu prompt de usuário ou troque por um modelo mais capaz.

Chamadas de ferramenta em paralelo

Uma única resposta pode conter vários blocos tool_use — o modelo decide se vai fazer várias chamadas de uma vez. Execute todos e depois devolva uma única mensagem user com vários blocos tool_result (um por tool_use_id). A ordem não importa.

Nomes de ferramentas

  • Os nomes diferenciam maiúsculas de minúsculas e passam sem alteração — o modelo repete exatamente o que você registrou.
  • snake_case e PascalCase funcionam. A CLI do Claude Code usa PascalCase (Read, Bash, Edit); SDKs genéricos costumam usar snake_case.
  • Mantenha os nomes com menos de 64 caracteres e em ASCII [a-zA-Z0-9_].

Chamada de ferramentas no estilo OpenAI

No endpoint /v1/chat/completions , use o formato padrão tools / tool_calls da OpenAI — nós o traduzimos para blocos tool_use da Anthropic por baixo dos panos.

Respostas rápidas

Qual base URL devo usar?

O Claude Code e os SDKs da Anthropic usam https://api.oneprovider.dev. Os SDKs da OpenAI e os clientes compatíveis com a OpenAI usam https://api.oneprovider.dev/v1. Uma única chave funciona nos dois; a lista de modelos está na página de modelos e os preços, na página de preços .

Como me autentico?

Envie a chave sk-… pura em x-api-key ou em Authorization: Bearer: um dos dois, nunca ambos. Guarde a chave em uma variável de ambiente, não em um arquivo que vai para o commit. Mais sobre autenticação .

Onde consigo uma chave?

Abra o seu painel no bot do Telegram @oneprovider_robot ou em app.oneprovider.dev, recarregue o saldo e toque em “Emitir chave”. Cada chave pode ter o seu próprio limite de gastos. Painel e chaves de API .

O que significam 401, 404 e 429?

401: a chave está ausente, foi digitada errado ou enviada no cabeçalho errado; cole a chave inteira, sem aspas nem espaços. 404: em geral, uma base URL errada, por exemplo um /v1 ausente ou duplicado. 429 com “Insufficient balance”: o saldo do painel ou o limite de gastos da chave acabou, então recarregue em vez de tentar de novo; qualquer outro 429 é um limite de requisições, então aguarde o tempo de Retry-After. Detalhes: códigos de erro e solução de problemas .

Por que os streams são cortados ou reiniciados?

VPNs e proxies VLESS costumam armazenar SSE em buffer ou quebrar a negociação do HTTP/2. A OneProvider não tem restrições regionais e não armazena streams em buffer; desative o proxy e tente de novo.

Onde pergunto se isso não bastar?

Escreva para @Oneproviderhelpbot no Telegram ou abra “Suporte” no painel web, informando o código de status HTTP e a mensagem de erro exata. Como funciona o suporte .

Última atualização: 2026-11-08 Encontrou um erro? @Oneproviderhelpbot