راهنمای ادغام API DeepSeek با استفاده از ECAIX: درخواستهای سازگار با OpenAI
راهنمای ادغام API DeepSeek با استفاده از ECAIX: درخواستهای سازگار با OpenAI
این راهنما نشان میدهد که چگونه یک مدل DeepSeek را با استفاده از یک سرور API سازگار با OpenAI از طریق ECAIX تست کنید. این راهنما شامل درخواستهای کوچک و کارآمد، نمونههای پایتون و curl، تأیید مدل، استریم، خروجی ساختار یافته، ابزارها و یک مسیر تشخیص خطا برای خطاها رایج است.
این راهنما دسترسی به یک مدل از طریق درگاه ECAIX را برای مدلهایی که در فهرست فعلی ECAIX موجود هستند، توصیف میکند. این مطلب ادعا نمیکند که ECAIX سرور رسمی API DeepSeek باشد یا که تمام ویژگیهای DeepSeek از طریق هر مسیر درگاه قابل دسترس باشند. قبل از انتقال یک کاربری به تولید، از صفحه مدل زنده و مستندات ارائه دهنده مطمئن شوید.
چه چیزی این راهنما را تأیید میکند
نمونههای استفاده از مسیر OpenAI سازگار با ECAIX و یک مدل ID موجود در فهرست عمومی در زمان انتشار. دسترسی، مسیر، محدودیتها، قیمتها و ویژگیهای پشتیبانی شده ممکن است تغییر کنند. فهرست و مستندات API به عنوان منبع واقعی فعلی در نظر بگیرید.
راهاندازی سریع
اگر یک برنامه با SDK OpenAI دارید، این سری عمل را انجام دهید:
- صفحه DeepSeek v4.1 Flash را باز کنید و مطمئن شوید که ID موجود است.
- یک کلید API ECAIX ایجاد کنید.
- آدرس پایگاه داده سازگار با OpenAI را به
https://ecaix.com/api/ai/v1تنظیم کنید. - SDK و کد برنامه را در جایی که ممکن است تغییر کند، حفظ کنید.
- درخواست زیر را اجرا کنید.
- پس از آن که درخواست اولیه کار کند، فقط استریم، خروجی JSON یا ابزارها را اضافه کنید.
آدرس سرور و ID مدل
برای کلاینتهای سازگار با OpenAI، از موارد زیر استفاده کنید:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
ID مدل در یک پست وبلاگ دائمی نیست. آن را از صفحه فهرست مدل زنده قبل از هر ادغام یا Deploy جدید تأیید کنید. اگر به یک عضو دیگر از خانواده DeepSeek نیاز دارید، از صفحه جزئیات مدل، نه از یک پسوند تخمینی، کپی کنید.
فرمت آدرس سرور نیز مهم است. SDK باید آدرس پایگاه داده را به /v1 پایان دهد؛ کلاینت آن را به /chat/completions یا مسیر دیگری اضافه میکند. به جای اضافه کردن /chat/completions به base_url، آن را به SDK اضافه نکنید.
با پایتون از SDK OpenAI استفاده کنید
در محیط مجازی خود، SDK پایتون OpenAI را نصب یا به روزرسانی کنید:
python -m pip install --upgrade openai
در ادامه، از آدرس پایگاه داده ECAIX و کلید API استفاده کنید:
const client = new OpenAI({
apiKey: process.env.ECAIX_API_KEY,
baseURL: "https://ecaix.com/api/ai/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [
{ role: "user", content: "Return one short sentence about API testing." },
],
max_tokens: 128,
});
console.log(response.choices[0].message.content);
برای درخواست API از کد سرور استفاده کنید. برنامههای وب باید به جای نمایش کلید ECAIX در کد جاوا اسکریپت سمت کلاینت، به یک سرور خودشان مراجعه کنند.
درخواست تشخیص با curl
اگر SDK شکست میخورد، از SDK خارج شوید و سرور را با استفاده از curl مستقیم تست کنید. سرورها و بدنه را جداگانه ذخیره کنید تا بتوانید یک مشکل HTTP را از یک مشکل در فرمت پاسخ تشخیص دهید.
curl -sS -D /tmp/ecaix-deepseek-headers.txt \
-o /tmp/ecaix-deepseek-response.json \
-w '\nHTTP %{http_code}\n' \
"https://ecaix.com/api/ai/v1/chat/completions" \
-H "Authorization: Bearer ${ECAIX_API_KEY}" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "Reply with one short sentence."}
],
"max_tokens": 128
}'
کپی نکنید سرورها یا پاسخ را در یک تیکت عمومی بدون حذف کلیدهای API، شناسه درخواست، پرس و جوها، مسیرهای رپوزیتوری و دادههای مشتری.
تشخیص پاسخ
در این ترتیب عمل کنید:
- کد وضعیت HTTP: بررسی کنید که آیا درخواست به یک سرور معتبر رسید.
- بدنه پاسخ: متن خطا را از ارائه دهنده یا درگاه بخوانید.
- ID مدل: از صفحه فهرست مدل فعلی کپی کنید.
- تأیید: بررسی کنید که آیا سرور، حساب و مجوزهای کلید صحیح است.
- شکل درخواست: بدنه را به
model,messagesو یک محدودیت کوچک کاهش دهید. - میدانهای ویژگی: به ترتیب استریم، JSON یا ابزارها اضافه کنید.
- رفتار SDK: مقایسه کنید که آیا درخواست SDK با curl مستقیم مشابه است.
این از یک مشکل در کتابخانه کلاینت با مشکل مسیر مدل یا مجوز حساب جلوگیری میکند.
پاسخهای استریم
اگر برنامه نیاز به خروجیIncremental دارد، فقط پس از موفقیت در یک درخواست معمولی، استریم را اضافه کنید:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Summarize API retries in three points."}],
stream=True,
max_tokens=256,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
رفتار دقیق رویدادها به سرور و SDK بستگی دارد. بررسی کنید که چگونه چارچوب شما یک دلتای خالی، رویداد نهایی استفاده، قطع ارتباط و پایان با سبک [DONE] را مدیریت میکند. به هیچ وجه یک پیادهسازی استریم را قبل از تست قطعها و بازگردانیها به تولید آماده نکنید.
خروجی ساختار یافته و JSON
اگر خروجی قابل خواندن توسط ماشین نیاز دارید، ابتدا یک درخواست معمولی را انجام دهید و سپس کوچکترین گزینه خروجی ساختار یافته را که توسط سرور و مدل پشتیبانی میشود، اضافه کنید. محتوای برگردانده شده را با یک پارسر JSON واقعی تأیید کنید. یک پرس و جو که میگوید "JSON برگردانید" متفاوت از یک پاسخ با ساختار اجباری نیست.
import json
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{
"role": "user",
"content": "Return a JSON object with keys title and priority."
}
],
response_format={"type": "json_object"},
max_tokens=128,
)
payload = json.loads(response.choices[0].message.content)
print(payload["title"])
آیا response_format پذیرفته میشود، به مدل و مسیر بستگی دارد. اگر پاسخ یک خطای پارامتر غیرپذیرفته را نشان دهد، این فیلد را حذف کنید و قبل از تلاش برای یک فرمت دیگر، مستندات مسیر را بررسی کنید.
فراخوانی تابع و ابزارها
فراخوانی ابزارها نیاز به یک تست جداگانه از تولید متن دارد. ابتدا یک تابع بی خطر را تست کنید و قبل از اجرای هر چیزی، نام و پارامترهای برگردانده شده را بررسی کنید.
tools = [
{
"type": "function",
"function": {
"name": "get_demo_status",
"description": "Return a fixed status for a local compatibility test.",
"parameters": {
"type": "object",
"properties": {},
"additionalProperties": False,
},
},
}
]
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Check the demo status."}],
tools=tools,
tool_choice="auto",
max_tokens=128,
)
print(response.choices[0].message.tool_calls)
یک مدل ممکن است پاسخ متن معتبری برگرداند در حالی که فراخوانی ابزارها به دلیل تبدیل ساختار، پارامترهای غیرپذیرفته یا رفتار خاص کلاینت شکست میخورد. هرگز پارامترهای برگردانده شده را در یک سیستم تولیدی بدون تأیید ساختار و اضافه کردن کنترلهای مجوز و ثبت فعالیت اجرا نکنید.
مسیرهای سازگار با OpenAI و Anthropic
ECAIX برای کلاینتهای مختلف، سطح سازگاری متفاوتی را برای ارائه میدهد:
| کلاینت یا کاربری | مسیر مستندات | چه باید بررسی کنید |
|---|---|---|
| SDK پایتون/Node OpenAI | /api/ai/v1 | کامل کردن مکالمهها، پاسخها، استریم و ابزارها |
| کلاینت Anthropic | /api/ai/v1/anthropic | فیلدهای پیامها، سرورها و بلوکهای محتوای خاص |
| کاربری سوم با کد کلاود | /api/ai/v1/anthropic | رفتار خاص ارائه دهنده؛ پشتیبانی رسمی Anthropic نیست |
قبل از انتخاب مسیر، مستندات Chat Completions، Responses، و Anthropic Messages را مطالعه کنید. یک مدل ID ممکن است بر روی هر سطح سازگاری، فیلدهای یا رفتار مشابهی را ارائه ندهد.
جزئیات مدل فعلی
برای بررسی قابلیتها و دسترسی، از صفحات جزئی زنده استفاده کنید:
این صفحات از یک مقاله استاتیک برای اطلاعات مدل فعلی، طول متن و لینکهای قیمت بیشتر قابل اعتمادتر هستند.
خطاها رایج
| وضعیت یا نشانه | علت احتمالی | عمل تشخیصی |
|---|---|---|
401 | کلید یا توکن بیاعتبار | بررسی کنید که آیا سرور، متغیر محیط و وضعیت کلید صحیح است |
403 | کلید یا حساب مجوز ندارد | بررسی کنید که آیا دسترسی حساب و دسترسی به مدل وجود دارد |
404 | آدرس پایگاه داده یا مسیر اشتباه | برای تست curl مستقیم، از /api/ai/v1/chat/completions استفاده کنید |
400 | بدنه اشتباه یا پارامتر غیرپذیرفته | فیلدهای اختیاری را حذف کنید و با بدنه کوچکتر دوباره تلاش کنید |
429 | محدودیت سرعت یا کoti | سرورها را ثبت کنید، کندتر شوید و محدودیتهای حساب را بررسی کنید |
5xx | شکست درگاه یا سرور بالا | زمان و شناسه پاسخ را ذخیره کنید و بر اساس سیاست خود دوباره تلاش کنید |
| مدل یافت نشد | خطا، مدل حذف شده یا مشکل مسیر | از /models کپی کنید |
| متن کار میکند، اما ابزارها شکست میخورند | مشکل در ساختار ابزار یا عدم پشتیبانی مدل | یک تابع بی خطر را تست کنید و پارامترهای برگردانده شده را بررسی کنید |
| SDK با curl متفاوت رفتار میکند | تنظیمات SDK یا ساخت مسیر | کد تنظیمات درخواست SDK را چاپ کنید و مسیرها را مقایسه کنید |
چک لیست امنیتی و تولیدی
قبل از انتقال به فراتر از یک پروژه تست، مطمئن شوید:
- کلیدهای API در سرور ذخیره شده و میتوان آنها را چرخانید.
- پرس و جوها و پاسخها حاوی اطلاعات محرمانه یا دادههای مشتری نباشند.
- درگاه درخواستها را ثبت میکند و چقدر زمان نگهداری میکند، را درک کنید.
- دسترسی به مدل و قیمتها از صفحات زنده بررسی شدهاند.
- زمانبندی، بازگردانیها، ایدمپتانس و محدودیتهای سرعت توسط برنامه شما مدیریت میشوند.
- قطعهای استریم باعث ایجاد کارهای تکراری نشوند.
- فراخوانی ابزارها دارای لیستهای مجاز، تأیید، مجوز و ثبت فعالیت هستند.
- شرایط ارائه دهنده و درگاه اجازه کاربری شما را برای ارسال کاربری برنامه میدهند.
ثبت ادغام قبل از انتشار
نوشته شده که تاریخ، نسخه کلاینت،