Providers
LM Studio
LM Studio เป็นแอปที่เป็นมิตรและทรงพลังสำหรับรันโมเดล open-weight บนฮาร์ดแวร์ของคุณเอง ช่วยให้คุณรันโมเดล llama.cpp (GGUF) หรือ MLX (Apple Silicon) ได้ มาในรูปแบบแพ็กเกจ GUI หรือ daemon แบบ headless (llmster) สำหรับเอกสารผลิตภัณฑ์และการตั้งค่า โปรดดู lmstudio.ai
เริ่มต้นอย่างรวดเร็ว
- ติดตั้ง LM Studio (เดสก์ท็อป) หรือ
llmster(headless) จากนั้นเริ่มเซิร์ฟเวอร์ภายในเครื่อง:
curl -fsSL https://lmstudio.ai/install.sh | bash
- เริ่มเซิร์ฟเวอร์
ตรวจสอบให้แน่ใจว่าคุณเริ่มแอปเดสก์ท็อป หรือรัน daemon โดยใช้คำสั่งต่อไปนี้:
lms daemon up
lms server start --port 1234
หากคุณใช้แอป โปรดตรวจสอบว่าได้เปิดใช้ JIT แล้วเพื่อประสบการณ์ที่ราบรื่น เรียนรู้เพิ่มเติมในคู่มือ JIT และ TTL ของ LM Studio
- หากเปิดใช้การยืนยันตัวตนของ LM Studio ให้ตั้งค่า
LM_API_TOKEN:
export LM_API_TOKEN="your-lm-studio-api-token"
หากปิดใช้การยืนยันตัวตนของ LM Studio คุณสามารถเว้นคีย์ API ว่างไว้ได้ระหว่างการตั้งค่า OpenClaw แบบโต้ตอบ
สำหรับรายละเอียดการตั้งค่าการยืนยันตัวตนของ LM Studio โปรดดู การยืนยันตัวตนของ LM Studio
- รัน onboarding และเลือก
LM Studio:
openclaw onboard
- ใน onboarding ให้ใช้พรอมป์
Default modelเพื่อเลือกโมเดล LM Studio ของคุณ
คุณยังสามารถตั้งค่าหรือเปลี่ยนภายหลังได้:
openclaw models set lmstudio/qwen/qwen3.5-9b
คีย์โมเดล LM Studio ใช้รูปแบบ author/model-name (เช่น qwen/qwen3.5-9b) model refs ของ OpenClaw
จะเติมชื่อผู้ให้บริการไว้ข้างหน้า: lmstudio/qwen/qwen3.5-9b คุณสามารถค้นหาคีย์ที่ถูกต้องของ
โมเดลได้โดยรัน curl http://localhost:1234/api/v1/models และดูฟิลด์ key
Onboarding แบบไม่โต้ตอบ
ใช้ onboarding แบบไม่โต้ตอบเมื่อคุณต้องการเขียนสคริปต์การตั้งค่า (CI, การจัดเตรียมระบบ, remote bootstrap):
openclaw onboard \
--non-interactive \
--accept-risk \
--auth-choice lmstudio
หรือระบุ base URL, โมเดล และคีย์ API ทางเลือก:
openclaw onboard \
--non-interactive \
--accept-risk \
--auth-choice lmstudio \
--custom-base-url http://localhost:1234/v1 \
--lmstudio-api-key "$LM_API_TOKEN" \
--custom-model-id qwen/qwen3.5-9b
--custom-model-id รับคีย์โมเดลตามที่ LM Studio ส่งกลับมา (เช่น qwen/qwen3.5-9b) โดยไม่มี
คำนำหน้าผู้ให้บริการ lmstudio/
สำหรับเซิร์ฟเวอร์ LM Studio ที่มีการยืนยันตัวตน ให้ส่ง --lmstudio-api-key หรือตั้งค่า LM_API_TOKEN
สำหรับเซิร์ฟเวอร์ LM Studio ที่ไม่มีการยืนยันตัวตน ให้ละคีย์ไว้ OpenClaw จะจัดเก็บเครื่องหมายภายในเครื่องที่ไม่ใช่ความลับ
--custom-api-key ยังคงรองรับเพื่อความเข้ากันได้ แต่แนะนำให้ใช้ --lmstudio-api-key สำหรับ LM Studio
การดำเนินการนี้จะเขียน models.providers.lmstudio และตั้งค่าโมเดลเริ่มต้นเป็น
lmstudio/<custom-model-id> เมื่อคุณระบุคีย์ API การตั้งค่าจะเขียนโปรไฟล์การยืนยันตัวตน
lmstudio:default ด้วย
การตั้งค่าแบบโต้ตอบสามารถถามความยาวบริบทการโหลดที่ต้องการเป็นตัวเลือก และนำไปใช้กับโมเดล LM Studio ที่ค้นพบซึ่งบันทึกไว้ในการกำหนดค่า
การกำหนดค่า Plugin ของ LM Studio เชื่อถือปลายทาง LM Studio ที่กำหนดค่าไว้สำหรับคำขอโมเดล รวมถึง loopback, LAN และโฮสต์ tailnet คุณสามารถยกเลิกได้โดยตั้งค่า models.providers.lmstudio.request.allowPrivateNetwork: false
การกำหนดค่า
ความเข้ากันได้ของการใช้งานแบบสตรีม
LM Studio เข้ากันได้กับ streaming usage เมื่อไม่ได้ปล่อยออบเจ็กต์
usage ที่มีรูปแบบแบบ OpenAI ออกมา OpenClaw จะกู้คืนจำนวนโทเค็นจากเมตาดาต้าแบบ llama.cpp
timings.prompt_n / timings.predicted_n แทน
พฤติกรรม streaming usage แบบเดียวกันนี้ใช้กับแบ็กเอนด์ภายในเครื่องที่เข้ากันได้กับ OpenAI เหล่านี้ด้วย:
- vLLM
- SGLang
- llama.cpp
- LocalAI
- Jan
- TabbyAPI
- text-generation-webui
ความเข้ากันได้ของการคิด
เมื่อการค้นพบ /api/v1/models ของ LM Studio รายงานตัวเลือก reasoning
เฉพาะโมเดล OpenClaw จะแสดงค่า reasoning_effort ที่เข้ากันได้กับ OpenAI
ในเมตาดาต้า compat ของโมเดล บิลด์ LM Studio ปัจจุบันสามารถประกาศตัวเลือก UI
แบบไบนารี เช่น allowed_options: ["off", "on"] ขณะปฏิเสธค่าเหล่านั้น
บน /v1/chat/completions; OpenClaw จะทำให้รูปแบบการค้นพบแบบไบนารีนั้นเป็นมาตรฐานเป็น
none, minimal, low, medium, high และ xhigh ก่อนส่งคำขอ
การกำหนดค่า LM Studio ที่บันทึกไว้เก่ากว่าซึ่งมีแมป reasoning off/on
จะถูกทำให้เป็นมาตรฐานในแบบเดียวกันเมื่อโหลดแค็ตตาล็อก
การกำหนดค่าอย่างชัดเจน
{
models: {
providers: {
lmstudio: {
baseUrl: "http://localhost:1234/v1",
apiKey: "${LM_API_TOKEN}",
api: "openai-completions",
models: [
{
id: "qwen/qwen3-coder-next",
name: "Qwen 3 Coder Next",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 128000,
maxTokens: 8192,
},
],
},
},
},
}
การแก้ปัญหา
ตรวจไม่พบ LM Studio
ตรวจสอบให้แน่ใจว่า LM Studio กำลังทำงานอยู่ หากเปิดใช้การยืนยันตัวตน ให้ตั้งค่า LM_API_TOKEN ด้วย:
# Start via desktop app, or headless:
lms server start --port 1234
ตรวจสอบว่า API เข้าถึงได้:
curl http://localhost:1234/api/v1/models
ข้อผิดพลาดการยืนยันตัวตน (HTTP 401)
หากการตั้งค่ารายงาน HTTP 401 ให้ตรวจสอบคีย์ API ของคุณ:
- ตรวจสอบว่า
LM_API_TOKENตรงกับคีย์ที่กำหนดค่าไว้ใน LM Studio - สำหรับรายละเอียดการตั้งค่าการยืนยันตัวตนของ LM Studio โปรดดู การยืนยันตัวตนของ LM Studio
- หากเซิร์ฟเวอร์ของคุณไม่ต้องใช้การยืนยันตัวตน ให้เว้นคีย์ว่างไว้ระหว่างการตั้งค่า
การโหลดโมเดลแบบ just-in-time
LM Studio รองรับการโหลดโมเดลแบบ just-in-time (JIT) ซึ่งโมเดลจะถูกโหลดเมื่อมีคำขอแรก โดยค่าเริ่มต้น OpenClaw จะโหลดโมเดลล่วงหน้าผ่านปลายทางโหลดดั้งเดิมของ LM Studio ซึ่งช่วยได้เมื่อปิดใช้ JIT หากต้องการให้ JIT, idle TTL และพฤติกรรม auto-evict ของ LM Studio เป็นผู้ดูแลวงจรชีวิตของโมเดล ให้ปิดใช้ขั้นตอนการโหลดล่วงหน้าของ OpenClaw:
{
models: {
providers: {
lmstudio: {
baseUrl: "http://localhost:1234/v1",
api: "openai-completions",
params: { preload: false },
models: [{ id: "qwen/qwen3.5-9b" }],
},
},
},
}
โฮสต์ LM Studio บน LAN หรือ tailnet
ใช้ที่อยู่ที่เข้าถึงได้ของโฮสต์ LM Studio คง /v1 ไว้ และตรวจสอบให้แน่ใจว่า LM Studio ถูก bind นอกเหนือจาก loopback บนเครื่องนั้น:
{
models: {
providers: {
lmstudio: {
baseUrl: "http://gpu-box.local:1234/v1",
apiKey: "lmstudio",
api: "openai-completions",
models: [{ id: "qwen/qwen3.5-9b" }],
},
},
},
}
ต่างจากผู้ให้บริการทั่วไปที่เข้ากันได้กับ OpenAI, lmstudio จะเชื่อถือปลายทางภายในเครื่อง/ส่วนตัวที่กำหนดค่าไว้โดยอัตโนมัติสำหรับคำขอโมเดลที่มีการป้องกัน ID ผู้ให้บริการ loopback แบบกำหนดเอง เช่น localhost หรือ 127.0.0.1 ก็ได้รับความเชื่อถือโดยอัตโนมัติเช่นกัน สำหรับ ID ผู้ให้บริการแบบกำหนดเองบน LAN, tailnet หรือ DNS ส่วนตัว ให้ตั้งค่า models.providers.<id>.request.allowPrivateNetwork: true อย่างชัดเจน