Chuyển đến nội dung chính
tools / tool_choice kiểu OpenAI hoạt động với mọi nhà cung cấp có khả năng chat. Gateway sẽ dịch sang định dạng tool-call bản địa của upstream.

Ví dụ tối thiểu

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)

Hành vi chéo nhà cung cấp

Cùng một đoạn mã client hoạt động với mọi nhà cung cấp có khả năng chat — OrcaRouter điều chỉnh tools kiểu OpenAI của bạn sang định dạng bản địa của từng upstream:
  • OpenAI / Grok / DeepSeek: đích bản địa — tools giữ nguyên định dạng OpenAI trên đường truyền
  • Anthropic: tools của OpenAI được ánh xạ thành tools của Anthropic với input_schema, giữ lại propertiesrequired của JSON Schema
  • Gemini: tools của OpenAI được ánh xạ thành tools[].functionDeclarations của Gemini, mang theo name / description / parameters

Tên hàm dành riêng của Gemini

Trên các đích Gemini, gateway nhận diện ba giá trị function.name dành riêng và biến chúng thành các công cụ bản địa dựng sẵn của Gemini thay vì khai báo hàm tùy chỉnh:
Tên dành riêngÁnh xạ đến
googleSearchGemini Google Search grounding (xem Tìm kiếm web)
codeExecutionCode execution dựng sẵn của Gemini
urlContextCông cụ URL-context dựng sẵn của Gemini
Các hàm có một trong các tên này không cần parameters — truyền {type: "function", function: {name: "googleSearch"}} và Gemini sẽ lo phần còn lại. Chọn tên khác cho các công cụ tùy chỉnh của bạn để tránh xung đột với các built-in này.