DeepSeek API Integration Guide: OpenAI-Compatible Requests through ECAIX
การติดต่อ API DeepSeek ผ่าน ECAIX (แบบร่วมกับ OpenAI)
บทความนี้แสดงวิธีการทดสอบการใช้งาน ID ของโมเดล DeepSeek ผ่าน ECAIX โดยใช้เส้นทาง API ที่ร่วมกับ OpenAI. มันควบคุมการส่งข้อมูลที่ทำงานได้อย่างน้อย, ตัวอย่างใน Python และ curl, การยืนยัน ID ของโมเดล, การสตรีม, การผลลัพธ์ที่มีโครงสร้าง, เครื่องมือ, และเส้นทางการวินิจฉัยสำหรับข้อผิดพลาดที่พบบ่อย
บทความนี้อธิบายถึงการเข้าถึงทางประตู ECAIX ของ ID โมเดลที่เปิดเผยอยู่ในรุ่นปัจจุบันของรางวัล ECAIX. มันไม่ประกาศว่า ECAIX เป็นเส้นทาง API ที่เป็นทางการของ DeepSeek หรือว่าแต่ละเส้นทางประตูของ ECAIX ทุกตัวมีทุกฟีเจอร์ของ DeepSeek ทุกอย่าง. ตรวจสอบหน้าโมเดลในช่วงเวลาจริงและเอกสารผู้ให้บริการก่อนที่จะย้ายงานไปใช้งานในการผลิต
สิ่งที่บทความนี้ยืนยัน
ตัวอย่างใช้เส้นทาง OpenAI ที่ร่วมกับ ECAIX และ ID โมเดลที่อยู่ในรางวัลสาธารณะที่มีอยู่ในเวลาประกาศ. การมีอยู่, การจัดส่ง, จำนวนจำกัด, ค่าบริการ, และฟีเจอร์ที่สนับสนุนอาจเปลี่ยนไป. ควรใช้รางวัลและเอกสาร API เป็นแหล่งข้อมูลที่เป็นจริงในขณะนี้
การเริ่มต้นเร็ว
ใช้ขั้นตอนนี้ถ้าคุณมีแอปพลิเคชันที่ใช้ OpenAI SDK แล้ว:
- เปิดหน้า DeepSeek v4.1 Flash model page และยืนยันว่าตัวอ้างอิงอยู่ในสถานะที่สามารถใช้งานได้
- สร้าง ECAIX API key
- ตั้งค่า URL ที่ร่วมกับ OpenAI เป็น
https://ecaix.com/api/ai/v1 - คงไว้ซึ่งโค้ดและแอปพลิเคชันที่เป็นไปได้มากที่สุด
- ทำการเรียกข้อมูลขั้นพื้นฐานด้านล่าง
- เพิ่มการสตรีม, การผลลัพธ์ในรูปแบบ JSON หรือเครื่องมือเท่านั้นเมื่อการเรียกข้อมูลพื้นฐานทำงานได้
เส้นทางและ ID ของโมเดล
สำหรับลูกข้ามที่ร่วมกับ OpenAI ใช้:
URL เงื่อนไข: https://ecaix.com/api/ai/v1
โมเดล: deepseek-v4.1-flash
ตัวอ้างอิงของโมเดลไม่ใช่การประกาศที่เป็นที่น่าเชื่อถือในบทความโพสต์. ตรวจสอบใน หน้าดirectoryโมเดลในช่วงเวลาจริง ก่อนทุกครั้งที่ต้องการติดต่อใหม่หรือการปล่อยงาน. ถ้าคุณต้องการสมาชิกในครอบครัว DeepSeek ที่แตกต่างกัน คัดลอกตัวอ้างอิงที่แท้จริงจากหน้าส่วนละเอียดของโมเดลแทนที่จะคาดเดาเพิ่มเติม
การจัดรูปแบบเส้นทางก็สำคัญเช่นกัน. SDK ควรได้รับเส้นทางพื้นฐานที่สิ้นสุดที่ /v1; ลูกข้ามเพิ่ม /chat/completions หรือเส้นทางการดำเนินการอื่น ๆ ไม่ต้องเพิ่ม /chat/completions ให้กับ base_url เมื่อ SDK ได้เพิ่มมันเอง
Python ด้วย OpenAI SDK
ติดตั้งหรืออัปเดต OpenAI SDK Python ในแวดล้อมเสมือน:
python -m pip install --upgrade openai
แล้วใช้ URL เงื่อนไข 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: "กล่าวถึงการทดสอบ API ในประโยคสั้น ๆ." },
],
max_tokens: 128,
});
console.log(response.choices[0].message.content);
ใช้โค้ดบนเครื่องมือเพื่อการเรียกข้อมูล API. แอปพลิเคชันในโบรว์เซอร์ควรเรียกใช้เครื่องมือของคุณเองแทนที่จะเปิดเผยคีย์ ECAIX ใน JavaScript บนข้างล่าง
การเรียกข้อมูลด้วย curl
เมื่อ SDK ไม่ทำงาน คลองออกจากการควบคุม SDK และทดสอบเส้นทางโดยตรง. เก็บหัวข้อและร่างของข้อมูลแยกกันเพื่อแยกแยะปัญหา 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": "ตอบด้วยประโยคสั้น ๆ."}
],
"max_tokens": 128
}'
ไม่ควรแทรกข้อมูลหัวข้อที่เก็บไว้หรือการตอบสนองลงในปัญหาที่เป็นสาธารณะโดยไม่ถอนคีย์ API, ตัวอ้างอิงการเรียกข้อมูล, ข้อความ, 路径ในสาธารณะ, และข้อมูลลูกค้า
วิธีการวินิจฉัยการตอบสนอง
ใช้ลำดับต่อไปนี้:
- สถานะ HTTP: ตรวจสอบว่าการเรียกข้อมูลถึงเส้นทางที่มีอยู่อย่างถูกต้อง
- ร่างการตอบสนอง: อ่านรหัสข้อผิดพลาดของผู้ให้บริการหรือประตู
- ตัวอ้างอิงของโมเดล: คัดลอกตัวอ้างอิงที่แท้จริงจากหน้าดirectoryโมเดลในช่วงเวลาปัจจุบัน
- การรับรอง: ตรวจสอบหัวข้อคีย์, บัญชี, และสิทธิ์
- รูปแบบการเรียกข้อมูล: ลดร่างของข้อมูลลงเป็น
model,messages, และขีดจำกัดข้อมูลที่เล็กที่สุด - สนามฟีเจอร์: เพิ่มการสตรีม, JSON หรือเครื่องมืออย่างช้า ๆ
- พฤติกรรมของ SDK: 比较 SDK การเรียกข้อมูลกับการเรียกข้อมูลโดยตรงด้วย curl
การป้องกันปัญหาของลูกข้ามที่เกิดจากการจัดส่งโมเดลหรือสิทธิ์บัญชี
การตอบสนองแบบสตรีม
ถ้าอปพลิเคชันต้องการผลลัพธ์ที่เพิ่มขึ้นอย่างต่อเนื่อง เพิ่มการสตรีมเท่านั้นเมื่อการเรียกข้อมูลปกติทำงานได้:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "สรุปการลองใหม่ในสามข้อ."}],
stream=True,
max_tokens=256,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
พฤติกรรมการเกิดเหตุที่แท้จริงขึ้นอยู่กับเส้นทางและ SDK. ตรวจสอบว่าคุณรู้จักการจัดการกับ delta ที่ว่างเปล่า, เหตุการณ์การใช้งานสุดท้าย, การหยุดการเชื่อมต่อ และการสิ้นสุดแบบ [DONE]
การผลลัพธ์ที่มีโครงสร้างและ JSON
ถ้าคุณต้องการผลลัพธ์ที่สามารถอ่านได้โดยเครื่องจักร เริ่มต้นด้วยการเรียกข้อมูลปกติแล้วเพิ่มตัวเลือกที่มีโครงสร้างผลลัพธ์ที่เล็กที่สุดที่เส้นทางและโมเดลสนับสนุน. ตรวจสอบเนื้อหาที่ได้รับจากเครื่องจักร JSON ที่จริง. ข้อความที่บอกว่า "กลับคืน JSON" ไม่เท่ากับการตอบสนองที่มีการบังคับโครงสร้าง
import json
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{
"role": "user",
"content": "กลับคืนวัตถุ JSON ที่มีคีย์ชื่อและความสำคัญ."
}
],
response_format={"type": "json_object"},
max_tokens=128,
)
payload = json.loads(response.choices[0].message.content)
print(payload["title"])
การรับรองว่า response_format ถูกรับรองขึ้นอยู่กับโมเดลและเส้นทาง. ถ้าสิ่งที่เส้นทางตอบสนองมีข้อผิดพลาดที่ไม่ได้รับการสนับสนุน ลบสนามนี้ออกและตรวจสอบเอกสารการใช้เส้นทางก่อนที่จะลองรูปแบบอื่น
การเรียกใช้ฟังก์ชันและเครื่องมือ
การเรียกใช้เครื่องมือต้องการการทดสอบที่แตกต่างจากการสร้างข้อความ. เริ่มต้นด้วยฟังก์ชันที่ไม่มีอ
ส่วนผสมที่สอดคล้องกับ OpenAI และ Anthropic
ECAIX 提供พื้นผิวความสอดคล้องที่แตกต่างกันสำหรับลูกค้าหรือกระบวนการต่าง ๆ
| ลูกค้า หรือกระบวนการ | 路径ทางเอกสาร | สิ่งที่ต้องตรวจสอบ |
|---|---|---|
| SDK Python/Node ของ OpenAI | /api/ai/v1 | การสร้างคำตอบ Chat, การตอบสนอง, การสตรีม, เครื่องมือ |
| ลูกค้าที่คล้าย Anthropic | /api/ai/v1/anthropic | ส่วนประกอบของข้อความ, หัวข้อ, บล็อกเนื้อหา |
| กระบวนการ Claude Code ที่เป็นผู้สามารถภายนอก | /api/ai/v1/anthropic | พฤติกรรมที่เป็นเฉพาะผู้ให้บริการ; ไม่ใช่การสนับสนุนทางทางทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการทางการ |