Saltar para o conteúdo principal
tools / tool_choice no estilo OpenAI funciona contra todos os provedores capazes de chat. O gateway traduz para o formato nativo de chamada de ferramenta do upstream.

Exemplo mínimo

from openai import OpenAI
client = OpenAI(base_url="https://api.orcarouter.ai/v1", api_key="sk-orca-...")

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Weather in Paris?"}],
    tools=tools,
)
print(resp.choices[0].message.tool_calls)

Comportamento entre provedores

O mesmo código cliente funciona em todos os provedores capazes de chat — o OrcaRouter adapta seu tools no estilo OpenAI para o formato nativo de cada upstream:
  • OpenAI / Grok / DeepSeek: alvo nativo — tools mantém o formato OpenAI no fio
  • Anthropic: tools no estilo OpenAI é mapeado para tools da Anthropic com input_schema, preservando JSON Schema properties e required
  • Gemini: tools no estilo OpenAI é mapeado para tools[].functionDeclarations do Gemini, com name / description / parameters levados adiante

Nomes de função reservados do Gemini

Em alvos Gemini, o gateway reconhece três valores reservados de function.name e os transforma em ferramentas nativas integradas do Gemini em vez de declarações de função personalizadas:
Nome reservadoMapeia para
googleSearchGrounding Google Search do Gemini (veja Busca web)
codeExecutionExecução de código integrada do Gemini
urlContextFerramenta integrada URL-context do Gemini
Funções com um desses nomes não precisam de parameters — passe {type: "function", function: {name: "googleSearch"}} e o Gemini cuida do resto. Escolha um nome diferente para suas próprias ferramentas personalizadas para não colidir com essas integradas.