รัน Chatwoot Captain บน custom OpenAI-compatible endpoint

Updated 2026-07-30

Chatwoot แบบ self-hosted ตั้งค่า Captain ผ่าน app config ใน Super Admin: CAPTAIN_OPEN_AI_ENDPOINT, CAPTAIN_OPEN_AI_API_KEY และ CAPTAIN_OPEN_AI_MODEL ตั้ง endpoint เป็น https://api.apisrouter.com (Chatwoot เติม /v1 เอง) แล้ว AI ฝ่ายสนับสนุนของคุณจะตอบด้วยโมเดลในแคตตาล็อกใดก็ได้ผ่าน key เดียว

คำตอบสั้น ๆ: สาม config ของ Captain ใน Super Admin

บน Chatwoot แบบ self-hosted เวอร์ชันปัจจุบัน การตั้งค่า LLM ของ Captain เป็น installation config ไม่ใช่ตัวแปร .env ไฟล์ .env.example ที่มาพร้อมระบบระบุเรื่องนี้ชัดเจนและชี้ให้คุณไปที่ Super Admin, App Configs, Captain มีสามค่าที่สำคัญ: CAPTAIN_OPEN_AI_API_KEY รับ key ของ gateway, CAPTAIN_OPEN_AI_MODEL รับ id ของโมเดล และ CAPTAIN_OPEN_AI_ENDPOINT รับ host ของ endpoint ค่า endpoint มีจุดคมหนึ่งจุด: ใส่มันโดยไม่มี suffix /v1 ตัว initializer ของ Chatwoot สร้าง API base เองด้วยการตัดเครื่องหมาย / ท้ายสุดออกแล้วเติม /v1 และคำอธิบายของ config เองก็แสดงค่าเริ่มต้นเป็น https://api.openai.com/ ในรูปแบบนั้นเป๊ะ ๆ สำหรับ APIsRouter ให้ใส่ https://api.apisrouter.com แล้วปล่อยให้ Chatwoot ได้ https://api.apisrouter.com/v1 เอง config เหล่านี้ถูกอ่านตอนแอป boot ดังนั้น restart Chatwoot หลังเปลี่ยนค่า

CAPTAIN_OPEN_AI_API_KEY:  sk-YOUR-APISROUTER-KEY
CAPTAIN_OPEN_AI_MODEL:    claude-haiku-4-5-20251001
CAPTAIN_OPEN_AI_ENDPOINT: https://api.apisrouter.com
                          (no /v1 -- Chatwoot appends it)

then restart the Chatwoot processes

Captain ทำอะไรกับโมเดลที่ตั้งค่าไว้

Chatwoot (มีดาวประมาณ 34K บน GitHub) คือแพลตฟอร์มบริการลูกค้าแบบ open-source ชั้นนำ และ Captain คือชั้น AI ของมัน: AI agent ที่ตอบบทสนทนาลูกค้าจากบทความ help-center และ FAQ ของคุณ, copilot ที่ร่างคำตอบและสรุปเธรดให้ agent ที่เป็นมนุษย์ และฟีเจอร์ความรู้ที่อิงเอกสารอยู่หลังทั้งสองอย่าง บน installation แบบ self-hosted ที่ Captain ใช้งานได้ ทั้งหมดนี้รันผ่านโมเดลที่ตั้งค่าไว้ข้างต้น เบื้องหลัง Chatwoot ตั้งค่า agents SDK ครั้งเดียวตอน boot: key, API base ที่ได้มา และโมเดลเริ่มต้น ทุกฟีเจอร์ของ Captain จะพูด chat completions มาตรฐานไปที่ base URL นั้น และ id ของโมเดลเดินทางเป็นสตริงธรรมดา Chatwoot มี map ของ prefix ชื่อโมเดล (claude-, gemini-, deepseek-) แต่ใช้สำหรับ label telemetry ไม่ใช่สำหรับ routing ดังนั้น id ของ Claude หรือ DeepSeek ที่ตั้งเป็น CAPTAIN_OPEN_AI_MODEL ก็ยังไปที่ endpoint ที่คุณตั้งค่าไว้เหมือนสตริงอื่น ๆ traffic ฝ่ายสนับสนุนมีโปรไฟล์ต้นทุนที่โดดเด่น: หลายบทสนทนา turn สั้น และคำตอบที่อิงข้อมูลประกอบจากบทความที่ retrieve มา ทำให้ต้นทุนต่อบทสนทนาเป็นตัวเลขที่สำคัญ และมันถูกครอบงำโดย input token จาก context ที่ retrieve มา id ที่เร็วรับมือกับระดับ assistant ได้ดี โดยการยกระดับไปที่ id ที่แข็งแกร่งกว่าเป็นแค่การเปลี่ยน config เดียวเมื่อคุณต้องการให้ copilot ร่างคำตอบได้ดีขึ้น

