ถ้าเคยตั้งค่าเครื่องมือ AI แล้วเจอช่องให้กรอก "Base URL" กับ "API key" แล้วไม่แน่ใจว่าต้องใส่อะไร บทความนี้เขียนมาเพื่อคุณครับ คำว่า OpenAI-compatible เป็นเหตุผลที่เราย้ายโค้ดหรือเครื่องมือเดิมไปใช้ผู้ให้บริการ AI รายอื่นได้ โดยแทบไม่ต้องแก้อะไรเลย
OpenAI-compatible API คืออะไร
OpenAI-compatible API คือ API ที่รับคำขอและส่งคำตอบในรูปแบบเดียวกับ API ของ OpenAI โปรแกรมที่เขียนไว้คุยกับ OpenAI จึงเปลี่ยนไปคุยกับผู้ให้บริการรายอื่นได้ เพียงเปลี่ยนที่อยู่ปลายทาง รหัส และชื่อโมเดล

ลองนึกถึงปลั๊กไฟ ถ้าเต้ารับทุกบ้านเป็นรูปแบบเดียวกัน เครื่องใช้ไฟฟ้าก็ย้ายไปเสียบที่ไหนก็ได้ API ของ OpenAI เป็นรูปแบบที่คนใช้กันมากจนกลายเป็นเหมือนมาตรฐานกลาง ผู้ให้บริการโมเดลหลายราย รวมถึงโปรแกรมรันโมเดลในเครื่องอย่าง Ollama และ LM Studio จึงทำ endpoint ให้หน้าตาเหมือนกัน
สิ่งที่ต้องเข้าใจให้ตรงกันมี 2 ข้อ
- compatible คือรูปแบบ ไม่ใช่โมเดล โมเดลเบื้องหลังเป็นของผู้ให้บริการรายนั้น จะเป็นโมเดล open-source หรือโมเดลของเขาเองก็ได้
- compatible ไม่ได้แปลว่าทุกฟีเจอร์เหมือนกัน แต่ละรายรองรับ field ไม่ครบเท่ากัน ตัวอย่างที่ชัดคือเอกสารของ Anthropic เองระบุว่าชั้น OpenAI SDK compatibility ของเขาทำไว้เพื่อทดสอบและเปรียบเทียบเป็นหลัก ไม่ใช่ทางออกระยะยาวสำหรับงาน production และ field ที่ไม่รองรับส่วนใหญ่จะถูกข้ามไปเงียบๆ โดยไม่แจ้ง error
base URL กับ API key คืออะไร ต่างกันอย่างไร
base URL คือที่อยู่ของเซิร์ฟเวอร์ที่โปรแกรมจะส่งคำขอไป ส่วน API key คือรหัสที่ยืนยันว่าคุณเป็นใคร ผู้ให้บริการใช้มันคิดเงินและจำกัดสิทธิ์ จึงต้องเก็บเป็นความลับเหมือนรหัสผ่าน

เทียบง่ายๆ base URL คือบ้านเลขที่ ส่วน API key คือกุญแจเข้าบ้าน ถ้าที่อยู่ผิด จดหมายก็ไปไม่ถึง ถ้ากุญแจผิด ไปถึงหน้าบ้านก็เข้าไม่ได้ เวลาตั้งค่าเครื่องมือใดๆ แทบทุกตัวจะถามค่าเดียวกัน 3 อย่าง
| ค่า | คืออะไร | ตัวอย่าง |
|---|---|---|
| Base URL | ที่อยู่ของ API มักจบด้วย /v1 | https://api.heybuzzai.com/v1 |
| API key | รหัสยืนยันตัวตน ส่งใน header Authorization: Bearer ... | เก็บใน environment variable |
| Model | ชื่อโมเดลตามที่ผู้ให้บริการกำหนด | Qwen3.8-27B |
จุดที่คนพลาดบ่อยที่สุดคือ /v1 เพราะ SDK จะเอา /chat/completions ไปต่อท้าย base URL ให้เอง ถ้าใส่ /v1 ขาดหรือซ้ำเป็น /v1/v1 คำขอจะไปผิดที่และได้ 404 วิธีที่ปลอดภัยที่สุดคือคัดลอก base URL จากเอกสารของผู้ให้บริการแบบตรงตัว
ส่วน API key ให้เก็บใน environment variable เสมอ อย่าเขียนลงในโค้ด อย่า commit ขึ้น git และอย่าวางลงในแชต ถ้าคิดว่าหลุด ให้ยกเลิกแล้วออกใหม่ทันที
อธิบายด้วยภาพ
รูปแบบ API ที่เครื่องมือ agent ใช้
- Chat Completions/v1/chat/completionsรองรับกว้างที่สุด
- Responses/v1/responsesCodex CLI ใช้แบบนี้
- Anthropic Messages/v1/messagesClaude Code ใช้แบบนี้
ดูว่าเครื่องมือของคุณส่งคำขอแบบไหน แล้วเช็กว่าผู้ให้บริการปลายทางรองรับแบบนั้น
Chat Completions, Responses และ Anthropic Messages ต่างกันอย่างไร
สามแบบนี้เป็นรูปแบบคำขอที่ใช้กันมากที่สุดในงาน agent Chat Completions เป็นรูปแบบดั้งเดิมที่เครื่องมือส่วนใหญ่รองรับ Responses เป็นรูปแบบใหม่ที่ OpenAI แนะนำสำหรับโปรเจกต์ใหม่และ Codex CLI ใช้ ส่วน Anthropic Messages เป็นรูปแบบของ Anthropic ที่ Claude Code ใช้

