เชื่อมต่อ Open WebUI กับ custom OpenAI-compatible endpoint

Updated 2026-07-29

Open WebUI ปฏิบัติกับการเชื่อมต่อแบบ OpenAI-compatible เป็นการตั้งค่า admin ชั้นหนึ่ง: เพิ่ม connection ใต้ Admin Settings ด้วย https://api.apisrouter.com/v1 กับ key เดียว แล้วทุกโมเดลในแคตตาล็อกจะปรากฏใน model selector สำหรับผู้ใช้ทุกคนของคุณ อยู่เคียงข้างกับสิ่งที่รันในเครื่อง

คำตอบสั้น ๆ: connection เดียวใน Admin Settings

ในฐานะ admin เปิด Admin Settings ไปที่ Connections แล้วคลิกเพิ่ม connection ใต้ส่วน OpenAI API สองฟิลด์ที่สำคัญ: URL ตั้งเป็น https://api.apisrouter.com/v1 และ API key บันทึกแล้ว Open WebUI จะ query รายการ /v1/models ของ endpoint เพื่อเติม model selector ยืนยันด้วยปุ่มเช็กของ connection นั้น แล้วเลือก id ในแคตตาล็อกใดก็ได้ในแชทใหม่ connection ที่เพิ่มด้วยวิธีนี้ใช้ได้ทั้ง workspace: ผู้ใช้ทุกคนของ Open WebUI instance ของคุณเห็นโมเดล ขึ้นกับการควบคุมสิทธิ์เข้าถึงโมเดลที่คุณตั้งไว้ ค่าเดียวกันนี้ตั้งเป็น environment variable ตอน deploy ได้แทน คือ OPENAI_API_BASE_URL และ OPENAI_API_KEY ซึ่งเป็นเส้นทางที่สะอาดกว่าเมื่อ instance ถูก provision ด้วยไฟล์ compose แทนที่จะคลิกตั้งค่าเอง

URL:      https://api.apisrouter.com/v1
API Key:  sk-YOUR-APISROUTER-KEY

Save → models auto-populate from /v1/models
(optional) Model IDs allowlist to curate the selector

Open WebUI ใช้ OpenAI connection อย่างไร

Open WebUI (มีดาวบน GitHub ราว 145K) คือ front end แชท AI แบบ self-hosted ที่เป็นค่าเริ่มต้นของหลายคน: web client ที่ครบฟีเจอร์พร้อมผู้ใช้และสิทธิ์, RAG กับ knowledge collection, tool calling และการจัดการโมเดล จับคู่แบบคลาสสิกกับ Ollama สำหรับโมเดลในเครื่อง แต่ก็คุยกับ API ระยะไกลได้ดีพอ ๆ กัน โมเดล connection ของมันเป็นแบบเพิ่มเติม ส่วน Ollama ครอบคลุม runtime ในเครื่อง ส่วน OpenAI API ครอบคลุม endpoint ใดก็ตามที่พูดสำเนียง chat-completions มาตรฐาน และคุณเพิ่ม connection ได้หลายอันเคียงข้างกัน แต่ละ connection มีรายการโมเดลของตัวเองส่งเข้า selector ร่วม แต่ละอันมี key ของตัวเอง และแต่ละอัน toggle ปิดได้โดยไม่ต้องลบการตั้งค่าทิ้ง request แบก model id เป็นสตริงธรรมดาไปยัง connection ที่เสิร์ฟมัน การออกแบบแบบนี้หมายความว่า gateway connection ไม่แทนที่อะไรเลย: โมเดลในเครื่องของคุณยังรันผ่าน Ollama ต่อไปโดยไม่มีต้นทุนต่อ token ในขณะที่ claude-sonnet-4-6, gpt-5.5, gemini-3.5-flash และ deepseek-v4-pro กลายเป็น entry ใน selector สำหรับบทสนทนาที่ต้องการคุณภาพระดับ frontier key เดียวครอบคลุมทั้งหมด และ usage ฝั่ง admin ยังอ่านง่าย เพราะ traffic ฝั่ง cloud ออกผ่านจุดเดียวเป๊ะ ๆ

