รัน answer engine ของ Perplexica บน custom OpenAI base URL
Updated 2026-07-29
Perplexica ที่เปลี่ยนชื่อเป็น Vane ที่ upstream ตั้งค่า OpenAI provider ด้วย API Key และฟิลด์ Base URL ตั้ง Base URL เป็น https://api.apisrouter.com/v1 เพิ่ม model id ที่คุณต้องการ แล้วทุกคำตอบจากการค้นหาจะสังเคราะห์ผ่าน gateway ด้วย Claude, GPT, DeepSeek หรือ Gemini อยู่หลัง key เดียว
คำตอบสั้น ๆ: ฟิลด์ Base URL เดียว สองรุ่นของ config
บน release ปัจจุบัน OpenAI provider ของ Perplexica เปิดฟิลด์ที่จำเป็นแค่สองอัน: API Key และ Base URL แก้ไขได้ในหน้าจอตั้งค่าแรกและ settings UI พร้อม environment mapping ที่มีเอกสาร OPENAI_API_KEY และ OPENAI_BASE_URL ตั้ง Base URL เป็น https://api.apisrouter.com/v1 วาง gateway key แล้วเพิ่มโมเดลแชทที่คุณต้องการตาม id ในแคตตาล็อกเป๊ะ ๆ provider ส่ง model id ผ่านเป็นสตริงธรรมดาผ่าน /v1/chat/completions ดังนั้น id ของ Claude และ DeepSeek ทำงานผ่านช่อง provider "OpenAI" ได้ บน Perplexica release เก่ากว่า (รุ่น config.toml ผ่านสาย v1.10 และ v1.11) ความสามารถเดียวกันคือ provider CUSTOM_OPENAI: block [MODELS.CUSTOM_OPENAI] ที่รับ key API_KEY, API_URL และ MODEL_NAME ทั้งสองรุ่นแสดงไว้ด้านล่าง ดังนั้นให้จับคู่การตั้งค่ากับเวอร์ชันที่คุณกำลังรันอยู่จริง
# the settings UI fields map to these documented env vars
export OPENAI_API_KEY=sk-APIsRouter-...
export OPENAI_BASE_URL=https://api.apisrouter.com/v1
# then add chat models by id in Settings, e.g. claude-sonnet-4-6Perplexica ตอบคำถามอย่างไร และ LLM อยู่ตรงไหน
Perplexica คือ open-source answering engine สไตล์ Perplexity ที่รู้จักกันดีที่สุด: มันรับคำถาม รันการค้นหาเว็บจริงผ่าน SearxNG instance ที่ bundled มาด้วย อ่านผลลัพธ์ แล้วให้ LLM สังเคราะห์คำตอบที่อ้างอิงได้ search mode (speed, balanced, quality) แลกความลึกของ retrieval กับ latency และ focus mode จำกัดแหล่งข้อมูลไปที่เว็บ การสนทนา หรือ paper วิชาการ ในปี 2026 โปรเจกต์นี้ถูกเปลี่ยนชื่อเป็น Vane ที่ upstream พร้อม Docker image ที่ตามไป สถาปัตยกรรมและระบบ provider ยังคงอยู่ ดังนั้นทุกอย่างที่นี่ใช้ได้กับทั้งสองชื่อ ช่อง LLM คือที่ที่คุณภาพการสังเคราะห์และต้นทุนอาศัยอยู่ ทุกคำตอบเป็นการเรียก chat-completions หนึ่งครั้งหรือมากกว่าที่แบก source ที่ retrieve มาเป็น context ซึ่งทำให้ answering engine เป็น workload ที่ input-token หนัก: โมเดลอ่านมากกว่าที่มันเขียนออกไปมาก ระบบ provider ปฏิบัติต่อ OpenAI เป็นหนึ่งใน backend หลายตัว (Ollama, Anthropic, Gemini, Groq และอื่น ๆ) และ provider OpenAI คือตัวที่มี Base URL แก้ไขได้อย่างอิสระ ซึ่งเป็นสิ่งที่ทำให้มันเป็น hook สำหรับ gateway พฤติกรรมหนึ่งที่ควรรู้ล่วงหน้า: เมื่อ Base URL เป็นอะไรก็ตามนอกเหนือ endpoint ของ OpenAI มาตรฐาน Perplexica จงใจแสดงรายการโมเดลเริ่มต้นว่างเปล่าและใช้ entry โมเดลที่คุณเพิ่มให้ provider เอง นั่นคือดีไซน์ เพราะมันไม่มีทางรู้ว่า custom endpoint เสิร์ฟอะไรบ้าง การเพิ่ม claude-sonnet-4-6 หรือ deepseek-v4-flash เป็น entry โมเดลคือครึ่งที่สองของการตั้งค่า ไม่ใช่ workaround
ตั้งค่าแบบเต็ม: release ปัจจุบันและ config.toml แบบเก่า
release ปัจจุบันตั้งค่าทุกอย่างในแอป ตอน boot ครั้งแรกหน้าจอ setup จะถาม provider หลังจากนั้นฟิลด์เดียวกันจะอยู่ใน Settings เลือก provider OpenAI ตั้ง API Key และ Base URL แล้วเพิ่ม entry โมเดลแชทด้วย id ที่คุณวางแผนจะใช้ id ต้องตรงกับแคตตาล็อกของ gateway เป๊ะ ๆ และแต่ละ entry ที่คุณเพิ่มจะปรากฏใน model picker ข้าง ๆ ช่องค้นหา รุ่นเก่ากว่าเป็นแบบไฟล์ ถ้าการติดตั้งของคุณยังมี config.toml อยู่ แปลว่าคุณอยู่รุ่น CUSTOM_OPENAI: กรอก block ด้านล่างแล้ว restart container MODEL_NAME รับ model id ตัวเดียว ซึ่ง UI จะเสนอเป็นตัวเลือก custom OpenAI
[MODELS.CUSTOM_OPENAI]
API_KEY = "sk-YOUR-APISROUTER-KEY"
API_URL = "https://api.apisrouter.com/v1"
MODEL_NAME = "claude-sonnet-4-6"เลือกโมเดลสังเคราะห์สำหรับ answering engine
เพราะ model picker อ่านทุก entry ที่คุณเพิ่มเทียบกับ Base URL เดียว การทดสอบ A/B โมเดลสังเคราะห์จึงเป็นเรื่องง่ายมาก: ถามคำถามเดียวกันในสองแท็บด้วยสอง entry แล้วเทียบการอ้างอิง usage log ต่อ key ตั้งราคาคำตอบของแต่ละโมเดล ซึ่งเป็นวิธีที่ตรงไปตรงมาในการตัดสินว่าการสังเคราะห์ระดับ frontier คุ้มค่ากับ token บนชุดคำถามของคุณไหม
- input token ครอบงำ คำตอบใน quality mode สามารถดัน context ที่ retrieve มาขนาดใหญ่เข้าไปใน prompt ดังนั้นราคาต่อ input token ของ id ของคุณตั้งต้นทุนของการค้นหา ไม่ใช่คำตอบสั้น ๆ ที่มันเขียนกลับมา
- claude-sonnet-4-6 คือค่าเริ่มต้นที่แข็งแกร่งสำหรับการสังเคราะห์ที่มีการอ้างอิง: มันทำตามคำสั่ง source-grounding ได้ดีและยังคงมีเหตุผลเมื่อ snippet จำนวนมากขัดแย้งกัน
- instance ส่วนตัวหรือของทีมที่มี volume สูงทำงานได้ดีบน claude-haiku-4-5-20251001, gemini-3.5-flash หรือ deepseek-v4-flash: คำตอบยังคงอิงหลักฐานและต้นทุนต่อการค้นหาลดลงมากพอที่จะเปิด quality mode ทิ้งไว้
- เก็บ id ระดับ frontier ไว้เป็น entry ที่สอง entry โมเดลอยู่เคียงข้างกันใน picker ดังนั้นการยกระดับคำถามยากหนึ่งข้อไปที่ gpt-5.5 คือการเปลี่ยน dropdown ไม่ใช่การแก้ config
- focus mode วิชาการให้รางวัลกับโมเดล context ยาว เพราะ abstract และ excerpt ของ paper มีขนาดใหญ่กว่า snippet เว็บ
จ่ายตามการใช้งาน · ถูกกว่าราคาทางการ
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 |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.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 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
รูปแบบความล้มเหลวเฉพาะของ Perplexica
รายการโมเดลว่างเปล่าคือแบบคลาสสิก คุณตั้ง Base URL แล้ว picker ก็ว่างเปล่า และมันดูเหมือนพัง แต่ไม่ใช่: ด้วย Base URL ที่ไม่ใช่ค่าเริ่มต้น Perplexica ลิสต์แค่ entry โมเดลที่คุณเพิ่มให้ provider เท่านั้น เพิ่ม id ของคุณแล้วมันจะปรากฏ Embedding เป็นช่องแยกต่างหาก Perplexica ใช้ embedding model สำหรับการ rerank ผลลัพธ์ และ OpenAI provider เสิร์ฟ embedding จาก Base URL และ key เดียวกัน ถ้า gateway ของคุณไม่เสิร์ฟ embedding id ที่คุณตั้งค่าไว้ที่นั่น การ rerank จะพังในขณะที่คำตอบแชทยังทำงานได้ การแบ่งที่สะอาดคือเก็บ embedding ไว้บน Transformers provider แบบ local ซึ่งรันบนเครื่องโดยไม่มี API เลย แล้ว route แค่การสังเคราะห์แชทผ่าน gateway การเปลี่ยนชื่อทำให้คู่มือสะดุด Perplexica และ Vane คือโปรเจกต์เดียวกัน tutorial เก่าอ้างอิง Docker image ชื่อ perplexica และ config.toml build ปัจจุบันเปิดตัวเป็น vane พร้อม in-app settings และ data volume แบบถาวร ถ้าการติดตั้งของคุณไม่มี config.toml อย่าสร้างมันขึ้นมาเอง มันไม่ถูกอ่าน ตั้งค่าผ่าน UI หรือ env var ที่มีเอกสารรองรับแทน SearxNG เป็นอิสระ ถ้าคำตอบแย่ลงหรือการค้นหาไม่คืนอะไรเลย นั่นคือ SearxNG container หรือการตั้งค่า JSON-format ของมัน ไม่ใช่ LLM endpoint Base URL ย้ายแค่การเรียกแชทและ embedding เท่านั้น
ใครที่ route Perplexica ผ่าน gateway
- self-hoster ที่แทนที่ subscription Perplexity ที่ต้องการการสังเคราะห์คุณภาพระดับ frontier ต่อการค้นหาในราคาระดับ token ด้วย key เดียวแทนบัญชี vendor ต่อตระกูลโมเดล
- ทีมที่รัน answering engine ร่วมกัน ที่ usage log ต่อ key เปลี่ยน "การค้นหามีต้นทุนเท่าไหร่" ให้เป็นตัวเลขต่อโมเดล
- การติดตั้งที่เน้นความเป็นส่วนตัวที่เก็บ retrieval ไว้ local เต็มรูปแบบ (SearxNG บวก embedding local) และ route แค่การเรียกสังเคราะห์สุดท้ายออกผ่าน endpoint เดียวที่ตรวจสอบได้
- นักลองของที่เปรียบเทียบโมเดลสังเคราะห์บนคำถามเดียวกัน: ผู้เข้าแข่งขันแต่ละรายเป็นแค่ entry โมเดลเดียวเทียบกับ Base URL เดียวกัน
- นักพัฒนาที่ไม่มีสิทธิ์เข้าถึงระบบเก็บเงินของ vendor รายหนึ่ง การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาการสมัครต่อ provider ออกไป
ตรวจสอบ endpoint และ debug การค้นหาแรก
ยืนยันว่า gateway เสิร์ฟ id ที่คุณเพิ่มก่อนโทษแอป entry ใน provider ต้องตรงกับ output ของ /v1/models เป๊ะ ๆ ความล้มเหลวในการรันครั้งแรกมีรูปแบบ "No chat model providers configured" หมายความว่าฟิลด์ provider ไม่ได้บันทึกหรือรายการโมเดลยังว่างเปล่า เพิ่ม chat model entry อย่างน้อยหนึ่งตัว 401 ใน server log หมายความว่า key ไม่ตรงกับ endpoint ในฟิลด์ Base URL error model-not-found คือการพิมพ์ id ผิดใน model entry error การ rerank ในขณะที่คำตอบทำงานได้ชี้ไปที่ช่อง embedding ซึ่งเป็นที่ที่ Transformers provider แบบ local ช่วยคุณได้ และถ้าไม่มีอะไรเปลี่ยนหลังแก้ environment variable จำไว้ว่า config ยังอยู่ใน data volume ฟิลด์ที่บันทึกไว้แล้วใน UI ชนะการเปลี่ยน env ทีหลัง ดังนั้นแก้ที่ Settings เมื่อการค้นหาไหลลื่นแล้ว console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย answering engine เป็นงานที่ input หนัก และการเห็นตัวเลข token จริงต่อการค้นหาสำหรับชุดคำถามของคุณดีกว่าการประมาณใด ๆ
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50คำถามที่พบบ่อย
Perplexica เป็นโปรเจกต์เดียวกับ Vane ไหม?
ใช่ repository ต้นทางถูกเปลี่ยนชื่อเป็น Vane ในปี 2026 และ Docker image ก็ตามไป ระบบ provider, การผสาน SearxNG และฟิลด์ Base URL ที่อธิบายไว้ที่นี่เหมือนกันทั้งสองชื่อ มีแค่ release แบบเก่าเท่านั้นที่ยังใช้ชื่อ Perplexica และ config.toml
Perplexica ใช้โมเดล Claude หรือ DeepSeek สำหรับคำตอบได้ไหม?
ได้ OpenAI provider ส่ง model id ผ่านเป็นสตริงธรรมดาไปยัง Base URL ใดก็ตามที่คุณตั้งค่า เพิ่ม claude-sonnet-4-6 หรือ deepseek-v4-flash เป็น model entry เทียบกับ Base URL ของ gateway แล้วมันจะปรากฏใน model picker เหมือนตัวเลือกอื่น ๆ
ทำไมรายการโมเดลว่างเปล่าหลังฉันเปลี่ยน Base URL?
เป็นไปตามดีไซน์ ด้วย Base URL ที่ไม่ใช่ค่าเริ่มต้น Perplexica ไม่สามารถสมมติได้ว่า endpoint เสิร์ฟโมเดลอะไรบ้าง ดังนั้นมันลิสต์แค่ entry ที่คุณเพิ่มให้ provider เอง เพิ่ม id ของคุณใน Settings แล้วมันจะปรากฏทันที
config key แบบเก่า CUSTOM_OPENAI คืออะไร?
บนรุ่น config.toml (ผ่านสาย v1.10 และ v1.11) block [MODELS.CUSTOM_OPENAI] รับ API_KEY, API_URL และ MODEL_NAME ตั้ง API_URL เป็น endpoint ของ gateway รวม /v1 และ MODEL_NAME เป็น id ในแคตตาล็อกหนึ่งตัว แล้ว restart
embedding ก็ route ผ่าน custom Base URL ด้วยไหม?
ถ้าคุณตั้งค่า embedding model บน OpenAI provider ก็ใช่ มันใช้ Base URL และ key เดียวกัน การตั้งค่า gateway ส่วนใหญ่เก็บ embedding ไว้บน Transformers provider แบบ local แทน ซึ่งไม่ต้องมี API เลยและทำให้ rerank เป็นอิสระจาก chat endpoint
environment variable OPENAI_API_KEY และ OPENAI_BASE_URL ยังใช้ได้อยู่ไหม?
ใช้ได้ มันคือ env mapping ที่มีเอกสารรองรับสำหรับสองฟิลด์ของ OpenAI provider บน release ปัจจุบัน สังเกตว่าค่าที่บันทึกไว้แล้วผ่าน settings UI จะอยู่ใน data volume ดังนั้นแก้ที่นั่นถ้าแอปถูกตั้งค่าไว้แล้วครั้งหนึ่ง