ตั้งค่าแบบเต็มและรายละเอียดตอน boot

เปิด console Super Admin บน installation ของคุณ ไปที่ App Configs แล้วเลือก Captain จากนั้นกรอกค่าทั้งสาม ถ้า Chatwoot ของคุณเก่ากว่า config endpoint นี้ (ซึ่งมาในช่วง v4.4 กลางปี 2025) ให้ upgrade ก่อน บนเวอร์ชันเก่ามีแค่ key และโมเดล ส่วน endpoint ถูก hardcode ไว้ เพราะ initializer อ่าน config เหล่านี้ตอนแอป boot การเปลี่ยนแปลงจะมีผลหลัง restart process ของ web และ worker นั่นหมายความว่าค่าที่ผิดจะไม่ล้มเหลวตอน save แต่จะล้มเหลวตอน Captain request แรกหลัง restart ซึ่งควรรู้ไว้ก่อนไปดีบักผิดที่ Captain ยังมีฝั่ง embedding ด้วย: CAPTAIN_EMBEDDING_MODEL (ค่าเริ่มต้น text-embedding-3-small) ขับเคลื่อนการค้นหาเอกสารบนเนื้อหา help-center ของคุณ และมัน resolve กับ endpoint ที่ตั้งค่าเดียวกัน ถ้าคุณเปลี่ยน endpoint ไปที่ gateway ให้ยืนยันว่า embedding id ที่คุณตั้งค่าตรงนั้นเป็นตัวที่ endpoint เสิร์ฟจริง ไม่เช่นนั้นให้ปล่อยฟีเจอร์เอกสารไว้ที่การตั้งค่าเดิมและตรวจสอบแยกกันหลังสลับ

# Chatwoot will call <endpoint>/v1/chat/completions
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"}]}'

เลือกโมเดลสำหรับระบบสนับสนุนอัตโนมัติ

loop การประเมินที่ใช้ได้จริง: รันหนึ่งสัปดาห์บน id ที่เร็ว export ตัวเลข usage แล้วรันทีมที่ใช้ copilot หนักบน id ที่แข็งแกร่งกว่าและเปรียบเทียบอัตรายอมรับร่างแทนความรู้สึก ผู้สมัครทั้งสองบิลผ่าน key เดียวกัน ดังนั้นการเปรียบเทียบจะออกมาพร้อมราคา

  • ระดับ AI agent คืองานปริมาณ: คำตอบที่อิงข้อมูลประกอบจากบทความที่ retrieve มา หลายพันบทสนทนาต่อเดือน claude-haiku-4-5-20251001, gpt-5.4-mini และ gemini-3.5-flash เก็บต้นทุนต่อบทสนทนาไว้คงที่โดยไม่เสียวินัยเรื่องการอิงข้อมูล
  • ระดับ copilot อ่านทั้งเธรดและร่างคำตอบให้มนุษย์ ซึ่งเป็นที่ที่ tone และดุลพินิจแสดงออก claude-sonnet-4-6 คือการยกระดับที่เป็นธรรมชาติเมื่อคุณภาพร่างขับเคลื่อนผลผลิตของ agent
  • desk สนับสนุนหลายภาษาควรทดสอบ deepseek-v4-pro และ gemini-3.5-flash บนภาษาผสมจริงของคุณ คุณภาพการตอบที่อิงข้อมูลแปรผันข้ามภาษามากกว่าที่ benchmark ภาษาอังกฤษบ่งบอก
  • ต้นทุนต่อบทสนทนาวัดได้ ไม่ใช่เรื่องทฤษฎี: token ต่อบทสนทนาคูณบทสนทนาต่อเดือน ตรงจาก usage log
  • โมเดลเดียวให้บริการทุกฟีเจอร์ของ Captain ต่อ installation ดังนั้นเลือกให้เหมาะกับ workload หลักของคุณและทบทวนใหม่หลังอ่าน usage จริงหนึ่งสัปดาห์

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

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
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M

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

