メインコンテンツへスキップ
OpenAI 形式の tools / tool_choice はチャット対応のすべてのプロバイダ で動作します。ゲートウェイが上流のネイティブツール呼び出し形式に変換 します。

最小例

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)

プロバイダ間の動作

同じクライアントコードがチャット対応のすべてのプロバイダで動作します ——OrcaRouter が OpenAI 形式の tools を各上流のネイティブ形式に適合 させます:
  • OpenAI / Grok / DeepSeek: ネイティブターゲット——tools は ワイヤ上で OpenAI 形式を保持
  • Anthropic: OpenAI の tools は Anthropic の tools + input_schema に対応付けられ、JSON Schema の propertiesrequired を保持
  • Gemini: OpenAI の tools は Gemini の tools[].functionDeclarations に対応付けられ、name / description / parameters が引き継がれる

Gemini の予約関数名

Gemini ターゲット上で、ゲートウェイは 3 つの予約済み function.name 値を認識し、カスタム関数宣言ではなく Gemini のネイティブ内蔵ツール に変換します:
予約名対応先
googleSearchGemini Google Search グラウンディング (ウェブ検索 を参照)
codeExecutionGemini 内蔵コード実行
urlContextGemini 内蔵 URL コンテキストツール
これらの名前を持つ関数は parameters 不要です—— {type: "function", function: {name: "googleSearch"}} を渡せば Gemini が引き受けます。自分のカスタムツールにはこれらの内蔵名と 衝突しない別の名前を選んでください。