เพิ่มโมเดลจากแคตตาล็อก cloud ให้ Jan โดยไม่ทิ้ง local-first
Updated 2026-07-29
Jan ถูกออกแบบให้รันโมเดลบนเครื่องของคุณ และการตั้งค่า Model Providers ของมันรับ OpenAI-compatible endpoint ใดก็ได้สำหรับวันที่ local ไม่พอ: เพิ่ม provider ตั้ง Base URL เป็น https://api.apisrouter.com/v1 วาง key เดียว แล้ว id ของ Claude, GPT, Gemini และ DeepSeek จะมาเข้าแถวกับโมเดล local ของคุณ
คำตอบสั้น ๆ: provider เดียวใน Settings
เปิด Settings ของ Jan แล้วไปที่ Model Providers คลิกปุ่มบวกข้าง ๆ รายการ provider เพื่อเพิ่ม custom provider ตั้งชื่อ (APIsRouter) และบน build ล่าสุดให้เลือก OpenAI API format เมื่อ dialog ถาม (Jan v0.8.1 เพิ่มตัวเลือก format แบบ OpenAI-or-Anthropic; สำหรับ gateway ให้เลือก OpenAI) จากนั้นกรอกสองฟิลด์ที่สำคัญ: Base URL https://api.apisrouter.com/v1 และ API key ของคุณ เพิ่มโมเดลที่คุณต้องการตาม id: เอกสารของ Jan ระบุชัดเจนว่าฟิลด์ id ต้องตรงกับชื่อโมเดลที่ endpoint เสิร์ฟ ดังนั้นให้คัดลอก id จากรายการแคตตาล็อก (claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flash) แทนที่จะพิมพ์จากความจำ บันทึกแล้ว id จะปรากฏใน model selector เคียงข้างสิ่งที่คุณรันบนเครื่อง label เปลี่ยนไปมาระหว่างรุ่น (เวอร์ชันเก่ากว่าเรียกส่วนนี้ว่า Remote Engines) ดังนั้นให้ยึด provider, format, URL, key, models เป็นโครงที่คงที่
Name: APIsRouter
API Format: OpenAI (v0.8.1+ selector)
Base URL: https://api.apisrouter.com/v1
API Key: sk-YOUR-APISROUTER-KEY
Models: add ids that match the endpoint, e.g.
claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flashJan ปฏิบัติต่อ remote provider อย่างไร
Jan (menloresearch บน GitHub มีดาวประมาณ 44K) คือ desktop client แบบ local-first: โมเดล download มาที่เครื่องของคุณ รันผ่าน llama.cpp และทำงานออฟไลน์ได้ โดยแอปยังเปิด OpenAI-compatible server ของตัวเองที่ http://127.0.0.1:1337/v1 ให้เครื่องมืออื่นใช้ด้วย remote provider คือช่องทางที่สองที่ตั้งใจไว้ สำหรับโมเดลที่ใหญ่เกินจะรันบนเครื่อง หรืองานที่คุ้มค่ากับคุณภาพระดับ frontier custom provider แบบ OpenAI format คือคำอธิบาย endpoint แบบธรรมดา: base URL, key, model id ที่ประกาศไว้ บทสนทนากับ id เหล่านั้นออกไปเป็น chat-completions request มาตรฐานโดยมี id เป็น model string ดังนั้น gateway หลาย vendor ต้องการแค่ entry เดียว Claude สำหรับงานเขียนที่ต้องพิถีพิถัน DeepSeek สำหรับสรุปปริมาณมาก Gemini สำหรับความเร็ว key เดียวอยู่เบื้องหลังทั้งหมด ความเข้ากันเชิงปรัชญาดีกว่าที่ฟังดูตอนแรก ผู้ใช้ local-first มักตั้งใจเรื่องสิ่งที่ออกจากเครื่อง และ gateway ทำให้ช่องทางระยะไกลตั้งใจเท่ากัน: endpoint เดียวที่ต้อง firewall, usage log เดียวที่ต้องอ่าน ยอดคงเหลือเดียวที่ขยับก็ต่อเมื่อคุณเลือกส่งอะไรออกไป ไม่มีอะไรเกี่ยวกับช่องทาง local เปลี่ยนแปลง โมเดลที่ download มาแล้วยังทำงานออฟไลน์เหมือนเดิมทุกประการ
การประกาศโมเดล: สัญญาเรื่อง id
Jan ไม่ดึงแคตตาล็อกของ custom endpoint ให้คุณ; โมเดลที่คุณประกาศคือโมเดลที่คุณได้ และ id คือสัญญา การสะกดที่เชื่อถือได้มาจากรายการ /v1/models ของ gateway รวม version suffix ด้วย id ที่ประกาศแล้วเพี้ยนไปจากรายการจะเกิด error not-found ก็ต่อเมื่อโมเดลนั้นถูกเลือก ซึ่งอ่านเหมือน provider ที่กระตุกจนกว่าคุณจะเทียบสตริงกัน ประกาศอย่างตั้งใจ picker แบบ local-first ทำงานได้ดีที่สุดเมื่อแถวระยะไกลมีน้อยและมีจุดประสงค์: id ที่เร็วหนึ่งตัวสำหรับเทิร์นระยะไกลทั่วไป (gpt-5.4-mini หรือ claude-haiku-4-5-20251001) id ระดับ frontier หนึ่งตัวสำหรับงานที่คุ้มค่าออกจากเครื่อง (claude-sonnet-4-6) และผู้เชี่ยวชาญเฉพาะทางที่งานของคุณสมควรได้ (deepseek-v4-flash สำหรับสรุปหลายภาษาที่ยาว, gemini-3.5-flash เมื่อ latency คือฟีเจอร์) แต่ละแถวเพิ่มทีหลังได้ง่าย แคตตาล็อกที่วางทับทั้งหมดคือความรกที่คุณต้อง scroll ผ่านทุกวัน ถ้าคุณใช้ local API server ของ Jan เพื่อเสิร์ฟเครื่องมืออื่นด้วย ให้แยก mental model ให้ชัด: server นั้นคือ Jan ที่เป็น provider ที่ 127.0.0.1:1337/v1; custom provider entry คือ Jan ที่เป็น client ทั้งสองแยกอิสระจากกัน และการตั้งค่าอันหนึ่งไม่มีผลกับอีกอันเลย
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50
# declare these ids verbatim in the provider's model listเลือกว่าบทสนทนาไหนออกจากเครื่อง
เพราะการใช้งานระยะไกลเป็นแบบเติมเงินล่วงหน้าและมิเตอร์ต่อ key ต้นทุนของช่องทางระยะไกลคือตัวเลขที่คุณอ่าน ไม่ใช่ subscription ที่คุณเดา รันหนึ่งเดือนตามสัดส่วนจริงของคุณ แล้ว usage log จะบอกว่าการออกจากเครื่องมีค่าใช้จ่ายเท่าไหร่จริง ๆ ต่อโมเดล ต่อวัน
- เทิร์นระยะไกลทั่วไป คำถามเร็ว ๆ การเขียนใหม่ การแปล ควรอยู่ในระดับเร็ว: gpt-5.4-mini และ claude-haiku-4-5-20251001 ตอบเร็วและทำให้ยอดคงเหลือแทบไม่ขยับ
- claude-sonnet-4-6 คือขั้นที่สูงขึ้นสำหรับงานที่โมเดล local แบกไม่ไหวชัดเจน: การร่างยาวและพิถีพิถัน การรีวิวโค้ดที่ละเอียดอ่อน การวิเคราะห์ที่คุณจะส่งต่อ
- gemini-3.5-flash สมควรได้แถวของมันด้วยเรื่อง latency สำหรับเทิร์นโต้ตอบสั้น ๆ มันรู้สึกใกล้เคียงความไวของโมเดล local ที่สุด
- deepseek-v4-flash คือตัวเลือกปริมาณสำหรับสรุปเอกสารยาวที่คุณจะไม่ป้อนให้โมเดล local ตัวเล็ก
- เก็บเนื้อหาส่วนตัวไว้บนโมเดล local ทั้งหมด การแบ่งระหว่างช่องทางคือประเด็นสำคัญของการรัน Jan ตั้งแต่แรก
จ่ายตามการใช้งาน · ถูกกว่าราคาทางการ
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.4 mini | $0.75 / $4.50 per M | $0.60 / $3.60 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
รูปแบบความล้มเหลวเฉพาะของ Jan
error not-found บนโมเดลใดตัวหนึ่งคือปัญหาสัญญาเรื่อง id: id ที่ประกาศไว้ไม่ตรงกับการสะกดของ endpoint เทียบกับ output ของ /v1/models ทีละตัวอักษร Authentication failure ในทุก request คือฟิลด์ key provider ที่บันทึกได้แต่ไม่เคยตอบมักมีปัญหา Base URL: ต้องมี suffix /v1 เพราะ Jan เติม route path อย่าง /chat/completions ต่อท้าย base ที่คุณให้ และ segment ที่ซ้ำหรือขาดหายจะทำให้ 404 ถ้า provider ถูกสร้างบน build เก่ากว่า ให้เช็ก API format: v0.8.1 เพิ่มตัวเลือก OpenAI-or-Anthropic และ gateway entry ที่ตั้งเป็น Anthropic format โดยบังเอิญจะพูดผิดภาษากับ endpoint /v1/chat/completions และจำไว้ว่าคุณกำลัง debug ช่องทางไหน ความล้มเหลวของโมเดล local (VRAM, quantization, การตั้งค่า llama.cpp) กับความล้มเหลวระยะไกล (URL, key, id) แชร์หน้าต่างแชทกันแต่ไม่มีอะไรร่วมกันอีก model selector แสดงว่าบทสนทนาที่ล้มเหลวอยู่ช่องทางไหนก่อนที่คุณจะดึงเส้นด้ายผิด
ใครที่เพิ่มช่องทาง gateway ให้ Jan
- ผู้ใช้ local-first ที่บางครั้งต้องการคุณภาพระดับ frontier และต้องการช่องทางนาน ๆ ครั้งนั้นบนยอดคงเหลือแบบเติมเงินล่วงหน้ามากกว่า subscription vendor
- นักพัฒนาบนเครื่องที่รันโมเดล local ขนาดใหญ่ได้ไม่ดี ใช้ Jan เป็น interface และ gateway เป็นตัวรับภาระหนัก
- ผู้ใช้ที่ตั้งใจเรื่องความเป็นส่วนตัวที่ต้องการ remote endpoint เดียวให้คิดตาม, firewall และตรวจสอบ แทนที่จะเป็นหนึ่งอันต่อ vendor
- คนที่เปรียบเทียบ output ระหว่าง local กับ cloud บนงานจริง ที่ผู้เข้าแข่งขันระยะไกลเป็นแค่แถวที่ประกาศไว้ ไม่ใช่บัญชีใหม่
- นักพัฒนาที่ไม่มีสิทธิ์เข้าถึงระบบเก็บเงินของ vendor รายหนึ่ง การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาการสมัครต่อ provider ออกไป
ตรวจสอบ endpoint และ debug เทิร์นระยะไกลแรก
Curl รายการโมเดลและ chat completion หนึ่งครั้งก่อน; เมื่อทั้งสองผ่าน ที่เหลือทั้งหมดอยู่ใน provider entry สิ่งนี้ยังให้การสะกด id เป๊ะ ๆ ที่คุณต้องประกาศด้วย ข้างใน Jan ส่งข้อความสั้น ๆ หนึ่งครั้งบน remote id ที่เร็ว Authentication error คือ key; not-found คือ id; ความเงียบหรือ 404 คือรูปร่างของ Base URL ถ้าช่องทางระยะไกลทำงานได้แต่รู้สึกช้าบน id ระดับ frontier นั่นคือ latency ของโมเดล ไม่ใช่ปัญหาการตั้งค่า reasoning model ใช้เวลาของมันในเทิร์นยาว ๆ เมื่อเทิร์นระยะไกลไหลลื่นแล้ว console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย สำหรับผู้ใช้ local-first log นี้อ่านสนุกเป็นพิเศษ: มันคือบันทึกครบถ้วนของทุกอย่างที่เคยออกจากเครื่อง ต่อโมเดล ต่อวัน โดยช่องทาง local มีส่วนร่วมในนั้นเป็นศูนย์
curl -s https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer $APISROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4-mini",
"messages":[{"role":"user","content":"ping"}]}'คำถามที่พบบ่อย
ฉันจะเพิ่ม custom OpenAI-compatible provider ให้ Jan อย่างไร?
Settings, Model Providers แล้วปุ่มบวกเพื่อเพิ่ม provider ตั้งชื่อ เลือก OpenAI API format บน build ที่ถาม (v0.8.1+) ตั้ง Base URL https://api.apisrouter.com/v1 วาง key ของคุณ แล้วประกาศ model id ที่ตรงกับรายการของ endpoint
ทำไมโมเดลที่ฉันประกาศไว้คืนค่า not-found?
Jan ส่ง id ที่ประกาศไว้ตรงตัวเป็น model string และเอกสารของมันต้องการให้ id ตรงกับชื่อโมเดลของ endpoint เป๊ะ ๆ ดึงรายการ /v1/models แล้วคัดลอกการสะกด รวม version suffix แทนการพิมพ์ id จากความจำ
การเพิ่ม remote provider เปลี่ยนวิธีที่โมเดล local ทำงานไหม?
ไม่เปลี่ยน โมเดล local ยังรันบนเครื่องผ่าน llama.cpp รวมถึงตอนออฟไลน์ provider entry เพิ่มช่องทางระยะไกลแยกให้ selector และบทสนทนาจะแตะเครือข่ายก็ต่อเมื่อคุณเลือก id ระยะไกล
Base URL ควรมี /v1 ไหม?
ใช่: https://api.apisrouter.com/v1 Jan เติม route อย่าง /chat/completions ต่อท้าย base ที่คุณตั้งค่าไว้ ดังนั้น /v1 ที่ขาดหายจะ 404 และที่ซ้ำก็ด้วยเช่นกัน ถ้า request ล้มเหลว อ่าน URL ที่ประกอบขึ้นใน error ก่อนแก้ไขอย่างอื่น
Jan เข้าถึง Claude และ Gemini ผ่าน provider entry เดียวได้ไหม?
ได้ ใน OpenAI format model id เดินทางเป็นสตริงธรรมดา ดังนั้น claude-sonnet-4-6, gemini-3.5-flash, gpt-5.4-mini และ deepseek-v4-flash ล้วนประกาศไว้ใต้ entry เดียวได้ คิดเงินผ่าน key เดียว และสลับได้ต่อบทสนทนา
นี่เหมือนกับ local API server ของ Jan ไหม?
ไม่เหมือน server ท้องถิ่นที่ 127.0.0.1:1337/v1 คือ Jan ที่เสิร์ฟโมเดล local ของมันให้เครื่องมืออื่น custom provider entry คือ Jan ที่บริโภค remote endpoint ทั้งสองเป็นฟีเจอร์อิสระที่บังเอิญแชร์ wire format แบบ OpenAI