گفتگو با مدلهای زبانی (Chat Completions)
با GPT 6 Astra، Claude Haiku 5.5، Claude Opus 5، Grok 4.6، Gemini 3.5 Flash-Lite و بقیهٔ مدلها گفتگو کنید. فرمت درخواست و پاسخ با OpenAI Chat Completions سازگار است و پاسخ همان لحظه برمیگردد.
مسیر درخواست
https://bananaai.ir/api/v1/chat/completionsیک پاسخ متنی از مدل زبانی انتخابی برمیگرداند. برخلاف مسیرهای عکس و ویدیو، این مسیر همگام است: پاسخ در همان درخواست میآید و تسکی برای پیگیری ساخته نمیشود. فرمت بدنه و پاسخ با OpenAI Chat Completions سازگار است، پس کلاینتهای موجود با تغییر base_url کار میکنند.
هزینه
credits_charged پاسخ). اگر مدل پاسخی تولید نکند، اعتبار برمیگردد. جزئیات در اعتبار و هزینه.مدلها
همان مدلهای مغز بنانا در API هم در دسترساند. در فیلد model شناسهٔ کامل یا نام کوتاه را بفرستید؛ اگر چیزی نفرستید، gpt-5.6-luna استفاده میشود.
پارامترهای درخواست
بدنهٔ درخواست باید JSON باشد (Content-Type: application/json).
messagesobject[]الزامی- تاریخچهٔ گفتگو، از قدیمیترین به جدیدترین. هر آیتم
{ role, content }است؛roleیکی ازsystem،userیاassistant(developerبهsystemنگاشت میشود).contentیا رشته است یا آرایهای از بخشهای متنی و عکس (بخش ارسال عکس). حداکثر ۱۰۰ پیام، هر پیام ۳۲٬۰۰۰ کاراکتر و مجموعاً ۲۰۰٬۰۰۰ کاراکتر؛ دستکم یک پیامuserلازم است. modelstringاختیاری- شناسهٔ مدل یا نام کوتاه آن از جدول بالا. فهرست کامل با
GET /api/v1/models?type=chat. - پیشفرض:
gpt-5.6-lunaمثال:gpt-6-astraastraclaude-haiku-5-5haikuclaude-opus-5grok-4.6 streambooleanاختیاری- اگر true باشد، پاسخ بهصورت Server-Sent Events و تکهتکه برمیگردد (بخش پاسخ تکهتکه).
- پیشفرض:
false temperaturenumberاختیاری- میزان تنوع پاسخ، بین ۰ و ۲. مقدار کمتر پاسخ قطعیتر میدهد. اگر نفرستید، پیشفرض مدل اعمال میشود.
- مثال:
0.20.71 top_pnumberاختیاری- نمونهگیری هستهای، بین ۰ و ۱. معمولاً یا این یا temperature را تنظیم کنید.
max_tokensintegerاختیاری- سقف توکن خروجی (۱ تا ۳۲٬۷۶۸). در هزینه تأثیری ندارد؛ فقط طول پاسخ را محدود میکند.
- مثال:
5122048
نمونه درخواست
پاسخ
پاسخ 200 شامل متن نهایی مدل است. فیلد credits_charged اعتباری را نشان میدهد که برای این درخواست کسر شد.
choices[0].message.contentstring- متن پاسخ مدل.
choices[0].finish_reasonstring- دلیل پایان پاسخ؛ معمولاً
stop. اگر بهmax_tokensبرخورد کندlengthاست. usageobject- تعداد توکن ورودی/خروجی اگر ارائهدهنده برگرداند. صرفاً اطلاعاتی است و در هزینه نقشی ندارد.
credits_chargedinteger- اعتبار کسرشده برای این درخواست (نرخ ثابت مدل).
پاسخ تکهتکه (stream)
با "stream": true پاسخ با Content-Type: text/event-stream برمیگردد. هر خط data: یک JSON با object: "chat.completion.chunk" است و متن جدید در choices[0].delta.content قرار دارد. chunk آخر finish_reason و credits_charged را دارد و سپس data: [DONE] میآید.
هشدار
Idempotency-Key نادیده گرفته میشود، چون بدنهٔ SSE قابل بازپخش نیست. اگر خطایی بعد از شروع پاسخ رخ دهد، یک رویداد data: {"error": {...}} ارسال میشود.ارسال عکس
همهٔ مدلها ورودی تصویری میپذیرند. در پیامهای user بهجای رشته، آرایهای از بخشها بفرستید؛ نشانی عکس باید عمومی (http/https) یا data: URI باشد و در هر پیام حداکثر ۴ عکس مجاز است.
استفاده با SDK OpenAI
چون فرمت سازگار است، کافی است base_url را به https://bananaai.ir/api/v1 تغییر دهید و کلید بنانا را بهعنوان api_key بدهید:
نکته
chat/completions و models با SDK OpenAI سازگارند؛ برای عکس و ویدیو از مسیرهای اختصاصی بنانا استفاده کنید. خطاها با همان ساختار خطاها و پیامها برمیگردند (unsupported_model برای شناسهٔ ناشناخته، insufficient_credits برای کمبود اعتبار).