ตั้งค่าตอน deploy: environment variable

สำหรับ deployment แบบ docker-compose และ Kubernetes connection เป็นส่วนหนึ่งของ manifest ได้ OPENAI_API_BASE_URL รับ endpoint และ OPENAI_API_KEY รับ key instance จะเปิดมาพร้อม connection ที่มีอยู่แล้ว รองรับหลาย endpoint ผ่านรูปพหูพจน์ (OPENAI_API_BASE_URLS และ OPENAI_API_KEYS ด้วยค่าคั่นด้วย semicolon) ถ้าคุณรันแหล่งระยะไกลมากกว่าหนึ่งแห่ง ข้อสังเกตด้านปฏิบัติการสองอย่าง อย่างแรก ค่าที่ตั้งผ่าน UI จะถูกเก็บถาวรใน database ของ Open WebUI และมีความสำคัญเหนือกว่าค่าเริ่มต้นจาก environment หลัง boot ครั้งแรก ซึ่งเป็นพฤติกรรมที่มีเอกสารรองรับที่มักทำให้ operator ที่เปลี่ยน env แล้วไม่เห็นอะไรเกิดขึ้นแปลกใจอยู่เรื่อย ๆ ปรับ connection ใน Admin Settings แทน หรือตั้ง ENABLE_PERSISTENT_CONFIG=false ถ้าคุณต้องการให้ environment เป็นตัวหลักตลอด อย่างที่สอง ถ้ารายการโมเดลของ endpoint ใหญ่มาก ใช้ allowlist Model IDs ของ connection เพื่อคัดสรรสิ่งที่ผู้ใช้เห็น selector สี่รายการถูกใช้งานจริง selector สองร้อยรายการถูก scroll ผ่านไป ข้อสังเกตเรื่องเวอร์ชัน: ถ้อยคำในเมนูเปลี่ยนไปตามจังหวะ release ที่เร็วของโปรเจกต์ (Settings เทียบกับ Admin Settings, ชื่อ section ภายใน Connections) ดังนั้นบน build เก่า ให้หาคู่ OpenAI API base URL กับ key ไม่ว่า connection จะอยู่ที่ไหน

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    environment:
      - OPENAI_API_BASE_URL=https://api.apisrouter.com/v1
      - OPENAI_API_KEY=sk-YOUR-APISROUTER-KEY
    ports:
      - "3000:8080"

เลือกโมเดลสำหรับพื้นที่ทำงานหลายผู้ใช้

เพราะโมเดล cloud ทุกตัวเก็บเงินผ่าน key เดียว การทดสอบ A/B เป็นแค่การเลือกใน selector รันงานของทีมเดียวกันห่างกันสองสัปดาห์บนสองตัวเลือกค่าเริ่มต้น แล้วให้มุมมอง usage ต่อโมเดลใน console ของ APIsRouter ตัดสิน ต่อโมเดลและต่อวัน แทนที่จะเดาจาก benchmark

  • การเลือกโมเดลเริ่มต้นทำงานหนักที่สุดใน instance ที่ใช้ร่วมกัน claude-haiku-4-5-20251001 หรือ gemini-3.5-flash เป็นค่าเริ่มต้นของ workspace ทำให้ต้นทุนต่อบทสนทนาของการใช้งานทั่วไปคงที่
  • claude-sonnet-4-6 และ gpt-5.5 ควรอยู่ใน selector สำหรับการร่าง, การวิเคราะห์ และคำถามเรื่องโค้ด ผู้ใช้จะยกระดับเมื่อจ้องานคุ้มค่า
  • pipeline RAG คูณ input token: คำตอบแต่ละอันแบก chunk ที่ดึงมาไปด้วย deepseek-v4-pro คุ้มค่าที่จะทดสอบเป็นตัวขับเคลื่อน RAG ที่การจัดการ context ยาวต่อ token ที่ใช้เป็นคุณสมบัติเด็ด
  • เก็บเนื้อหาที่เป็นส่วนตัวจริง ๆ ไว้บนโมเดลในเครื่องผ่าน Ollama แล้ว route ที่เหลือทั้งหมดผ่าน gateway selector รองรับทั้งสองเลนอย่างตรงไปตรงมา
  • ใช้ allowlist Model IDs เป็นนโยบาย: สิ่งที่ไม่อยู่ใน selector ไม่มีทางทำให้คุณประหลาดใจใน usage log

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

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

