เอกสาร

เริ่มต้นใช้งาน

ใช้ OpenAI SDK อยู่แล้วใช่ไหม? แค่เปลี่ยน base URL กับ key 2 บรรทัด ก็ใช้งานกับเราได้ทันที

เข้ากันได้กับ OpenAI เปลี่ยนแค่ 2 บรรทัด SSE streaming

เริ่มเร็ว

สามขั้นตอนถึง request จริง

  1. สร้าง API key

    อยู่ในพอร์ทัลสมาชิก หัวข้อ API keys คีย์จะแสดงให้เห็นแค่ครั้งเดียวตอนสร้าง เพราะเราเก็บไว้แค่ค่า hash เท่านั้น จึงกู้คืนหรือดูซ้ำภายหลังไม่ได้

  2. ชี้ client มาที่เรา

    ตั้งค่า base URL เป็น endpoint ของเรา แล้วใช้ key ของคุณเป็น API key ชื่อโมเดลดูได้จาก GET /v1/models

  3. Streaming

    server-sent events ทำงานตามที่คุณคาดหวังทุกประการ — token ทยอยส่งมาเรื่อย ๆ ตามที่ถูกสร้างขึ้น ไม่ใช่รวบมาส่งทีเดียวตอนจบ

ตัวอย่าง

คำขอแบบสั้นที่สุด

รูปแบบเดียวกับ OpenAI Chat Completions API — model, messages และพารามิเตอร์การสุ่มปกติทั่วไป ใส่ stream: true เพื่อเปลี่ยน response เป็น server-sent events บน endpoint เดิม

python
# 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())

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 (ทุกภูมิภาค)
ต้องเปิดใช้เองเท่านั้น อนุญาตให้ส่งคำขอไปยังที่ใดก็ได้ที่มีโมเดลให้บริการ เพื่อลดความเสี่ยงการเข้าคิว

พร้อมยิง request จริงแล้ว

สร้างคีย์แล้วเช็คราคาต่อโมเดลก่อนเริ่มใช้จริง