รัน LobeChat บน custom OpenAI-compatible endpoint

Updated 2026-07-29

module provider ของ LobeChat รับ service แบบ OpenAI-compatible ใดก็ได้: สร้าง custom provider ด้วยประเภท OpenAI SDK ตั้ง endpoint เป็น https://api.apisrouter.com/v1 วาง key เดียว แล้ว fetch รายการโมเดล id ของ Claude, GPT, Gemini และ DeepSeek จะไปอยู่ใน model picker ของทุก assistant

คำตอบสั้น ๆ: custom provider เดียว endpoint เดียว key เดียว

เปิดการตั้งค่า LobeChat แล้วไปที่ส่วน AI service provider (label เป็น AI Service Provider หรือ Language Model แล้วแต่เวอร์ชัน) เพราะ module การจัดการ provider มาตั้งแต่ v1.44 คุณสร้าง custom provider ได้เลยแทนที่จะพ่วงไปกับ entry OpenAI ที่มีมาให้: เพิ่ม provider ตั้ง id และชื่อที่แสดง (apisrouter / APIsRouter) เลือกประเภท OpenAI SDK แล้วกรอก API key กับ endpoint proxy URL เป็น https://api.apisrouter.com/v1 ในรายการโมเดลของ provider นั้น ใช้ action fetch-models เพื่อดึงทุก id ที่ endpoint เสิร์ฟผ่าน /v1/models เปิดตัวที่คุณต้องการ แล้วรัน connectivity check ที่มีมาให้ จากนั้น assistant หรือบทสนทนาใดก็เลือก id เหล่านั้นจาก model picker ได้ โปรเจกต์นี้อยู่ที่ lobehub/lobehub บน GitHub แล้ว (ชื่อ repo lobe-chat เดิม redirect มาที่นี่) และ label ของเมนูเปลี่ยนไปตามแต่ละ release ดังนั้นยึด flow นี้ เพิ่ม provider, ประเภท SDK, URL, key, fetch เป็นส่วนที่คงที่ มากกว่ายึดถ้อยคำเป๊ะ ๆ

Provider ID:    apisrouter
Provider Name:  APIsRouter
SDK Type:       OpenAI
API Key:        sk-YOUR-APISROUTER-KEY
API Proxy URL:  https://api.apisrouter.com/v1

Model List → Fetch models → enable ids → check

LobeChat route request ไปยัง provider อย่างไร

LobeChat (มีดาวบน GitHub ราว 80K ตอนนี้อยู่ภายใต้ชื่อ LobeHub) เป็นหนึ่งใน open-source chat framework ที่ถูก deploy มากที่สุด: web client ที่ขัดเกลาแล้ว, assistant ที่มี prompt และโมเดลของตัวเอง, ระบบ plugin และ feature knowledge base ที่ deploy ได้ทั้งเป็น session ในเบราว์เซอร์หรือ self-hosted พร้อม database แต่ละ provider entry อธิบายว่า request ไปที่ไหนและพูดสำเนียง SDK ไหน custom provider ประเภท OpenAI SDK ส่ง request chat-completions มาตรฐานไปที่ proxy URL ของคุณโดย model id เป็นสตริงธรรมดา ซึ่งเป็นรูปทรงที่ gateway หลาย vendor คาดหวังพอดี หนึ่ง entry จึงแบกทั้งแคตตาล็อกได้: assistant สามารถ pin claude-sonnet-4-6 สำหรับงานที่ต้องระมัดระวัง ในขณะที่บทสนทนาเร็ว ๆ รัน gemini-3.5-flash โดยไม่ต้องมีบัญชีที่สองที่ไหนเลย endpoint URL มีข้อสังเกตที่มีเอกสารรองรับหนึ่งอย่างที่คุ้มค่าจะพูดถึง: URL ต้องมี suffix /v1 หรือไม่ขึ้นอยู่กับ service ที่อยู่เบื้องหลัง LobeChat ต่อ path ของ route อย่าง /chat/completions เข้ากับ base ที่คุณให้ ดังนั้นสำหรับ APIsRouter ค่าที่ถูกต้องคือ https://api.apisrouter.com/v1 อาการที่มีเอกสารระบุของ suffix ที่หายไปคือโมเดลคืนคำตอบว่างเปล่าตอนทดสอบ ถ้าคุณเห็นแบบนั้น เพิ่ม /v1 แล้วลองใหม่