โมเดลราคาทางการราคาของเรา
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
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

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

ไม่มีโมเดลปรากฏหลังเพิ่ม connection คือรายงานที่พบบ่อยที่สุด สาเหตุเรียงลำดับ: key ล้มเหลวเมื่อเทียบกับ /v1/models (เช็กด้วยปุ่มยืนยันของ connection), URL ขาด suffix /v1 หรือ toggle ของ connection ปิดอยู่ Open WebUI สร้าง selector จากสิ่งที่รายการคืนมา ดังนั้น selector ที่ว่างเปล่าหมายความว่าการเรียกรายการล้มเหลวหรือคืนค่าว่าง การเปลี่ยน environment ที่ดูเหมือนถูกเมิน คือกฎ persistent-config ที่กล่าวไว้ข้างต้น: หลัง boot ครั้งแรก database ชนะ environment สำหรับ setting ที่ UI จัดการ แก้ connection ใน Admin Settings แทน หรือปิด persistent config อย่างชัดเจน โมเดลที่อยู่ในรายการแต่ error ตอนแชท มักเป็น id ที่รายการเปิดเผยแต่ key ของคุณใช้ไม่ได้ หรือการพิมพ์ผิดที่เกิดจากการแก้ allowlist Model IDs ด้วยมือ เทียบกับ output ดิบของ /v1/models และแยกเลนให้ชัดตอน debug: ปัญหา connection ของ Ollama กับปัญหา connection ของ OpenAI ดูเหมือนกันจากหน้าต่างแชท หน้า Connections แสดงว่าโมเดลไหนอยู่เลนไหน ทดสอบเลนที่ล้มเหลวโดยตรงก่อนสรุปว่า instance ทั้งหมดล่ม

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

  • ทีมที่ self-host front end แชทเดียวให้ทุกคนและต้องการให้โมเดลระดับ frontier พร้อมใช้โดยไม่ต้องออก key ของ vendor ให้ผู้ใช้แต่ละคน
  • ผู้ใช้ Ollama ที่เก็บโมเดลในเครื่องไว้สำหรับงานส่วนตัว แต่ต้องการคุณภาพ Claude และ GPT ใน selector เดียวกันสำหรับบทสนทนาที่ต้องการมัน
  • admin ที่ต้องการให้บิล cloud อ่านง่าย: connection เดียว key เดียว และ usage log ต่อโมเดล แทนที่ใบเสร็จจากสี่ vendor
  • operator ในภูมิภาคที่การสมัคร vendor บางตัวยุ่งยาก การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาต่อ provider ออกไป
  • homelabber ที่รัน Open WebUI ให้ครัวเรือน ที่ยอดคงเหลือแบบเติมเงินล่วงหน้าเดียวคิดง่ายกว่าค่าสมาชิกใด ๆ

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