suffix /v1 ซ้อนสองรอบคือคลาสสิก เพราะ Chatwoot เติม /v1 ต่อสิ่งที่คุณกรอก การวาง https://api.apisrouter.com/v1 จะสร้าง request ที่ /v1/v1/chat/completions ซึ่ง 404 ที่ gateway ใส่ host โดยไม่มี /v1 การเปลี่ยน config ที่ดูเหมือนถูกเมินคือกฎเรื่อง restart agents SDK ถูกตั้งค่าครั้งเดียวตอน boot จาก installation config การแก้ไขใน Super Admin โดยไม่ restart จะปล่อยให้ค่าเก่ายังทำงานอยู่ในทุก process คู่มือเก่าชี้ไปที่พื้นผิวที่ผิด tutorial จาก Chatwoot เวอร์ชันก่อนหน้าตั้งค่า OPENAI_API_KEY ผ่าน environment variable หรือ OpenAI integration แบบเก่า บนเวอร์ชันปัจจุบัน config ของ Captain ใน Super Admin คือพื้นผิว และ .env.example ก็ระบุไว้ตรง ๆ model-not-found บนคำตอบแรกของ Captain หลังสลับคือ id พิมพ์ผิดใน CAPTAIN_OPEN_AI_MODEL รายการ /v1/models ของ gateway คือการสะกดที่น่าเชื่อถือที่สุด authentication error หมายความว่า key และ endpoint config ไม่ได้อยู่คู่กัน และถ้าการค้นหาบทความหรือการอิงเอกสารแย่ลงในขณะที่แชทตอบปกติดี ให้ดูที่ config embedding ซึ่งเป็นโมเดลแยกที่ resolve กับ endpoint เดียวกัน

ใครที่ route Chatwoot Captain ผ่าน gateway

  • ทีมสนับสนุนแบบ self-hosted ที่ต้องการการร่างคำตอบระดับ Claude ใน copilot โดยไม่ต้องมีบัญชี vendor และความสัมพันธ์การเก็บเงินแยกต่างหาก
  • desk ปริมาณสูงที่ AI agent ตอบบทสนทนาส่วนใหญ่ และต้นทุนต่อบทสนทนาตัดสินว่าระบบอัตโนมัติคุ้มค่าไหม id ในแคตตาล็อกที่เร็วเก็บตัวเลขนั้นให้ซื่อตรง
  • ทีมที่รัน Chatwoot หนึ่งตัวต่อแบรนด์หรือภูมิภาค วัด installation แต่ละตัวด้วย key ของตัวเองเพื่อให้ต้นทุน AI สนับสนุนรายงานตัวเองต่อแบรนด์
  • ผู้ดำเนินการที่เปรียบเทียบโมเดลสนับสนุนบน traffic จริง: ผู้สมัครแต่ละคนคือค่า config เดียวกับการ restart ไม่ใช่การย้ายระบบ
  • นักพัฒนาที่ไม่มีสิทธิ์เข้าถึงระบบเก็บเงินของ vendor รายหนึ่ง การเข้าถึงแบบเติมเงินโดยไม่ต้องใช้บัตรตัดการพึ่งพาการสมัครต่อ provider ออกไป

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