Self-hosting: เส้นทางแบบ environment variable

ถ้าคุณ deploy LobeChat เอง การ routing แบบเดียวกันสามารถมาพร้อม container ได้เลยแทนที่จะคลิกตั้งค่าใน UI คู่คลาสสิกที่ override provider OpenAI ที่มีมาให้: OPENAI_API_KEY รับ gateway key และ OPENAI_PROXY_URL รับ https://api.apisrouter.com/v1 ผู้ใช้ทุกคนของ deployment นั้นจะได้รับ endpoint นี้โดยไม่ต้องแตะการตั้งค่าเลย การมองเห็นโมเดลควบคุมด้วย syntax ของ model-list: OPENAI_MODEL_LIST รับ +id เพื่อเพิ่ม, -id เพื่อซ่อน และ id=Display Name เพื่อเปลี่ยนชื่อ โดย entry คั่นด้วย comma การเริ่มค่าด้วย -all จะล้างรายการที่มีมาให้ทั้งหมด เหลือแค่ id ที่คุณระบุชัดเจน ซึ่งเป็นรูปทรงที่สะอาดสำหรับ deployment ที่คัดสรรไว้ server build ใหม่ ๆ ยังมีเอกสารเกี่ยวกับตระกูล CUSTOM_PROVIDER_* (count, id, name, type, base URL, key) สำหรับประกาศ custom provider เต็มรูปแบบตอน deploy ตรงกับสิ่งที่ module UI ทำ เช็ก environment-variable reference ปัจจุบันสำหรับเวอร์ชันของคุณก่อนพึ่งพามัน เพราะ surface นี้ใหม่กว่าคู่ OPENAI_* และยังเปลี่ยนแปลงอยู่

OPENAI_API_KEY=sk-YOUR-APISROUTER-KEY
OPENAI_PROXY_URL=https://api.apisrouter.com/v1
OPENAI_MODEL_LIST=-all,+claude-sonnet-4-6=Claude Sonnet 4.6,+gpt-5.5,+gemini-3.5-flash,+deepseek-v4-pro

เลือกโมเดลสำหรับ assistant

เพราะ assistant ทั้งหมดเก็บเงินผ่าน key เดียว การเปรียบเทียบโมเดลเป็นแค่การเปลี่ยนการตั้งค่าของ assistant pin สองตัวเลือกไว้ใน assistant คู่ที่ซ้ำกัน รัน prompt จริงของคุณเป็นเวลาหนึ่งสัปดาห์ แล้วอ่านค่าใช้จ่ายต่อโมเดลใน console ของ APIsRouter ควบคู่กับคุณภาพคำตอบที่คุณสังเกตได้

  • assistant คือการ pin โมเดลตาม role assistant สำหรับงานเขียนบน claude-sonnet-4-6, assistant ตอบเร็วบน claude-haiku-4-5-20251001 และ assistant วิจัยบน gpt-5.5 อยู่ร่วมกันได้หลัง provider entry เดียว
  • gemini-3.5-flash เป็นตัวเลือกด้านความไวสำหรับโมเดลเริ่มต้นของบทสนทนา เทิร์นส่วนใหญ่ใน chat framework สั้นและเร็ว โมเดลที่เร็วทำให้ UI รู้สึกไวทันที
  • deepseek-v4-pro คุ้มค่ากับตำแหน่งสำหรับบทสนทนาหลายภาษายาว ๆ และการสรุปหนัก ๆ ที่พฤติกรรม long-context ต่อ token ที่ใช้เป็นจุดดึงดูด
  • บทสนทนาที่มีรูปภาพต้องการ id ที่รองรับ vision พร้อมเปิด capability ในการตั้งค่าโมเดลของ provider LobeChat เปิด toggle capability ต่อโมเดลไว้ใน module provider
  • เปิดใช้ picker สองระดับอย่างตั้งใจ id ที่เร็วหนึ่งตัวและ id ระดับ frontier หนึ่งตัว แล้วเพิ่มอีกเฉพาะเมื่อ assistant จริงต้องการมัน โมเดลที่เปิดใช้ทุกตัวคือหนึ่งแถวที่ผู้ใช้ต้อง scroll