พิสูจน์ endpoint จาก server ก่อน โดยเฉพาะใน deployment แบบ container ที่ network ของ container ไม่ใช่ network ของ laptop คุณ รายการโมเดลกับ chat completion หนึ่งครั้งจากในเครื่อง host ยืนยันฝั่ง gateway ก่อนที่ Open WebUI จะเข้ามา จากนั้นเพิ่ม connection แล้วดู selector เติมเข้ามา error ยืนยันตัวตนคือฟิลด์ key selector ที่ว่างเปล่าคือการเรียกรายการ path ที่ซ้ำ (/v1/v1/...) ใน server log หมายความว่าฟิลด์ URL มี /v1 อยู่แล้วและมีอะไรบางอย่างต่อเข้าไปอีกตัว ดังนั้นอ่าน URL เป๊ะ ๆ ตามที่บันทึกไว้ เมื่อแชทไหลลื่นแล้ว console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย สำหรับ instance หลายผู้ใช้ นี่คือตัวเลขที่สำคัญที่สุด: ผู้ใช้ของคุณเลือกโมเดลไหนจริง ๆ และ workspace หนึ่งสัปดาห์เสียเงินไปเท่าไหร่จริง ๆ ต่อโมเดล ต่อวัน บนหน้าเดียว

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":"claude-haiku-4-5-20251001",
       "messages":[{"role":"user","content":"ping"}]}'

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

เพิ่ม custom OpenAI API endpoint ให้ Open WebUI อย่างไร?

ใน Admin Settings เปิด Connections แล้วเพิ่ม connection ใต้ส่วน OpenAI API: URL https://api.apisrouter.com/v1 บวก key ของคุณ บันทึกแล้ว model selector จะเติมจากรายการ /v1/models ของ endpoint ใช้ allowlist Model IDs เพื่อคัดสรรมัน

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

ต้องมี Open WebUI ต่อ path ของ route อย่าง /chat/completions เข้ากับ base URL ที่คุณให้ ดังนั้นค่าที่ถูกต้องคือ https://api.apisrouter.com/v1 suffix ที่หายไปจะปรากฏเป็นรายการโมเดลว่างเปล่า ส่วนที่ซ้ำจะปรากฏเป็น 404 /v1/v1 ใน log

รัน Ollama กับ gateway connection พร้อมกันได้ไหม?

ได้ และเป็นการตั้งค่ามาตรฐาน connection ของ Ollama กับ OpenAI API เป็นคนละ section ที่ป้อนเข้า model selector เดียวกัน ดังนั้นโมเดลในเครื่องกับ id ในแคตตาล็อกอย่าง claude-sonnet-4-6 อยู่เคียงข้างกัน แต่ละบทสนทนาเลือกเลนของตัวเอง

ทำไมการเปลี่ยน environment variable ของฉันถูกเมิน?

Open WebUI เก็บ setting ถาวรลง database หลัง boot ครั้งแรก และค่าที่เก็บถาวรมีความสำคัญเหนือกว่าค่าเริ่มต้นจาก environment แก้ connection ใน Admin Settings แทน หรือตั้ง ENABLE_PERSISTENT_CONFIG=false เพื่อให้ environment เป็นตัวหลักข้ามการ restart

ผู้ใช้ทุกคนเห็นโมเดลจาก admin connection ไหม?

connection ที่เพิ่มใน Admin Settings ใช้ได้ทั้ง workspace เป็นค่าเริ่มต้น ขึ้นกับการควบคุมสิทธิ์เข้าถึงโมเดลและ workspace ที่เวอร์ชันของคุณมี คัดสรร selector ด้วย allowlist Model IDs และการตั้งค่าสิทธิ์ต่อโมเดล แทนที่ key ต่อผู้ใช้

Open WebUI เข้าถึง Claude และ Gemini ผ่าน OpenAI connection เดียวได้ไหม?

ได้ connection พูด chat completions มาตรฐานและส่งต่อ model id เป็นสตริงธรรมดา ดังนั้น id ใดก็ตามที่ gateway เสิร์ฟใช้ได้: Claude, Gemini, DeepSeek และ id ของ GPT ทั้งหมดผ่าน URL เดียวและ key เดียว