เอกสาร
เริ่มต้นใช้งาน
ใช้ OpenAI SDK อยู่แล้วใช่ไหม? แค่เปลี่ยน base URL กับ key 2 บรรทัด ก็ใช้งานกับเราได้ทันที
เริ่มเร็ว
สามขั้นตอนถึง request จริง
-
สร้าง API key
อยู่ในพอร์ทัลสมาชิก หัวข้อ API keys คีย์จะแสดงให้เห็นแค่ครั้งเดียวตอนสร้าง เพราะเราเก็บไว้แค่ค่า hash เท่านั้น จึงกู้คืนหรือดูซ้ำภายหลังไม่ได้
-
ชี้ client มาที่เรา
ตั้งค่า base URL เป็น endpoint ของเรา แล้วใช้ key ของคุณเป็น API key ชื่อโมเดลดูได้จาก
GET /v1/models -
Streaming
server-sent events ทำงานตามที่คุณคาดหวังทุกประการ — token ทยอยส่งมาเรื่อย ๆ ตามที่ถูกสร้างขึ้น ไม่ใช่รวบมาส่งทีเดียวตอนจบ
ตัวอย่าง
คำขอแบบสั้นที่สุด
รูปแบบเดียวกับ OpenAI Chat Completions API — model, messages และพารามิเตอร์การสุ่มปกติทั่วไป ใส่ stream: true เพื่อเปลี่ยน response เป็น server-sent events บน endpoint เดิม
# pip install openai
from openai import OpenAI
client = OpenAI(
base_url="https://api.<your-domain>/v1",
api_key="LLMR_API_KEY",
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Sawasdee!"}],
) ไม่ต้องใช้ SDK
เรียก endpoint ได้โดยตรง
ส่ง HTTPS request มาตรง ๆ ที่ /v1/chat/completions — ใช้ได้กับภาษาไหนก็ได้ที่ยิง HTTP request ได้ ไม่ต้องพึ่ง dependency ใด ๆ
# pip install requests
import requests
response = requests.post(
"https://api.<your-domain>/v1/chat/completions",
headers={
"Authorization": "Bearer $LLMR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Sawasdee!"}],
},
)
print(response.json()) // npm install not required — fetch is built in
const response = await fetch("https://api.<your-domain>/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.LLMR_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "Sawasdee!" }],
}),
});
const data = await response.json(); curl https://api.<your-domain>/v1/chat/completions \
-H "Authorization: Bearer $LLMR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Sawasdee!"}]
}' Streaming
ตัดการเชื่อมต่อ ไม่ได้แปลว่ายกเลิกค่าใช้จ่าย
ใส่ stream: true แล้วอ่าน response เป็น server-sent events รูปแบบเดียวกับ streaming ของ OpenAI Chat Completions
- รูปแบบ
- server-sent events แบบมาตรฐาน — รูปแบบ
data:ที่ทยอยส่งและวิธีจบสตรีมเหมือนกับที่ OpenAI ใช้ทุกประการ ไม่มีการดัดแปลง - ตัดการเชื่อมต่อก่อนจบ
- token ที่สร้างไปแล้วก่อนคุณปิดการเชื่อมต่อ ยังถูกคิดเงินตามปกติ คำขอที่ถูกตัดกลางคันจะวัดการใช้งานเหมือนคำขอที่เสร็จสมบูรณ์
ข้อผิดพลาด
หน้าตาของคำขอที่ล้มเหลว
ทุก error จะตอบกลับเป็น {"detail": "<ข้อความ>"} — ซึ่งแบนกว่า object error แบบซ้อนของ OpenAI โค้ดจัดการ error ที่เขียนไว้สำหรับ OpenAI จึงอาจต้องปรับเล็กน้อย
- 401
- คีย์หายไป ไม่รู้จัก หรือถูกเพิกถอนแล้ว
- 402
- ยอดเงินในบัญชีไม่พอสำหรับคำขอนี้ ข้อความจะระบุยอดคงเหลือเป็นเงินบาท
- 403
- องค์กรถูกระงับการใช้งาน หรือ คีย์ที่ใช้เป็น operator/master key ซึ่งไม่สามารถเรียกเก็บเงินสำหรับ inference ได้
- 503
- ระบบเก็บคีย์ภายในของเราเข้าถึงไม่ได้ เราเลือก fail closed แทนที่จะปล่อยให้คีย์ที่ตรวจสอบไม่ได้ผ่านเข้ามา
ยังไม่มีการบังคับใช้ rate limit กับคำขอ API
ข้อจำกัดจำนวนคำขอต่อคีย์มีแผนจะทำในเฟสถัดไป ยังไม่เปิดใช้งานจริงวันนี้ การจำกัดอัตราเดียวที่มีอยู่ในระบบตอนนี้ ใช้เพื่อปกป้องหน้าล็อกอินของพอร์ทัลสมาชิกจากการเดารหัสซ้ำ ๆ เท่านั้น ไม่เกี่ยวกับการเรียก /v1/chat/completions แต่อย่างใด
Region
คำขอจะไม่มีวันออกนอกขอบเขตที่คุณเลือกไว้โดยไม่บอกกล่าว
แต่ละคีย์จะมี routing policy กำกับไว้ ตั้งค่าครั้งเดียวแล้วบังคับใช้กับทุกคำขอ
- strict (เข้มงวด)
- เก็บคำขอไว้ในภูมิภาคที่ใกล้ที่สุด และเข้าคิวรอแทนที่จะส่งออกไปไกลกว่านั้น
- regional (ตามภูมิภาค)
- ยอม overflow ไปยังพื้นที่ในขอบเขตกรุงเทพฯ–โตเกียว เมื่อภูมิภาคที่ใกล้ที่สุดไม่ว่าง
- available (ทุกภูมิภาค)
- ต้องเปิดใช้เองเท่านั้น อนุญาตให้ส่งคำขอไปยังที่ใดก็ได้ที่มีโมเดลให้บริการ เพื่อลดความเสี่ยงการเข้าคิว