ยืนยันนอก Chatwoot ก่อน: ลิสต์โมเดลด้วย key ของคุณแล้วรัน chat completion หนึ่งครั้งกับ id เป๊ะ ๆ ที่คุณตั้งใน CAPTAIN_OPEN_AI_MODEL ถ้าผ่านทั้งคู่ ครึ่งฝั่ง gateway ก็พิสูจน์แล้ว และที่เหลือคือฝั่ง Chatwoot ทั้งหมด จากนั้น restart แล้วเฝ้าดูการสนทนาแรกของ Captain ความล้มเหลวของ authentication ชี้ไปที่ config key model-not-found ชี้ไปที่ config โมเดล error ที่ดูเหมือน 404 ชี้ไปที่ /v1 ที่ถูกวางใน config endpoint ถ้าฟีเจอร์ Captain ไม่ปรากฏเลย นั่นคือเรื่องความพร้อมใช้งานและ licensing บน installation tier ของคุณ ไม่ใช่การตั้งค่า endpoint เมื่อบทสนทนาไหลลื่นแล้ว console ของ APIsRouter แสดงโมเดลต่อ request, จำนวน token และค่าใช้จ่าย AI สนับสนุนคืองบประมาณรายการหนึ่งที่ทบต้นทุกเดือน และ key เดียวต่อ installation เปลี่ยน usage log ให้เป็นรายงานต้นทุนต่อ desk ที่ทีมการเงินของคุณถามหาอยู่เสมอ

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

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

config ตัวไหนของ Chatwoot ที่ชี้ Captain ไปที่ custom OpenAI-compatible endpoint?

CAPTAIN_OPEN_AI_ENDPOINT ตั้งค่าใน console Super Admin ใต้ App Configs, Captain คู่กับ CAPTAIN_OPEN_AI_API_KEY และ CAPTAIN_OPEN_AI_MODEL บนเวอร์ชันปัจจุบันสิ่งเหล่านี้คือ installation config ไม่ใช่ตัวแปร .env

endpoint ควรมี /v1 ไหม?

ไม่ควร Chatwoot ตัดเครื่องหมาย / ท้ายสุดแล้วเติม /v1 เองตอนสร้าง API base ใส่ https://api.apisrouter.com แล้ว Chatwoot จะได้ https://api.apisrouter.com/v1 เอง การวาง /v1 เองจะสร้าง path ซ้อนที่ 404

Captain รันบนโมเดล Claude หรือ DeepSeek ได้ไหม?

ได้ CAPTAIN_OPEN_AI_MODEL เดินทางไปยัง endpoint ที่ตั้งค่าไว้เป็นสตริงธรรมดา map prefix provider ของ Chatwoot ใช้แค่ label telemetry เท่านั้น id ใดก็ตามที่ gateway เสิร์ฟใช้ได้ รวมถึง claude-haiku-4-5-20251001 และ deepseek-v4-pro

ทำไม config ที่ฉันเปลี่ยนถึงไม่มีผล?

การตั้งค่า LLM ของ Captain ถูกอ่านตอนแอป boot restart process ของ web และ worker ของ Chatwoot หลังแก้ config ใน Super Admin process ที่กำลังรันอยู่จะเก็บค่าเก่าไว้จนกว่าจะ restart

config endpoint มีผลต่อการค้นหาเอกสารของ Captain ไหม?

โมเดล embedding (CAPTAIN_EMBEDDING_MODEL ค่าเริ่มต้น text-embedding-3-small) resolve กับ endpoint เดียวกัน ยืนยันว่า endpoint เสิร์ฟ embedding id ที่คุณตั้งค่า หรือตรวจสอบฟีเจอร์เอกสารแยกกันหลังสลับ

ฉันต้องใช้ Chatwoot เวอร์ชันไหน?

config endpoint มาในช่วง v4.4 กลางปี 2025 เวอร์ชันก่อนหน้าเปิดเผยแค่ key และโมเดล โดย endpoint ของ OpenAI ถูก hardcode ไว้ ดังนั้น upgrade ก่อนที่จะชี้ Captain ไปที่ gateway