الانتقال إلى المحتوى الرئيسي
تعمل tools / tool_choice بأسلوب OpenAI مع كل مزوّد يدعم المحادثة. تترجم البوابة هذا إلى الشكل الأصلي لاستدعاء الأدوات لدى المصدر الأعلى.

مثال مختصر

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 بتكييف tools بأسلوب OpenAI مع الشكل الأصلي لكل مصدر أعلى:
  • OpenAI / Grok / DeepSeek: هدف أصلي — تحتفظ tools بشكل OpenAI على السلك
  • Anthropic: تُحوَّل tools الخاصة بـ OpenAI إلى tools الخاصة بـ Anthropic مع input_schema، مع الحفاظ على properties و required لـ JSON Schema
  • Gemini: تُحوَّل tools الخاصة بـ OpenAI إلى tools[].functionDeclarations لـ Gemini، مع نقل name / description / parameters

أسماء الدوال المحجوزة في Gemini

على أهداف Gemini، تتعرّف البوابة على ثلاث قيم محجوزة لـ function.name وتحوّلها إلى أدوات Gemini المدمجة الأصلية بدلاً من تصريحات دوال مخصصة:
الاسم المحجوزيُربط مع
googleSearchتأريض بحث Google في Gemini (راجع البحث على الويب)
codeExecutionتنفيذ التعليمات البرمجية المدمج في Gemini
urlContextأداة سياق الـ URL المدمجة في Gemini
الدوال التي تحمل أحد هذه الأسماء لا تحتاج إلى parameters — مرّر {type: "function", function: {name: "googleSearch"}} وستتولى Gemini الباقي. اختر اسماً مختلفاً لأدواتك المخصصة حتى لا تتعارض مع هذه الأدوات المدمجة.