مستندات
ابزارها (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,
)حلقهٔ فراخوانی
- درخواست را با tools بفرستید.
- اگر مدل تصمیم به فراخوانی بگیرد،
finish_reasonبرابرtool_callsمیشود وmessage.tool_callsپر میشود. - تابع را خودتان اجرا کنید.
- نتیجه را با نقش
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 ابزارها را حساب میکند، پس رزرو با ابزارهای زیاد بزرگتر میشود.