Submit an embedding request
درخواستی برای تولید بردارهای جاسازی (embedding) از متن ارسال میکند؛ بهصورت کاملاً سازگار با فرمت OpenAI.
نقطهٔ پایانی /embeddings ورودی متنیِ شما را به یک بردار
عددی (آرایهای از اعداد اعشاری) تبدیل میکند؛ بردارهایی که فاصله و جهت نزدیکبودنشان بازنماییِ معناییِ
متن است. خروجی مطابق فرمت list استاندارد OpenAI برمیگردد تا
SDKها و کدهای موجود بدون تغییر کار کنند — فقط کافیست Base URL و کلید API آشا را تنظیم کنید.
ورودی میتواند یک رشته یا آرایهای از رشتهها (برای پردازش دستهای) باشد. جاسازیها از استریم پشتیبانی نمیکنند.
Endpoint
https://app.asha-ai.ir/v1/embeddings
احراز هویت
با کلید API آشا از طریق هدر
Authorization: Bearer <ASHA_API_KEY>
احراز هویت کنید و هدر
Content-Type: application/json را بفرستید.
پارامترهای بدنهٔ درخواست
بهجز input و model که الزامیاند، بقیهٔ موارد اختیاری هستند:
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
model |
string | بله | شناسهٔ مدل جاسازی؛ مثلاً openai/text-embedding-3-small. |
input |
string | string[] | number[] | number[][] | object[] | بله | متن ورودی برای جاسازی؛ یک رشته یا آرایهای از رشتهها، توکنها، یا محتوای چندوجهی. |
dimensions |
integer | خیر | تعداد ابعاد بردار خروجی (حداقل ۱)؛ فقط در مدلهایی که از پارامتر پشتیبانی میکنند. |
encoding_format |
enum | خیر | فرمت بردار خروجی: float (پیشفرض) یا base64. |
input_type |
string | خیر | نوع ورودی برای مدلهایی که به آن نیاز دارند؛ مانند search_query یا search_document. |
user |
string | خیر | شناسهٔ یکتایی برای کاربر پایانی (پایانه)؛ مثلاً آیدی جلسه. |
مثال درخواست
curl https://app.asha-ai.ir/v1/embeddings
-H "Content-Type: application/json"
-H "Authorization: Bearer $ASHA_API_KEY"
-d '{
"model": "openai/text-embedding-3-small",
"input": "The quick brown fox jumps over the lazy dog",
"dimensions": 1536
}'
import requests
response = requests.post(
'https://app.asha-ai.ir/v1/embeddings',
headers={
'Authorization': 'Bearer <ASHA_API_KEY>',
'Content-Type': 'application/json',
},
json={
'model': 'openai/text-embedding-3-small',
'input': [
'ماشینلرنینگ زیرمجموعهای از هوش مصنوعی است',
'یادگیری عمیق از شبکههای عصبی چندلایه استفاده میکند',
],
},
)
data = response.json()
for item in data['data']:
print(f"index={item['index']} dims={len(item['embedding'])}")
const response = await fetch('https://app.asha-ai.ir/v1/embeddings', {
method: 'POST',
headers: {
'Authorization': 'Bearer <ASHA_API_KEY>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'openai/text-embedding-3-small',
input: 'The quick brown fox jumps over the lazy dog',
}),
});
const data = await response.json();
console.log(data.data.map((d) => d.embedding.length));
پاسخ موفق
در صورت موفقیت، پاسخ با کد 200 برمیگردد:
{
"object": "list",
"id": "embd-1234567890",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0023064255, -0.009327292, 0.015797347]
}
],
"model": "openai/text-embedding-3-small",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8,
"cost": 0.0001
}
}
فیلدهای پاسخ
| فیلد | توضیح |
|---|---|
object | همیشه list برای پاسخ جاسازی. |
id | شناسهٔ یکتای پاسخ جاسازی. |
data | آرایهای از اشیای جاسازی؛ هر کدام دارای object، index و embedding. |
model | مدلی که برای تولید بردارها استفاده شد. |
usage.prompt_tokens | تعداد توکنهای ورودی. |
usage.total_tokens | مجموع توکنهای مصرفشده (در جاسازی برابر prompt_tokens است). |
usage.cost | هزینهٔ درخواست به دلار (credit). |
خطاها
این نقطهٔ پایانی مجموعهٔ مشترکی از وضعیتهای خطا را برمیگرداند:
| کد | توضیح |
|---|---|
400 | پارامترهای درخواست نامعتبر یا ورودی ناقص؛ مثلاً input یا model خالی. |
401 | هدر احراز هویت وجود ندارد یا کلید نامعتبر است. |
402 | موجودی (credit) حساب کافی نیست یا سهمیه تمام شده است. |
404 | مدل پیدا نشد یا منبع وجود ندارد. |
429 | محدودیت نرخ رد شده است. |
500 | خطای داخلی سرور. |
502 | ارائهدهندهٔ بالادستی خطا برگرداند. |
503 | سرویس بهطور موقت در دسترس نیست. |
524 | درخواست در شبکهٔ لبه زمانبندی شد (تایماوت). |
529 | ارائهدهنده بهطور موقت در فشار است. |
جاسازیها استریم نمیشوند؛ پاسخ همیشه یکجا با کد ۲۰۰ میآید.