| รูปแบบ | Endpoint | ใครใช้ | ข้อสังเกต |
|---|---|---|---|
| Chat Completions | /v1/chat/completions | OpenAI SDK แบบเดิม, Cline, Roo Code, OpenCode, Aider | รองรับกว้างที่สุด คนส่วนใหญ่หมายถึงแบบนี้เวลาพูดว่า OpenAI-compatible |
| Responses | /v1/responses | Codex CLI, OpenAI SDK แบบใหม่ | OpenAI แนะนำสำหรับโปรเจกต์ใหม่ ผู้ให้บริการอื่นบางรายยังไม่รองรับ |
| Anthropic Messages | /v1/messages | Claude Code | ตั้งค่าผ่าน ANTHROPIC_BASE_URL ไม่ใช่ช่อง OpenAI |
OpenAI อธิบายว่า Responses เป็นวิวัฒนาการต่อจาก Chat Completions และ Chat Completions ยังใช้งานได้ต่อ โค้ดเดิมจึงไม่ต้องรีบย้าย สิ่งที่ต้องเช็กคือ เครื่องมือที่คุณใช้ส่งคำขอแบบไหน แล้วผู้ให้บริการปลายทางรองรับแบบนั้นหรือเปล่า
สำหรับ Claude Code ต้องระวังเป็นพิเศษ เพราะมันไม่ได้ใช้ช่อง OpenAI เลย แต่อ่านค่า ANTHROPIC_BASE_URL และ ANTHROPIC_AUTH_TOKEN และ Anthropic ระบุในเอกสารว่าไม่สนับสนุนการใช้ Claude Code กับโมเดลที่ไม่ใช่ Claude ผ่าน gateway ใดๆ ถ้ามีปัญหาต้องคุยกับผู้ให้บริการ API ที่คุณใช้ รายละเอียดวิธีตั้งค่าอยู่ใน ใช้ Claude Code กับโมเดลอื่น
ตั้งค่า OpenAI SDK, curl และเครื่องมืออื่นอย่างไร
ทุกเครื่องมือถามค่าเดียวกัน คือ base URL, API key และชื่อโมเดล ต่างกันแค่ว่าใส่ในโค้ด ในไฟล์ตั้งค่า หรือในหน้าต่างตั้งค่าของโปรแกรม ตัวอย่างด้านล่างใช้ค่าของ buzzAI ในส่วนที่เราทดสอบแล้ว และใช้ค่าตัวอย่างทั่วไปในเครื่องมืออื่น

Python (OpenAI SDK)
OpenAI SDK รับ base_url ตอนสร้าง client หรืออ่านจาก environment variable OPENAI_BASE_URL ก็ได้
# pip install openai
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.heybuzzai.com/v1",
api_key=os.environ["BUZZAI_API_KEY"],
)
reply = client.chat.completions.create(
model="Qwen3.8-27B",
messages=[{"role": "user", "content": "Write tests for utils/date.py"}],
)
print(reply.choices[0].message.content)curl
ใช้ทดสอบเร็วๆ ว่า base URL และ API key ใช้ได้จริงก่อนไปตั้งในเครื่องมืออื่น
curl "https://api.heybuzzai.com/v1/chat/completions" \
-H "Authorization: Bearer $BUZZAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3.8-27B",
"messages": [{"role": "user", "content": "Write tests for utils/date.py"}]
}'Codex CLI
Codex อ่านผู้ให้บริการจากไฟล์ ~/.codex/config.toml ตั้งชื่อ provider เอง (ห้ามใช้ชื่อที่สงวนไว้คือ openai, ollama และ lmstudio) แล้วเลือก wire_api = "responses"
# ~/.codex/config.toml
model = "Qwen3.8-27B"
model_provider = "buzzai"
[model_providers.buzzai]
name = "buzzAI"
base_url = "https://api.heybuzzai.com/v1"
env_key = "BUZZAI_API_KEY"
wire_api = "responses"# แล้วใส่ API key และเปิดใช้งานตามปกติ
export BUZZAI_API_KEY="<API key ของคุณ>"
codexขั้นตอนเต็มพร้อมวิธีแก้ปัญหาอยู่ใน คู่มือ Codex CLI
Cline และ Roo Code
ทั้งสองตัวตั้งค่าในหน้าต่าง settings ของ extension เลือกผู้ให้บริการเป็น OpenAI Compatible แล้วกรอก 3 ช่อง คือ Base URL, API Key และ Model ID ทั้งคู่ระบุว่าช่อง Base URL ต้องเป็นของผู้ให้บริการรายนั้น ไม่ใช่ URL ของ OpenAI เอง และ Roo Code ย้ำว่าโมเดลต้องรองรับการเรียก tools แบบ native
OpenCode
OpenCode ให้เพิ่มผู้ให้บริการในไฟล์ opencode.json ของโปรเจกต์ โดยใช้แพ็กเกจ @ai-sdk/openai-compatible สำหรับผู้ให้บริการที่ใช้ /v1/chat/completions แล้วใส่ API key ผ่านคำสั่ง /connect
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"myprovider": {
"npm": "@ai-sdk/openai-compatible",
"name": "My AI Provider",
"options": {
"baseURL": "https://api.example.com/v1"
},
"models": {
"model-name": {
"name": "Model name"
}
}
}
}
}Aider
Aider อ่าน base URL และ key จาก environment variable แล้วให้ใส่ openai/ นำหน้าชื่อโมเดล
export OPENAI_API_BASE=https://api.example.com/v1
export OPENAI_API_KEY=<API key ของคุณ>
aider --model openai/<ชื่อโมเดล>ข้อควรระวังเมื่อเปลี่ยนไปใช้ API ที่ compatible
"เข้ากันได้" ไม่ได้แปลว่าทุกอย่างทำงานเหมือนเดิม ก่อนใช้กับงานจริงให้ทดสอบอย่างน้อย 3 เรื่อง คือการเรียก tools, streaming และขนาด context เพราะสามเรื่องนี้เป็นหัวใจของ coding agent