จ่ายตามการใช้งาน · ถูกกว่าราคาทางการ

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

โมเดลราคาทางการราคาของเรา
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M

รูปแบบความล้มเหลวเฉพาะของ LobeChat

คำตอบว่างเปล่าตอน connectivity check คือสัญญาณที่มีเอกสารระบุของปัญหา base-URL suffix เพิ่มหรือลบ /v1 (สำหรับ APIsRouter ต้องมี) แล้วลองใหม่ก่อนจะ debug อะไรลึกกว่านั้น โมเดลหายไปจาก picker ของ assistant ปกติหมายความว่าถูก fetch มาแล้วแต่ไม่ได้เปิดใช้ในรายการโมเดลของ provider หรือ toggle ของ provider เองปิดอยู่ ทั้งสองอย่างอยู่ในหน้าตั้งค่าเดียวกับ action fetch บน deployment แบบ self-hosted จำ precedence ไว้: environment variable ตั้งค่าเริ่มต้นฝั่ง server ในขณะที่ผู้ใช้ยังกรอกการตั้งค่า provider ของตัวเองฝั่ง client ได้ ขึ้นกับ auth และ feature flag ของ deployment ของคุณ ถ้า deployment เมิน OPENAI_PROXY_URL ของคุณ ยืนยันว่า container restart จริงพร้อม environment ใหม่แล้ว และ client session ไม่ได้ override มันแบบ local ความเบี่ยงเบนของเวอร์ชันเป็นเรื่องจริงที่นี่: โครงสร้าง settings ถูกจัดใหม่มากกว่าหนึ่งครั้ง (Language Model จากนั้น AI Service Provider โดย module provider มาถึงใน v1.44) และภาพหน้าจอจาก tutorial เก่าจะไม่ตรงกับเมนูปัจจุบัน ตัวฟิลด์เอง id, name, ประเภท SDK, URL, key ยังคงที่

ใครที่ใช้ LobeChat ผ่าน gateway

  • ผู้ self-host LobeChat ให้ทีมและต้องการ endpoint เดียวใน container กับ usage log เดียวสำหรับทุกคน แทนที่จะเป็น key vendor ต่อผู้ใช้
  • power user ของ assistant ที่ pin vendor ต่างกันตาม role Claude สำหรับงานเขียน, GPT สำหรับการวิเคราะห์, DeepSeek สำหรับปริมาณมาก โดยไม่ต้องดูแลบัญชีสำหรับแต่ละตัว
  • ผู้ใช้ที่ต้องการโมเดลที่รายการ provider ที่มีมาให้ไม่มี เปิดใช้ได้ด้วยการ fetch แคตตาล็อกของ gateway แทนที่จะรอ release จากต้นทาง
  • นักพัฒนาที่ไม่มีทางเข้าถึงระบบเก็บเงินของ vendor รายใดรายหนึ่ง การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาการสมัครต่อ provider ออกไป
  • คนที่ route editor, launcher หรือเครื่องมือ CLI ผ่าน gateway อยู่แล้ว และต้องการให้ chat framework ของตัวเองใช้ key เดียวกัน

ตรวจสอบ endpoint และ debug บทสนทนาแรก

