Zum Hauptinhalt springen
tools / tool_choice im OpenAI-Stil funktionieren gegen jeden Chat-fähigen Anbieter. Das Gateway übersetzt in die native Tool-Call-Form des Upstreams.

Minimales Beispiel

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)

Anbieterübergreifendes Verhalten

Derselbe Client-Code funktioniert über jeden Chat-fähigen Anbieter — OrcaRouter passt deine tools im OpenAI-Stil an die native Form jedes Upstreams an:
  • OpenAI / Grok / DeepSeek: natives Ziel — tools behält die OpenAI-Form auf der Leitung
  • Anthropic: OpenAI-tools wird auf Anthropic-tools mit input_schema abgebildet, wobei JSON-Schema-properties und required erhalten bleiben
  • Gemini: OpenAI-tools wird auf Gemini- tools[].functionDeclarations abgebildet, wobei name / description / parameters durchgereicht werden

Reservierte Gemini-Funktionsnamen

Auf Gemini-Zielen erkennt das Gateway drei reservierte function.name-Werte und verwandelt sie in native eingebaute Tools von Gemini statt in benutzerdefinierte Funktionsdeklarationen:
Reservierter NameWird abgebildet auf
googleSearchGemini Google Search Grounding (siehe Websuche)
codeExecutionGemini eingebaute Codeausführung
urlContextGemini eingebautes URL-Kontext-Tool
Funktionen mit einem dieser Namen benötigen keine parameters — übergib {type: "function", function: {name: "googleSearch"}} und Gemini übernimmt den Rest. Wähle einen anderen Namen für deine eigenen benutzerdefinierten Tools, damit du nicht mit diesen eingebauten kollidierst.