กลับไปที่บล็อก

เครื่องมือและการเชื่อมต่อคู่มือ

เชื่อมต่อ LibreChat กับ CheapTokens: custom endpoint ใน librechat.yaml

เพิ่ม endpoint ของ CheapTokens ให้ LibreChat แบบโฮสต์เอง: หนึ่งรายการใน librechat.yaml, คีย์ในรูปแบบตัวแปรสภาพแวดล้อม, สามโมเดลในเมนู

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 4 นาที

รายการกำหนดค่า LibreChat ที่ชี้ไปยัง API ของ CheapTokens
ในหน้านี้
  1. สิ่งที่รายการต้องมี
  2. เชื่อมต่อในสามขั้นตอน
  3. สามโมเดลในเมนูเดียว
  4. หาก endpoint ไม่ปรากฏหรือตอบกลับด้วยข้อผิดพลาด

LibreChat ของคุณกำลังทำงานอยู่ แต่เมนูโมเดลแสดงเฉพาะโมเดลที่มาพร้อมกับระบบเท่านั้น หากต้องการเพิ่ม CheapTokens คุณต้องเขียนรายการ endpoints.custom หนึ่งรายการใน librechat.yaml: ชื่อ, base URL https://api.cheaptokens.dev/v1, คีย์ในรูปแบบตัวแปรสภาพแวดล้อม และรายการ model id จากนั้นรีสตาร์ตคอนเทนเนอร์ จะมี endpoint ชื่อ "CheapTokens" ปรากฏในเมนู

ชื่อฟิลด์ด้านล่างมาจากเอกสารอ้างอิง custom endpoint ของ LibreChat (สาขา "Latest (dev)" ในเอกสาร ตรวจสอบเมื่อ 30 ตุลาคม 2026) หน้านั้นไม่มีหมายเลขเวอร์ชัน ดังนั้นหากการติดตั้งของคุณเก่ากว่าและฟิลด์มีพฤติกรรมต่างออกไป ให้เทียบกับเอกสารสำหรับเวอร์ชันของคุณ ฝั่ง API เป็นตัวเดียวกับในเอกสารของเรา: รูปแบบ OpenAI Chat Completions และใช้ยอดเงินเดียวสำหรับทุกโมเดล

สิ่งที่รายการต้องมี#

มีสี่ฟิลด์ที่จำเป็น และแต่ละฟิลด์มีหน้าที่ชัดเจน:

  • name — ชื่อที่ endpoint ใช้แสดงในเมนู
  • apiKey — คีย์ เอกสารแนะนำให้ใช้อ้างอิงเช่น ${VAR} แทนตัวคีย์เอง เพื่อให้ความลับไม่อยู่ใน YAML
  • baseURL — ปลายทางที่ส่งคำขอ: https://api.cheaptokens.dev/v1
  • models.default — รายการ model id ที่แสดงในเมนู

มีสองฟิลด์ทางเลือกที่ควรตั้งค่า titleConvo: true ช่วยให้ LibreChat ตั้งชื่อแชตของคุณ (ชื่อเรื่องจะถูกสร้างขึ้นเว้นแต่จะตั้งเป็น false) และ modelDisplayLabel คือป้ายกำกับถัดจากคำตอบ (ค่าเริ่มต้นคือ "AI") models.fetch มีค่าเริ่มต้นเป็น false ดังนั้น LibreChat จะไม่ขอรายการโมเดลจาก API เมนูจะมาจาก models.default นั่นคือเหตุผลที่ id ด้านล่างเขียนออกมาครบถ้วน

เชื่อมต่อในสามขั้นตอน#

ทีละขั้นตอน

เชื่อมต่อ LibreChat (Docker)

ให้คีย์แก่คอนเทนเนอร์

คีย์ต้องไปถึงคอนเทนเนอร์ LibreChat ในรูปแบบตัวแปรสภาพแวดล้อม เอกสารของ LibreChat ให้คุณตั้งตัวแปรใน docker-compose.override.yml ภายใต้ environment ดังนั้นสร้างไฟล์นั้นไว้ข้าง docker-compose.yml ชื่อตัวแปรเป็นของเรา เลือกชื่อใดก็ได้ เพียงให้ตรงกันใน YAML:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

ค่าคือ placeholder: ใช้คีย์จากแดชบอร์ด CheapTokens ของคุณ

เพิ่ม endpoint ลงใน librechat.yaml

สร้าง librechat.yaml ไว้ข้าง docker-compose.yml โครงสร้างตามตัวอย่าง Mistral ในเอกสารของ LibreChat โดยใช้ที่อยู่และ id ของเรา:

yaml
endpoints:
  custom:
    - name: 'CheapTokens'
      apiKey: '${CHEAPTOKENS_API_KEY}'
      baseURL: 'https://api.cheaptokens.dev/v1'
      models:
        default:
          - 'zai-org/GLM-5.3-Flash'
          - 'deepseek-ai/DeepSeek-V4-Flash-0731'
          - 'MiniMaxAI/MiniMax-M2.7'
      titleConvo: true
      modelDisplayLabel: 'CheapTokens'

เมานต์ไฟล์และรีสตาร์ต

คอนเทนเนอร์ต้องมองเห็นไฟล์ เพิ่ม volumes ลงใน docker-compose.override.yml เดียวกัน เพื่อให้ตอนนี้มีทั้งสองรายการ:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

จากนั้นนำไปใช้:

