Saltar al contenido principal
tools / tool_choice al estilo OpenAI funciona contra cada proveedor capaz de chat. La pasarela traduce a la forma nativa de llamada a herramientas del upstream.

Ejemplo 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)

Comportamiento entre proveedores

El mismo código del cliente funciona en cada proveedor capaz de chat — OrcaRouter adapta tus tools al estilo OpenAI a la forma nativa de cada upstream:
  • OpenAI / Grok / DeepSeek: destino nativo — tools mantiene la forma OpenAI por el cable
  • Anthropic: tools de OpenAI se mapea a tools de Anthropic con input_schema, preservando properties y required del JSON Schema
  • Gemini: tools de OpenAI se mapea a tools[].functionDeclarations de Gemini, con name / description / parameters arrastrados

Nombres de funciones reservados de Gemini

En destinos Gemini la pasarela reconoce tres valores reservados de function.name y los convierte en herramientas integradas nativas de Gemini en vez de declaraciones de funciones personalizadas:
Nombre reservadoMapea a
googleSearchAnclaje de Google Search de Gemini (ver Búsqueda web)
codeExecutionEjecución de código integrada de Gemini
urlContextHerramienta URL-context integrada de Gemini
Las funciones con uno de estos nombres no necesitan parameters — pasa {type: "function", function: {name: "googleSearch"}} y Gemini se encarga del resto. Elige un nombre diferente para tus propias herramientas personalizadas para no chocar con estas integradas.