- การเรียก tools (tool calling) agent ต้องสั่งอ่านไฟล์ รันคำสั่ง และแก้โค้ดผ่าน tools ถ้าโมเดลหรือ endpoint ไม่รองรับ agent จะตอบเป็นข้อความเฉยๆ แต่ไม่ลงมือทำ
- streaming เครื่องมือส่วนใหญ่แสดงคำตอบแบบไหลออกมาทีละส่วน ถ้า streaming มีปัญหา หน้าจอจะค้างจนกว่าคำตอบจะเสร็จ
- ขนาด context งาน agent ใช้ context เยอะมาก ถ้าผู้ให้บริการกำหนดขนาดเล็กกว่าที่เครื่องมือคาดไว้ งานยาวจะสะดุดกลางทาง อ่านเพิ่มได้ที่ Context window คืออะไร
เมื่อเจอ error ตารางนี้ช่วยไล่หาสาเหตุได้เร็ว
| อาการ | สาเหตุที่พบบ่อย | วิธีแก้ |
|---|---|---|
| 401 Unauthorized | API key ผิด ถูกยกเลิก หรือใส่ผิด header | ตรวจ environment variable และดูว่าผู้ให้บริการใช้ Authorization: Bearer หรือ header อื่น |
| 404 Not Found | base URL ผิด path เช่น ขาดหรือซ้ำ /v1 | คัดลอก base URL จากเอกสารผู้ให้บริการตรงตัว |
| ไม่พบโมเดล | ชื่อโมเดลไม่ตรงกับที่ผู้ให้บริการรองรับ | ดูรายชื่อโมเดลในเอกสารของผู้ให้บริการ |
| agent ตอบแต่ไม่ลงมือทำ | โมเดลหรือ endpoint ไม่รองรับ tool calling | เลือกโมเดลที่รองรับ tools หรือเปลี่ยนรูปแบบ API ให้ตรงกับเครื่องมือ |
| งานยาวหยุดกลางทาง | context เต็ม | เริ่มเซสชันใหม่ หรือใช้แพ็กที่ context ใหญ่ขึ้น |
อีกเรื่องที่มักลืมคือวิธีคิดเงิน API ส่วนใหญ่คิดตาม token และงาน agent ใช้ token สะสมเร็วมาก อ่านเหตุผลได้ที่ Token คืออะไร
buzzAI เป็น OpenAI-compatible API ไหม
ใช่ buzzAI รองรับทั้ง Chat Completions และ Responses รวมถึงรูปแบบ Anthropic Messages สำหรับ Claude Code เราทดสอบกับ Claude Code และ Codex CLI แล้วว่าใช้ได้ทั้งการเรียก tools และ streaming ชื่อโมเดลใน API คือ Qwen3.8-27B โมเดล open-weight สัญญาอนุญาต Apache 2.0
buzzAI คิดเงินแบบเหมาจ่ายและไม่คิดค่า token สิ่งที่มีขอบเขตคือจำนวน agent ที่รันพร้อมกัน (แพ็ก Personal ได้ 1 agent แพ็กบริษัทได้ 1–8 ตัว) ขนาด context ตามแพ็ก (64K, 128K หรือ 256K) และคิวในช่วงที่คนใช้เยอะ ตอนนี้ API ยังไม่เปิดทั่วไป เรากำลังเปิดให้ขอร่วมทดสอบรอบที่ 1 และส่ง API key ให้ทางอีเมลเมื่อมีผู้สมัครครบโควต้าที่กำหนด ดูวิธีตั้งค่าทุกเครื่องมือได้ที่คู่มือ API และดูแพ็กที่หน้าราคา
ถ้าจะเอา OpenAI-compatible API ไปฝังในเว็บ แชตบอท LINE OA หรือระบบของบริษัท แทนการใช้กับ coding agent ดูAPI สำหรับระบบ แพ็กเหมาจ่ายรายเดือนที่คิดตามจำนวนคำขอที่ทำพร้อมกัน ไม่มีโควตา token เริ่ม 3,900 บาทต่อเดือน (ยังไม่รวม VAT)
คำถามที่พบบ่อย
OpenAI-compatible API ต้องใช้โมเดลของ OpenAI ไหม?
ไม่ต้อง คำว่า compatible หมายถึงรูปแบบคำขอและคำตอบเหมือน API ของ OpenAI เท่านั้น โมเดลเบื้องหลังจะเป็นของผู้ให้บริการรายใดก็ได้ รวมถึงโมเดล open-source ที่รันบนเซิร์ฟเวอร์ของผู้ให้บริการเอง
base URL ต้องมี /v1 ต่อท้ายไหม?
ผู้ให้บริการส่วนใหญ่ให้ base URL ที่จบด้วย /v1 แล้ว SDK จะต่อ /chat/completions หรือ /responses ให้เอง ถ้าใส่ขาดหรือซ้ำมักได้ error 404 จึงควรคัดลอกค่าจากเอกสารของผู้ให้บริการรายนั้นตรงตัว
ใช้ OpenAI-compatible API กับ Claude Code ได้ไหม?
Claude Code ส่งคำขอในรูปแบบ Anthropic Messages ไม่ใช่ Chat Completions จึงต้องใช้ผู้ให้บริการที่รองรับรูปแบบนั้น และตั้งค่าผ่าน ANTHROPIC_BASE_URL แทน ทั้งนี้ Anthropic ระบุว่าไม่สนับสนุนการใช้ Claude Code กับโมเดลที่ไม่ใช่ Claude ผ่าน gateway ใดๆ
Chat Completions กับ Responses API ควรใช้แบบไหน?
OpenAI แนะนำ Responses API สำหรับโปรเจกต์ใหม่ และยังรองรับ Chat Completions ต่อ แต่ถ้าใช้กับผู้ให้บริการอื่น ให้ดูว่าเขารองรับแบบไหน Chat Completions เป็นแบบที่เครื่องมือและผู้ให้บริการรองรับกว้างที่สุด ส่วน Codex CLI ตั้งค่าด้วย wire_api = responses
เก็บ API key อย่างไรให้ปลอดภัย?
เก็บไว้ใน environment variable หรือ secret manager อย่าเขียนลงในโค้ด อย่า commit ขึ้น git และอย่าวางในแชตหรือ issue ถ้าคิดว่า key หลุด ให้ยกเลิก key นั้นแล้วออกใหม่ทันที
แหล่งอ้างอิง
- Migrate to the Responses API — OpenAI APIdevelopers.openai.com
- openai/openai-python: The official Python library for the OpenAI API — GitHubgithub.com
- OpenAI SDK compatibility — Claude API Docsplatform.claude.com
- Connect Claude Code to an LLM gateway — Claude Code Docscode.claude.com
- Other LLM gateways — Claude Code Docscode.claude.com
- Advanced Configuration — Codexlearn.chatgpt.com
- OpenAI Compatible — Cline Docsdocs.cline.bot
- Using OpenAI Compatible Providers With Roo Coderoocodeinc.github.io
- Providers — OpenCodeopencode.ai
- OpenAI compatible APIs — aideraider.chat
ข้อมูล ณ วันที่อัปเดต แพ็ก โควตา และคำสั่งของแต่ละเครื่องมือเปลี่ยนได้บ่อย ก่อนใช้งานจริงควรตรวจกับเอกสารทางการที่ลิงก์ไว้ในแหล่งอ้างอิง
