رفتن به محتوا

ویژگی‌های پیشرفته

استفاده از قابلیت‌های تکمیلی API

مستندات

Stream با شامل‌کردن Usage

دریافت آمار استفاده در انتهای یک پاسخ جریانی:

{  "model": "gpt-5-nano",  "stream": true,  "stream_options": {    "include_usage": true  },  "messages": [    { "role": "user", "content": "یک داستان کوتاه بگو" }  ]}

آخرین chunk شامل داده‌های usage می‌شود.

وقتی stream: true باشد، پاسخ به‌جای یک شیء کامل به تکه‌های کوچک تقسیم می‌شود و آمار مصرف در آن‌ها نیست. اگر می‌خواهید هزینهٔ هر درخواست را ثبت کنید، این پارامتر را روشن کنید تا usage و cost_rial در chunk پایانی برگردند. شکل chunkها در استریم پاسخ (SSE) آمده است.

ورود تصویر (Vision)

مدل‌های بینایی تصویر را داخل همان آرایهٔ content می‌گیرند، و به شکل data URI با Base64 (پیشنهادی) یا یک نشانی https که درگاه خودش دانلودش می‌کند. ساختار دقیق پیام، کدِ آمادهٔ تبدیل یک فایل به Base64 و نمونهٔ کامل درخواست در ورودی تصویر آمده است.

Function Calling

تعریف ابزارهایی که مدل می‌تواند استفاده کند:

{  "model": "gpt-5-nano",  "messages": [{"role": "user", "content": "هوای پاریس چطوره؟"}],  "tools": [    {      "type": "function",      "function": {        "name": "get_weather",        "description": "دریافت هوا برای یک شهر",        "parameters": {          "type": "object",          "properties": {            "location": {              "type": "string",              "description": "نام شهر"            }          },          "required": ["location"]        }      }    }  ]}

با tools شما توابع خودتان را به مدل معرفی می‌کنید، نه اینکه مدل آن‌ها را اجرا کند. اگر مدل تشخیص دهد که برای پاسخ دادن به یکی از آن‌ها نیاز دارد، به‌جای متن، درخواست فراخوانی آن تابع را با آرگومان‌هایش برمی‌گرداند. شما تابع را در کد خودتان اجرا می‌کنید و نتیجه را به‌عنوان یک پیام تازه به messages اضافه می‌کنید و دوباره درخواست می‌فرستید.

کاربرد معمولش وصل کردن مدل به داده‌ای است که خودش ندارد: آب‌وهوا، موجودی انبار، پروفایل کاربر.

فرمت JSON

اجبار کردن خروجی ساختارشده JSON:

{  "model": "gpt-5-nano",  "messages": [    {      "role": "system",      "content": "پاسخ را فقط به صورت JSON با کلیدهای title و tags برگردان."    },    { "role": "user", "content": "یک مقاله دربارهٔ قهوه پیشنهاد بده." }  ],  "response_format": {    "type": "json_object"  }}

شکل کلیدها را خودتان بگویید

response_format تضمین می‌کند خروجی JSON معتبر باشد، نه اینکه کلیدهای دلخواه شما را داشته باشد. کلیدهایی که انتظار دارید را در پیام سیستم توضیح دهید (همان‌طور که در نمونهٔ بالا آمده) وگرنه هر بار ساختار متفاوتی می‌گیرید.

بذر (Seed) برای نتایج قابل تکرار

استفاده از بذر برای نتایج مشابه:

{  "model": "gpt-5-nano",  "messages": [    { "role": "user", "content": "سه نام برای یک کافه پیشنهاد بده." }  ],  "seed": 42,  "temperature": 0}

بذر یکسان + ورودی یکسان = خروجی یکسان

به‌طور پیش‌فرض یک درخواست تکراری می‌تواند پاسخ متفاوتی بدهد، که برای تست خودکار و رفع اشکال دردسر است. seed را ثابت نگه دارید و temperature را روی صفر بگذارید تا نتیجه تا حد ممکن تکرارپذیر شود.

پارامترهای اضافی

پارامترهای اضافی
پارامترتوضیح
logit_biasتغییر احتمال توکن‌های خاص
nتعداد تکمیل‌های برای ایجاد
stopدنباله‌های محقق توقف

n تعداد پاسخ‌هایی است که در یک درخواست تولید می‌شود (هزینه هم به همان نسبت بیشتر می‌شود)، و stop فهرستی از رشته‌هاست که به محض دیدنشان تولید متوقف می‌شود. همین پارامترها با جزئیات نوع و بازه در جدول پارامترهای درخواست هستند.