
คู่มือนี้สำหรับ BOM AI v0.3.1-r2 ครับ
เชื่อมโปรแกรมด้วย API key
หน้านี้สำหรับนักพัฒนาที่ต้องการเรียก BOM AI จากสคริปต์หรือโปรแกรมอื่น การแชตปกติไม่ต้องซื้อหรือสร้าง API key นะครับ
API key ในหน้านี้เป็นคีย์ของ Open WebUI ซึ่งเป็นหน้าแชต BOM AI ในเครื่องคุณ ไม่ใช่คีย์จากบริการ AI ที่คิดค่ารายครั้ง การสร้าง เก็บ และเพิกถอนคีย์ทำโดยผู้ใช้เองเท่านั้น ครับ
1. สร้างคีย์ในหน้าแชต
เปิดหน้าแชตของเครื่อง (http://127.0.0.1:8080) แล้วเปิดเมนูโปรไฟล์ → Settings → Account หาส่วน API keys กดแสดง แล้วใช้ปุ่มสร้างคีย์ตามที่หน้าจอแสดงจริงครับ
คัดลอกคีย์เก็บในที่ปลอดภัย อย่าใส่ไว้ในภาพประกอบหรือไฟล์ที่ส่งให้ผู้อื่น การสร้างคีย์ใหม่อาจแทนที่คีย์เดิม ให้ปรับโปรแกรมที่ใช้คีย์นั้นตามไปด้วยนะครับ
ไม่เห็นเมนูสร้างคีย์
ผู้ดูแลต้องเปิดความสามารถ API keys และกำหนดสิทธิ์บัญชีก่อน ตำแหน่งเมนูอาจต่างกันตามรุ่น Open WebUI ที่ติดตั้ง ใช้คำแนะนำของรุ่นที่แพ็กเกจ BOM AI ของคุณใช้อยู่ครับ
2. ใช้ที่อยู่หน้าแชตและชื่อรุ่นจริง
| รายการ | ค่า |
|---|---|
| ที่อยู่หน้าแชต (Open WebUI) | http://127.0.0.1:8080 |
| ดูรายการรุ่นที่บัญชีใช้งานได้ | GET /api/models |
| ส่งข้อความเพื่อรับคำตอบ | POST /api/chat/completions |
| ยืนยันตัวตน | Authorization: Bearer YOUR_API_KEY |
ใช้ model เป็น id ที่ endpoint รายการรุ่นตอบกลับจริง ชื่อที่แสดงบนหน้าจอ (เช่น BOM AI Safe) อาจต่างจาก id ที่โปรแกรมต้องส่ง อย่าเดา id จากชื่อที่เห็นนะครับ
3. ตัวอย่าง Python บนคอมเดียวกับ BOM AI
ตัวอย่างใช้ไลบรารีมาตรฐานของ Python 3 รับคีย์แบบซ่อนขณะพิมพ์ และอ่านรายการรุ่นก่อนส่งคำถามครับ:
import getpass
import json
import urllib.error
import urllib.request
base_url = "http://127.0.0.1:8080"
api_key = getpass.getpass("API key ของหน้าแชต: ").strip()
if not api_key:
raise SystemExit("ยังไม่ได้ระบุ API key")
def call_api(path, payload=None):
raw = None if payload is None else json.dumps(
payload, ensure_ascii=False
).encode("utf-8")
request = urllib.request.Request(
base_url + path,
data=raw,
headers={
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json",
},
method="GET" if raw is None else "POST",
)
try:
with urllib.request.urlopen(request, timeout=180) as response:
print("HTTP", response.status)
return json.load(response)
except urllib.error.HTTPError as error:
raise SystemExit(f"HTTP {error.code}: ตรวจคีย์ สิทธิ์ และชื่อรุ่น")
except urllib.error.URLError:
raise SystemExit("เชื่อมต่อไม่ได้: ตรวจว่า BOM AI กำลังทำงานอยู่")
models = call_api("/api/models").get("data", [])
for model in models:
print(model["id"], "—", model.get("name", model["id"]))
model_id = input("คัดลอก id ของรุ่นที่ต้องการใช้จากรายการด้านบน: ").strip()
if model_id not in {model["id"] for model in models}:
raise SystemExit("id นี้ไม่มีในรายการรุ่นที่บัญชีใช้งานได้")
reply = call_api("/api/chat/completions", {
"model": model_id,
"stream": False,
"messages": [{"role": "user", "content": "ทักทายเป็นภาษาไทยหนึ่งประโยค"}],
})
choices = reply.get("choices") or []
if not choices:
raise SystemExit("ไม่ได้รับข้อความตอบ: ตรวจข้อความแจ้งปัญหาจากบริการ")
content = choices[0].get("message", {}).get("content")
if not isinstance(content, str) or not content.strip():
raise SystemExit("คำตอบว่าง: ต้องตรวจสาเหตุก่อนใช้งานต่อ")
print(content)
คำตอบต้องมีข้อความที่อ่านได้ การได้ HTTP 200 เพียงอย่างเดียวยังไม่ยืนยันว่าคำตอบถูกหรือครบ ตัวอย่างนี้เป็นคำถามข้อความสั้น ไม่ได้เปิดค้นเว็บและไม่แนบภาพนะครับ
4. เก็บคีย์และเพิกถอนอย่างปลอดภัย
- เก็บคีย์แยกจากโค้ดที่แชร์ และไม่ใส่คีย์ลงในภาพหรือรายงาน
- กลับไปส่วน API keys ของบัญชีเพื่อลบหรือเปลี่ยนคีย์เมื่อเลิกใช้ แล้วตรวจว่าโปรแกรมเดิมเข้าถึงไม่ได้จริง
- คีย์มีสิทธิ์ตามบัญชีเจ้าของ ปิดคีย์ทันทีเมื่อสงสัยว่าหลุด และใช้บัญชีที่ได้รับสิทธิ์เท่าที่จำเป็นสำหรับโปรแกรมภายนอกครับ
วิดีโอสาธิต
[video] วิดีโอสาธิต — กำลังจัดทำ
พอร์ตของ Ollama ไม่ได้ถูกคุ้มครองด้วยคีย์นี้
Ollama มาตรฐานใช้พอร์ต 11434 บางการติดตั้งใช้พอร์ตอื่นในช่วงเดียวกัน คีย์ของ Open WebUI ไม่ได้เพิ่มการยืนยันตัวตนให้พอร์ตเหล่านี้โดยอัตโนมัติ ให้เก็บบริการโมเดลไว้รับจากในเครื่องเท่านั้น และใช้หน้าแชตที่มีการยืนยันตัวตนสำหรับโปรแกรมที่ต้องควบคุมสิทธิ์ การใช้จากมือถือดู ใช้ BOM AI จากมือถือ ซึ่งไม่จำเป็นต้องเปิดพอร์ตโมเดลสู่สาธารณะนะครับ
รหัสตอบกลับที่พบบ่อย
| รหัสหรืออาการ | สิ่งที่ตรวจ |
|---|---|
| 401 | คีย์ถูกต้อง ยังใช้งานได้ และส่ง Bearer header ครบ |
| 403 | บัญชีมีสิทธิ์ใช้ API และ endpoint ที่เรียก |
| 404 | endpoint และ model id ตรงกับบริการและรุ่นที่ติดตั้ง |
| เชื่อมต่อไม่ได้ | เปิด BOM AI แล้ว และใช้พอร์ต 8080 ของหน้าแชต |
| 200 แต่ข้อความว่าง | ตรวจเนื้อหาตอบกลับและบันทึกข้อผิดพลาด ห้ามถือว่าสำเร็จ |
อ้างอิง: Open WebUI API keys, Open WebUI API นะครับ
ปรับปรุงเนื้อหา: 31 ตุลาคม 2569 ครับ