Passer au contenu principal
tools / tool_choice de style OpenAI fonctionne contre chaque fournisseur capable de chat. La passerelle traduit vers la forme d’appel d’outils native de l’amont.

Exemple minimal

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)

Comportement inter-fournisseurs

Le même code client fonctionne sur tous les fournisseurs capables de chat — OrcaRouter adapte vos tools de style OpenAI à la forme native de chaque amont :
  • OpenAI / Grok / DeepSeek : cible native — tools garde la forme OpenAI sur le fil
  • Anthropic : tools OpenAI est mappé à tools Anthropic avec input_schema, préservant properties et required du JSON Schema
  • Gemini : tools OpenAI est mappé à tools[].functionDeclarations Gemini, avec name / description / parameters transférés

Noms de fonctions réservés Gemini

Sur les cibles Gemini, la passerelle reconnaît trois valeurs réservées de function.name et les transforme en outils intégrés natifs de Gemini plutôt qu’en déclarations de fonctions personnalisées :
Nom réservéMappé vers
googleSearchAncrage Google Search Gemini (voir Recherche web)
codeExecutionExécution de code intégrée Gemini
urlContextOutil URL-context intégré Gemini
Les fonctions avec l’un de ces noms n’ont pas besoin de parameters — passez {type: "function", function: {name: "googleSearch"}} et Gemini s’en occupe. Choisissez un nom différent pour vos propres outils personnalisés afin de ne pas entrer en collision avec ces intégrés.