Curl รายการโมเดลก่อนแล้วเปิด output ไว้ มันคือการสะกดที่ถูกต้องสำหรับทุก id ที่คุณเปิดใช้ ไม่ว่าจะโดยการ fetch หรือด้วยมือ จากนั้นรัน chat completion หนึ่งครั้งกับ id ที่คุณวางแผนจะตั้งเป็นค่าเริ่มต้น ใน LobeChat ทำ connectivity check ก่อนบทสนทนาจริง error ยืนยันตัวตนชี้ไปที่ฟิลด์ key คำตอบว่างเปล่าชี้ไปที่ suffix /v1 error not-found บนโมเดลใดโมเดลหนึ่งหมายความว่า id ที่เปิดใช้ไม่ตรงกับรายการ ซึ่งมักเกิดหลังแก้ชื่อที่แสดงกับ id ด้วยมือพร้อมกัน เมื่อบทสนทนาไหลลื่นแล้ว console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย chat framework ที่มี assistant สร้าง traffic ข้ามหลายโมเดลพร้อมกัน และมุมมอง usage ต่อ key คือที่ที่พฤติกรรมของแต่ละ assistant กลายเป็นต้นทุนที่คุณเห็นได้ ต่อโมเดล ต่อวัน

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

curl -s https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $APISROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemini-3.5-flash",
       "messages":[{"role":"user","content":"ping"}]}'

คำถามที่พบบ่อย

เพิ่ม custom OpenAI-compatible provider ให้ LobeChat อย่างไร?

ในการตั้งค่า เปิดส่วน AI service provider แล้วสร้าง custom provider: id และชื่อที่แสดง, ประเภท SDK OpenAI, endpoint https://api.apisrouter.com/v1 และ key ของคุณ fetch รายการโมเดล เปิดใช้ id ที่ต้องการ แล้วรัน connectivity check

endpoint URL ต้องมี /v1 ไหม?

สำหรับ APIsRouter ต้องมี: https://api.apisrouter.com/v1 LobeChat ต่อ route อย่าง /chat/completions เข้ากับ base ที่คุณให้ และเอกสารของมันระบุว่า suffix ที่ผิดมักปรากฏเป็นคำตอบว่างเปล่าตอนทดสอบ ถ้าคุณเห็นแบบนั้น แก้ suffix แล้วลองใหม่

OPENAI_PROXY_URL คืออะไร และใช้เมื่อไหร่?

มันคือ environment variable สำหรับ self-hosting ที่ชี้ provider OpenAI ที่มีมาให้ของ LobeChat ไปยัง base URL อื่น ตั้งมันคู่กับ OPENAI_API_KEY ใน container แล้วผู้ใช้ทุกคนของ deployment นั้นจะได้รับ endpoint นี้ ใช้ OPENAI_MODEL_LIST เพื่อคัดสรร id ที่แสดง

assistant ต่างกันใช้ vendor ต่างกันผ่าน provider เดียวได้ไหม?

ได้ แต่ละ assistant pin โมเดลของตัวเอง และ id เดินทางไปที่ endpoint เป็นสตริงธรรมดาในแต่ละ request provider entry เดียวเสิร์ฟ assistant ของ Claude, assistant ของ GPT และ assistant ของ DeepSeek เคียงข้างกันได้ ทั้งหมดเก็บเงินผ่าน key เดียวกัน

LobeChat กับ LobeHub เป็นโปรเจกต์เดียวกันไหม?

ใช่ โปรเจกต์เปลี่ยนชื่อแบรนด์และ GitHub repo ตอนนี้อยู่ที่ lobehub/lobehub โดยชื่อ lobe-chat เดิม redirect มา เอกสารและเมนูผสมทั้งสองชื่อระหว่างการเปลี่ยนผ่าน ซึ่งเป็นเหตุผลที่ label ของ settings ต่างกันไปตามแต่ละ release

ทำไมโมเดลที่ fetch มาไม่ปรากฏในบทสนทนา?

การ fetch แค่ลิสต์ id การเปิดใช้เป็น toggle แยกต่างหากต่อโมเดลในรายการโมเดลของ provider และตัว provider เองก็มีสวิตช์เปิดใช้ เช็กทั้งสองอย่างแล้วเปิด model picker ใหม่ ถ้า id ที่เปิดใช้แล้วยัง error ให้เทียบการสะกดกับ output ของ /v1/models