OpenAI-compatible API คืออะไร ใช้ base URL กับ API key ยังไง

ทีม buzzAIอัปเดต 6 หัวข้อ · คำถามที่พบบ่อย 5 ข้อ

buzzAI|OpenAI-compatible
หุ่นยนต์ใช้สายเชื่อมต่อเดียวกับเซิร์ฟเวอร์ที่มีช่องรับแบบเดียวกัน

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

OpenAI-compatible API คืออะไร

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

เครื่องมือหลายแบบที่ใช้ปลั๊กหน้าตาเดียวกัน เสียบเข้ากับเต้ารับแบบเดียวกันได้ทุกตัว เปรียบกับ API ที่ compatible

ลองนึกถึงปลั๊กไฟ ถ้าเต้ารับทุกบ้านเป็นรูปแบบเดียวกัน เครื่องใช้ไฟฟ้าก็ย้ายไปเสียบที่ไหนก็ได้ 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 ที่เป็นกุญแจ

เทียบง่ายๆ base URL คือบ้านเลขที่ ส่วน API key คือกุญแจเข้าบ้าน ถ้าที่อยู่ผิด จดหมายก็ไปไม่ถึง ถ้ากุญแจผิด ไปถึงหน้าบ้านก็เข้าไม่ได้ เวลาตั้งค่าเครื่องมือใดๆ แทบทุกตัวจะถามค่าเดียวกัน 3 อย่าง

ค่าคืออะไรตัวอย่าง
Base URLที่อยู่ของ API มักจบด้วย /v1https://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 ใช้

  1. Chat Completions/v1/chat/completionsรองรับกว้างที่สุด
  2. Responses/v1/responsesCodex CLI ใช้แบบนี้
  3. Anthropic Messages/v1/messagesClaude Code ใช้แบบนี้

ดูว่าเครื่องมือของคุณส่งคำขอแบบไหน แล้วเช็กว่าผู้ให้บริการปลายทางรองรับแบบนั้น

Chat Completions, Responses และ Anthropic Messages ต่างกันอย่างไร

สามแบบนี้เป็นรูปแบบคำขอที่ใช้กันมากที่สุดในงาน agent Chat Completions เป็นรูปแบบดั้งเดิมที่เครื่องมือส่วนใหญ่รองรับ Responses เป็นรูปแบบใหม่ที่ OpenAI แนะนำสำหรับโปรเจกต์ใหม่และ Codex CLI ใช้ ส่วน Anthropic Messages เป็นรูปแบบของ Anthropic ที่ Claude Code ใช้

ประตูสามบานรูปทรงต่างกันในโถงทางเดิน มีหุ่นยนต์ส่งของถือพัสดุกำลังเลือกประตู แทนรูปแบบ API สามแบบ
รูปแบบEndpointใครใช้ข้อสังเกต
Chat Completions/v1/chat/completionsOpenAI SDK แบบเดิม, Cline, Roo Code, OpenCode, Aiderรองรับกว้างที่สุด คนส่วนใหญ่หมายถึงแบบนี้เวลาพูดว่า OpenAI-compatible
Responses/v1/responsesCodex CLI, OpenAI SDK แบบใหม่OpenAI แนะนำสำหรับโปรเจกต์ใหม่ ผู้ให้บริการอื่นบางรายยังไม่รองรับ
Anthropic Messages/v1/messagesClaude 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 ก็ได้

python
# 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 ใช้ได้จริงก่อนไปตั้งในเครื่องมืออื่น

bash
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"

toml
# ~/.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"
bash
# แล้วใส่ 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

json
{
  "$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/ นำหน้าชื่อโมเดล

bash
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

นักพัฒนาถือคลิปบอร์ดตรวจรายการข้างโต๊ะทดสอบ ที่หุ่นยนต์ตัวเล็กเสียบอะแดปเตอร์ใหม่ มีไฟสถานะติดหนึ่งดวง
  1. การเรียก tools (tool calling) agent ต้องสั่งอ่านไฟล์ รันคำสั่ง และแก้โค้ดผ่าน tools ถ้าโมเดลหรือ endpoint ไม่รองรับ agent จะตอบเป็นข้อความเฉยๆ แต่ไม่ลงมือทำ
  2. streaming เครื่องมือส่วนใหญ่แสดงคำตอบแบบไหลออกมาทีละส่วน ถ้า streaming มีปัญหา หน้าจอจะค้างจนกว่าคำตอบจะเสร็จ
  3. ขนาด context งาน agent ใช้ context เยอะมาก ถ้าผู้ให้บริการกำหนดขนาดเล็กกว่าที่เครื่องมือคาดไว้ งานยาวจะสะดุดกลางทาง อ่านเพิ่มได้ที่ Context window คืออะไร

เมื่อเจอ error ตารางนี้ช่วยไล่หาสาเหตุได้เร็ว

อาการสาเหตุที่พบบ่อยวิธีแก้
401 UnauthorizedAPI key ผิด ถูกยกเลิก หรือใส่ผิด headerตรวจ environment variable และดูว่าผู้ให้บริการใช้ Authorization: Bearer หรือ header อื่น
404 Not Foundbase 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 นั้นแล้วออกใหม่ทันที

แหล่งอ้างอิง

  1. Migrate to the Responses API — OpenAI APIdevelopers.openai.com
  2. openai/openai-python: The official Python library for the OpenAI API — GitHubgithub.com
  3. OpenAI SDK compatibility — Claude API Docsplatform.claude.com
  4. Connect Claude Code to an LLM gateway — Claude Code Docscode.claude.com
  5. Other LLM gateways — Claude Code Docscode.claude.com
  6. Advanced Configuration — Codexlearn.chatgpt.com
  7. OpenAI Compatible — Cline Docsdocs.cline.bot
  8. Using OpenAI Compatible Providers With Roo Coderoocodeinc.github.io
  9. Providers — OpenCodeopencode.ai
  10. OpenAI compatible APIs — aideraider.chat

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

AI Agent

อ่านต่อในหมวดเดียวกัน

ดูทุกบทความในหมวดนี้

พร้อมให้ Coding Agent
ทำงานแบบไม่คิดค่า token
แล้วหรือยัง?

ไม่คิดค่า token ใช้กับ Claude Code, Codex และเครื่องมือที่ตั้ง base URL เองได้ รอบนี้เปิดใช้เมื่อมีผู้สมัครครบโควต้าที่กำหนด แล้วเราจะส่ง API key ให้ทางอีเมล

  • Claude Code
  • Codex
  • OpenCode
  • Cline
  • Roo Code
  • Kilo Code
  • Aider
  • Qwen Code
  • Crush
  • Hermes