تکمیل گفتگو
نقطهٔ پایانی اصلی و پارامترها.
درخواست
POST /v1/chat/completions با بدنهٔ JSON. ساختار درخواست و پاسخ مشابه رایجترین APIهای گفتگو است؛ پس میتوانید با کلاینتهای رایج HTTP و کتابخانههای شناختهشده کار کنید. فیلدهای ناشناخته نادیده گرفته میشوند.
| پارامتر | نوع | توضیح |
|---|---|---|
model | رشته، الزامی | شناسهٔ مدل از /v1/models، یا auto برای مدل پیشفرض. |
messages | فهرست، الزامی | گفتگو تا اینجا، از قدیمی به جدید. هر پیام یک role (system، developer، user یا assistant) و یک content دارد. |
max_tokens / max_completion_tokens | عدد صحیح | بیشترین طول پاسخ، به توکن (token؛ واحد کوچک متن، تقریباً یک کلمهٔ کوتاه یا بخشی از کلمه). حداکثر ۸۱۹۲. |
temperature | عدد، ۰ تا ۲ | temperature (میزان تصادفیبودن پاسخ): عدد کمتر مثل ۰٫۲ پاسخ دقیقتر و ثابتتر میدهد، عدد بیشتر مثل ۱ پاسخ متنوعتر. |
top_p | عدد، ۰ تا ۱ | top_p (روش دیگر برای محدود کردن تصادفیبودن): فقط محتملترین کلمههایی که مجموع احتمالشان به این سهم میرسد در نظر گرفته میشوند. یا این را تغییر دهید یا temperature را، نه هر دو. |
stop | رشته یا فهرست | تا ۴ رشته؛ پاسخ درست پیش از اولین رشتهای که قرار بود بنویسد تمام میشود. |
stream | بولی | stream (ارسال تدریجی): پاسخ را همزمان با نوشتهشدن قطعهقطعه بفرستد؛ استریم پاسخ را ببینید. |
stream_options.include_usage | بولی | در استریم، مصرف را هم در آخرین قطعه بفرستد. |
n | عدد صحیح | باید ۱ باشد: برای هر درخواست یک پاسخ. |
محتوای یک پیام میتواند متن ساده یا فهرستی از بخشهای text و image_url باشد. تصویر را فقط مدلی میپذیرد که supports_vision دارد و باید درون خود درخواست، بهشکل نشانی data: با base64 فرستاده شود.
import os import requests reply = requests.post( "https://api.hoveydai.ir/v1/chat/completions", headers={"Authorization": f"Bearer {os.environ['HOVEYDAI_API_KEY']}"}, json={ "model": "MODEL_ID", "messages": [ {"role": "system", "content": "Answer in Persian, briefly."}, {"role": "user", "content": "What is a token?"}, ], "max_tokens": 300, "temperature": 0.4, }, timeout=60,)reply.raise_for_status()body = reply.json()print(body["choices"][0]["message"]["content"])print(body["usage"])
پاسخ
یک درخواست موفق شیء chat.completion برمیگرداند: متن پاسخ در choices[0].message.content است، choices[0].finish_reason دلیل پایان را میگوید (stop برای پایان طبیعی، length وقتی max_tokens پاسخ را قطع کرده) و usage شامل prompt_tokens، completion_tokens، total_tokens و credits_used (اعتباری که برای همین تماس کسر شد) است. هر پاسخ، حتی خطا، هدر x-request-id دارد؛ اگر به پشتیبانی نوشتید، آن را بفرستید.
اندازهٔ درخواست
بدنهٔ درخواست حداکثر ۴۰ مگابایت است؛ بیشتر از آن 413 با request_too_large میگیرید. اگر ورودی بهعلاوهٔ خروجی درخواستی در زمینهٔ مدل جا نشود، 422 با context_length_exceeded برمیگردد.
برای همهٔ پارامترها و پاسخها مرجع نقطههای پایانی را ببینید.
این صفحه کمکتان نکرد؟ به ما بگویید.