IranRouter
فهرست مستندات

مستندات

ابزارها (function calling)

تعریف ابزار، حلقهٔ فراخوانی، و اینکه schema ابزار هم توکن حساب می‌شود.

ابزارها (function calling) روی هر دو مسیر — chat/completions و messages — و در هر دو حالت stream و غیر-stream کار می‌کنند.

تعریف ابزار

python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "آب‌وهوای فعلی یک شهر را برمی‌گرداند",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "هوای تهران چطوره؟"}],
    tools=tools,
)

حلقهٔ فراخوانی

  1. درخواست را با tools بفرستید.
  2. اگر مدل تصمیم به فراخوانی بگیرد، finish_reason برابر tool_calls می‌شود و message.tool_calls پر می‌شود.
  3. تابع را خودتان اجرا کنید.
  4. نتیجه را با نقش tool و همان tool_call_id به تاریخچه اضافه و دوباره بفرستید.
python
messages.append(resp.choices[0].message)          # the assistant's tool call
messages.append({
    "role": "tool",
    "tool_call_id": resp.choices[0].message.tool_calls[0].id,
    "content": '{"temp_c": 31}',
})
final = client.chat.completions.create(model=..., messages=messages, tools=tools)
schema ابزارها بخشی از پرامپت است و توکن ورودی حساب می‌شود — روی هر تماسِ همان مکالمه. ده ابزار با توضیحات طولانی می‌تواند از خودِ سؤال کاربر گران‌تر تمام شود. فقط ابزارهایی را بفرستید که در آن مرحله واقعاً ممکن است لازم شوند.

تخمین رزرو کیف پول هم schema ابزارها را حساب می‌کند، پس رزرو با ابزارهای زیاد بزرگ‌تر می‌شود.