bash
docker compose up -d
จากคีย์สู่เมนู: ตัวแปรสภาพแวดล้อม, librechat.yaml, การเมานต์, แล้วจึง CheapTokens ในรายการโมเดล
เส้นทางจากคีย์สู่ endpoint CheapTokens ในเมนู LibreChat

เปิด LibreChat ในเบราว์เซอร์ เริ่มแชตใหม่ และเลือก CheapTokens ในเมนู endpoint ทั้งสามโมเดลอยู่ในรายการ ส่ง "Say hi in one sentence" แล้วคุณควรได้รับคำตอบกลับมา หากไม่ได้รับ ให้ข้ามไปยังส่วนสุดท้าย

สามโมเดลในเมนูเดียว#

นี่คือส่วนที่ทำให้แชตแบบโฮสต์เองคุ้มค่า สมมติว่าคุณรันให้ทีมเล็กๆ คำถามส่วนใหญ่เป็นเรื่องทั่วไป: เขียนอีเมลนี้ใหม่ อธิบายข้อผิดพลาดนี้ สำหรับคำถามเหล่านั้น zai-org/GLM-5.3-Flash ก็เพียงพอ ด้วยหน้าต่างบริบท 390K และสูงสุด 8,192 โทเคนต่อคำตอบ เมื่อมีคนวางเอกสารยาวและต้องการคำตอบยาว พวกเขาสลับแชตเดิมไปที่ deepseek-ai/DeepSeek-V4-Flash-0731 (บริบท 380K สูงสุด 32,768 โทเคนต่อคำตอบ) MiniMaxAI/MiniMax-M2.7 (บริบท 180K) คือความเห็นที่สามเมื่อคำตอบสองอันขัดแย้งกัน ไม่ต้องสมัครสมาชิกที่สอง ไม่ต้องใช้คีย์ที่สอง ทั้งสามโมเดลคิดเงินจากยอดเงินเดียว

แชตนั้นมีค่าใช้จ่ายเท่าไร? สมมติทีมห้าคนส่ง 200 ข้อความต่อวัน แต่ละข้อความมีโทเคนอินพุตประมาณ 3,000 (ประวัติเพิ่มขึ้นเรื่อยๆ) และได้โทเคนกลับมาประมาณ 500:

โมเดล ต่อคำขอ 200 คำขอ OpenRouter, 200 คำขอ
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

3,000 โทเค็นอินพุตและ 500 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน

ในตาราง ราคาของแต่ละโมเดลสำหรับ 200 คำขอนั้นนับรวมอินพุตและเอาต์พุตเข้าด้วยกัน และโดยรวมแล้วถูกกว่า OpenRouter เลือกแถวที่ตรงกับการใช้งานของคุณและเทียบกับหน้าราคา

ลองด้วยตัวเองลองดู: ส่งคำถามหนึ่งข้อให้สองโมเดลแสดงคำตอบ

เปิดแชตใหม่ เลือก zai-org/GLM-5.3-Flash และขอสรุปของย่อหน้าที่คุณรู้ดี สลับโมเดลในเมนูเดียวกันไปที่ deepseek-ai/DeepSeek-V4-Flash-0731 แล้วถามอีกครั้ง เปรียบเทียบความยาวและน้ำเสียงของคำตอบทั้งสอง — นั่นคือสิ่งที่คุณใช้ตัดสินใจเลือกโมเดลเริ่มต้น

หาก endpoint ไม่ปรากฏหรือตอบกลับด้วยข้อผิดพลาด#

ปัญหาส่วนใหญ่เป็นหนึ่งในสามอย่าง เลือกข้อที่ตรงกับสิ่งที่คุณเห็น:

เลือกกรณีของคุณ

คุณเห็นอะไร?

CheapTokens หายไปจากเมนู

LibreChat ไม่ได้อ่านไฟล์ของคุณเลย ตรวจสอบว่า librechat.yaml ถูกเมานต์ที่ /app/librechat.yaml (ไฟล์ override ด้านบน) การเยื้อง YAML ยังคงอยู่ครบ และคุณรัน docker compose up -d หลังการเปลี่ยนแปลง

401 Unauthorized

คีย์หายไปหรือไม่ถูกต้อง ตรวจสอบว่าชื่อหลัง ${ ใน librechat.yaml ตรงกับชื่อของตัวแปรสภาพแวดล้อมพอดี และคีย์ไม่มีช่องว่างหรือเครื่องหมายคำพูดติดมา ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดนี้ใน API 401 หรือ 404

404 หรือข้อผิดพลาดเกี่ยวกับโมเดล

model id ไม่ถูกต้อง ใช้ id แบบเต็มเช่น deepseek-ai/DeepSeek-V4-Flash-0731 ชื่อแบบสั้นจะไม่ถูกยอมรับ คุณสามารถแสดงรายการ id ที่ถูกต้องได้ด้วยขั้นตอนใน แสดงรายการโมเดลด้วย GET /v1/models

เมื่อข้อความแรกผ่านไปได้แล้ว คุณสามารถเพิ่ม id อื่นๆ ลงใน models.default เมื่อใดก็ได้ที่ต้องการโมเดลอื่นในเมนู ต้องการฟรอนต์เอนด์อื่น? แนวคิดเดียวกัน คือ base URL บวกคีย์ อยู่ใน เชื่อมต่อ Open WebUI กับ CheapTokens และภาพรวมทั่วไปอยู่ใน API ที่เข้ากันได้กับ OpenAI: base_url คืออะไร ตัวโมเดลเองอยู่ในหน้า GLM