跳轉到主要內容
OpenAI 風格的 tools / tool_choice 在所有支持 chat 的服務商上都 工作。網關會翻譯到上游的原生工具調用形態。

最小示例

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)

跨服務商行為

同一段客戶端代碼可作用于所有支持 chat 的服務商——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 目標上,網關識別三個保留的 function.name 值,并把它們 轉換為 Gemini 的原生內置工具,而不是自定義函數聲明:
保留名映射到
googleSearchGemini Google 搜索接地(詳見聯網搜索
codeExecutionGemini 內置代碼執行
urlContextGemini 內置 URL 上下文工具
使用這些保留名的函數不需要 parameters——傳 {type: "function", function: {name: "googleSearch"}} 即可,剩下交給 Gemini。請給你自己的自定義工具取別的名字,避免與這些內置項沖突。