Gateway
โมเดลในเครื่อง
โมเดลในเครื่องทำได้จริง แต่ก็เพิ่มข้อกำหนดด้านฮาร์ดแวร์ ขนาดคอนเท็กซ์ และการป้องกัน prompt injection ให้สูงขึ้นด้วย การ์ดขนาดเล็กหรือที่ quantize หนักจะตัดทอนคอนเท็กซ์และลดทอนความปลอดภัย หน้านี้เป็นคู่มือแบบมีจุดยืนสำหรับสแตกในเครื่องระดับสูงกว่าและเซิร์ฟเวอร์ในเครื่องแบบกำหนดเองที่เข้ากันได้กับ OpenAI สำหรับการเริ่มต้นใช้งานที่มีแรงเสียดทานต่ำที่สุด ให้เริ่มจาก LM Studio หรือ Ollama และ openclaw onboard
สำหรับเซิร์ฟเวอร์ในเครื่องที่ควรเริ่มทำงานเฉพาะเมื่อโมเดลที่เลือกต้องใช้เท่านั้น โปรดดู บริการโมเดลในเครื่อง
ระดับฮาร์ดแวร์ขั้นต่ำ
ตั้งเป้าให้สูง: Mac Studio สเปกสูงสุดอย่างน้อย 2 เครื่อง หรือชุด GPU ที่เทียบเท่า (~$30k+) เพื่อให้ลูปเอเจนต์ทำงานได้อย่างสบาย GPU 24 GB เพียงตัวเดียวเหมาะเฉพาะกับพรอมป์ที่เบากว่าและมีเวลาแฝงสูงกว่าเท่านั้น ให้รัน รุ่นที่ใหญ่ที่สุด / ขนาดเต็มที่สุดที่คุณโฮสต์ได้ เสมอ เช็กพอยต์ขนาดเล็กหรือที่ quantize หนักจะเพิ่มความเสี่ยงด้าน prompt injection (ดู ความปลอดภัย)
เลือกแบ็กเอนด์
| แบ็กเอนด์ | ใช้เมื่อ |
|---|---|
| ds4 | DeepSeek V4 Flash ในเครื่องบน macOS Metal พร้อมการเรียกเครื่องมือที่เข้ากันได้กับ OpenAI |
| LM Studio | การตั้งค่าในเครื่องครั้งแรก ตัวโหลด GUI และ Responses API แบบเนทีฟ |
| LiteLLM / OAI-proxy / พร็อกซีแบบกำหนดเองที่เข้ากันได้กับ OpenAI | คุณอยู่หน้า API ของโมเดลอื่นและต้องการให้ OpenClaw ปฏิบัติต่อโมเดลนั้นเหมือน OpenAI |
| MLX / vLLM / SGLang | การให้บริการแบบ self-hosted ปริมาณงานสูงพร้อมปลายทาง HTTP ที่เข้ากันได้กับ OpenAI |
| Ollama | เวิร์กโฟลว์ CLI ไลบรารีโมเดล และบริการ systemd แบบไม่ต้องดูแลเอง |
ใช้ Responses API (api: "openai-responses") เมื่อแบ็กเอนด์รองรับ (LM Studio รองรับ) มิฉะนั้นให้ใช้ Chat Completions (api: "openai-completions")
แนะนำ: LM Studio + โมเดลในเครื่องขนาดใหญ่ (Responses API)
สแตกในเครื่องที่ดีที่สุดในปัจจุบัน โหลดโมเดลขนาดใหญ่ใน LM Studio (ตัวอย่างเช่น บิลด์ Qwen, DeepSeek หรือ Llama ขนาดเต็ม) เปิดใช้งานเซิร์ฟเวอร์ในเครื่อง (ค่าเริ่มต้น http://127.0.0.1:1234) และใช้ Responses API เพื่อแยก reasoning ออกจากข้อความสุดท้าย
{ agents: { defaults: { model: { primary: "lmstudio/my-local-model" }, models: { "anthropic/claude-opus-4-6": { alias: "Opus" }, "lmstudio/my-local-model": { alias: "Local" }, }, }, }, models: { mode: "merge", providers: { lmstudio: { baseUrl: "http://127.0.0.1:1234/v1", apiKey: "lmstudio", api: "openai-responses", models: [ { id: "my-local-model", name: "Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 196608, maxTokens: 8192, }, ], }, }, },}เช็กลิสต์การตั้งค่า
- ติดตั้ง LM Studio: https://lmstudio.ai
- ใน LM Studio ให้ดาวน์โหลด บิลด์โมเดลที่ใหญ่ที่สุดที่มี (หลีกเลี่ยงรุ่น "small"/ที่ quantize หนัก) เริ่มเซิร์ฟเวอร์ แล้วตรวจสอบว่า
http://127.0.0.1:1234/v1/modelsแสดงรายการโมเดลนั้น - แทนที่
my-local-modelด้วย ID โมเดลจริงที่แสดงใน LM Studio - โหลดโมเดลค้างไว้ การโหลดแบบ cold-load จะเพิ่มเวลาแฝงตอนเริ่มต้น
- ปรับ
contextWindow/maxTokensหากบิลด์ LM Studio ของคุณแตกต่างออกไป - สำหรับ WhatsApp ให้ใช้ Responses API เพื่อให้ส่งเฉพาะข้อความสุดท้าย
คงการกำหนดค่าโมเดลแบบโฮสต์ไว้แม้ขณะรันในเครื่อง ใช้ models.mode: "merge" เพื่อให้ยังมี fallback พร้อมใช้งาน
การกำหนดค่าแบบไฮบริด: โฮสต์เป็นตัวหลัก ในเครื่องเป็น fallback
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "lmstudio/my-local-model": { alias: "Local" }, "anthropic/claude-opus-4-6": { alias: "Opus" }, }, }, }, models: { mode: "merge", providers: { lmstudio: { baseUrl: "http://127.0.0.1:1234/v1", apiKey: "lmstudio", api: "openai-responses", models: [ { id: "my-local-model", name: "Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 196608, maxTokens: 8192, }, ], }, }, },}ให้ในเครื่องมาก่อน พร้อมตาข่ายนิรภัยแบบโฮสต์
สลับลำดับตัวหลักและ fallback โดยคงบล็อก providers เดิมและ models.mode: "merge" เพื่อให้คุณ fallback ไปยัง Sonnet หรือ Opus ได้เมื่อเครื่องในเครื่องใช้งานไม่ได้
การโฮสต์ตามภูมิภาค / การกำหนดเส้นทางข้อมูล
- รุ่น MiniMax/Kimi/GLM แบบโฮสต์ยังมีบน OpenRouter พร้อมปลายทางที่ตรึงภูมิภาค (เช่น โฮสต์ในสหรัฐฯ) เลือกรุ่นตามภูมิภาคที่นั่นเพื่อให้ทราฟฟิกอยู่ในเขตอำนาจศาลที่คุณเลือก ขณะยังใช้
models.mode: "merge"สำหรับ fallback ของ Anthropic/OpenAI - แบบในเครื่องเท่านั้นยังคงเป็นเส้นทางความเป็นส่วนตัวที่แข็งแกร่งที่สุด การกำหนดเส้นทางแบบโฮสต์ตามภูมิภาคเป็นทางสายกลางเมื่อคุณต้องการฟีเจอร์จากผู้ให้บริการแต่ยังต้องการควบคุมการไหลของข้อมูล
พร็อกซีในเครื่องอื่นที่เข้ากันได้กับ OpenAI
MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy หรือ Gateway แบบกำหนดเอง
ใช้งานได้หากเปิดเผยปลายทาง /v1/chat/completions
สไตล์ OpenAI ใช้อะแดปเตอร์ Chat Completions เว้นแต่แบ็กเอนด์จะระบุอย่างชัดเจนว่า
รองรับ /v1/responses แทนที่บล็อก provider ด้านบนด้วย
ปลายทางและ ID โมเดลของคุณ:
{ agents: { defaults: { model: { primary: "local/my-local-model" }, }, }, models: { mode: "merge", providers: { local: { baseUrl: "http://127.0.0.1:8000/v1", apiKey: "sk-local", api: "openai-completions", timeoutSeconds: 300, models: [ { id: "my-local-model", name: "Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 120000, maxTokens: 8192, }, ], }, }, },}หากละ api ไว้ใน provider แบบกำหนดเองที่มี baseUrl OpenClaw จะใช้ค่าเริ่มต้นเป็น
openai-completions รายการ provider แบบกำหนดเอง/ในเครื่องจะเชื่อถือ origin ของ
baseUrl ที่กำหนดไว้อย่างตรงตัวสำหรับคำขอโมเดลที่มีการป้องกัน รวมถึง loopback, LAN, tailnet
และโฮสต์ DNS ส่วนตัว คำขอไปยัง origin ส่วนตัวอื่นยังต้องใช้
request.allowPrivateNetwork: true; origin แบบ metadata/link-local ยังคงถูกบล็อก
หากไม่ได้ opt-in อย่างชัดเจน ตั้งค่าเป็น false เพื่อ opt out จากความเชื่อถือ origin แบบตรงตัว
ค่า models.providers.<id>.models[].id เป็นค่าเฉพาะภายใน provider อย่า
ใส่คำนำหน้า provider ไว้ในค่านั้น ตัวอย่างเช่น เซิร์ฟเวอร์ MLX ที่เริ่มด้วย
mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit ควรใช้
ID แค็ตตาล็อกและอ้างอิงโมเดลดังนี้:
models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"
ตั้งค่า input: ["text", "image"] บนโมเดลวิชันในเครื่องหรือผ่านพร็อกซี เพื่อให้แนบรูปภาพ
เข้าไปในเทิร์นของเอเจนต์ การเริ่มใช้งาน provider แบบกำหนดเองในโหมดอินเทอร์แอคทีฟ
จะอนุมาน ID โมเดลวิชันทั่วไปและถามเฉพาะชื่อที่ไม่รู้จัก
การเริ่มใช้งานแบบไม่โต้ตอบใช้การอนุมานเดียวกัน ใช้ --custom-image-input
สำหรับ ID วิชันที่ไม่รู้จัก หรือ --custom-text-input เมื่อโมเดลที่ดูเหมือนรู้จัก
เป็นแบบข้อความเท่านั้นหลังปลายทางของคุณ
คง models.mode: "merge" ไว้เพื่อให้โมเดลแบบโฮสต์ยังพร้อมใช้เป็น fallback
ใช้ models.providers.<id>.timeoutSeconds สำหรับเซิร์ฟเวอร์โมเดลในเครื่องหรือระยะไกล
ที่ช้า ก่อนเพิ่ม agents.defaults.timeoutSeconds ค่า timeout ของ provider
มีผลเฉพาะกับคำขอ HTTP ของโมเดล รวมถึงการเชื่อมต่อ ส่วนหัว การสตรีมบอดี
และการยกเลิก guarded-fetch ทั้งหมด หาก timeout ของเอเจนต์หรือการรันต่ำกว่า ให้เพิ่ม
เพดานนั้นด้วย เพราะ timeout ของ provider ไม่สามารถยืดเวลาการรันเอเจนต์ทั้งหมดได้
หมายเหตุพฤติกรรมสำหรับแบ็กเอนด์ /v1 ในเครื่อง/ผ่านพร็อกซี:
- OpenClaw ปฏิบัติต่อสิ่งเหล่านี้เป็นเส้นทางที่เข้ากันได้กับ OpenAI แบบพร็อกซี ไม่ใช่ปลายทาง OpenAI แบบเนทีฟ
- การจัดรูปคำขอที่มีเฉพาะ OpenAI แบบเนทีฟจะไม่มีผลที่นี่: ไม่มี
service_tier, ไม่มี Responsesstore, ไม่มีการจัดรูป payload เพื่อความเข้ากันได้กับ reasoning ของ OpenAI และไม่มีคำใบ้ prompt-cache - header ระบุที่มาของ OpenClaw แบบซ่อน (
originator,version,User-Agent) จะไม่ถูกใส่ใน URL พร็อกซีแบบกำหนดเองเหล่านี้
หมายเหตุความเข้ากันได้สำหรับแบ็กเอนด์ที่เข้ากันได้กับ OpenAI และเข้มงวดกว่า:
-
บางเซิร์ฟเวอร์ยอมรับเฉพาะ
messages[].contentแบบสตริงบน Chat Completions ไม่ใช่ อาร์เรย์ content-part แบบมีโครงสร้าง ให้ตั้งค่าmodels.providers.<provider>.models[].compat.requiresStringContent: trueสำหรับ ปลายทางเหล่านั้น -
โมเดลในเครื่องบางตัวส่งคำขอเครื่องมือแบบวงเล็บลอยเดี่ยวเป็นข้อความ เช่น
[tool_name]ตามด้วย JSON และ[END_TOOL_REQUEST]OpenClaw จะยกระดับ สิ่งเหล่านั้นเป็นการเรียกเครื่องมือจริงเฉพาะเมื่อชื่อตรงกับเครื่องมือที่ลงทะเบียนไว้ สำหรับเทิร์นนั้นเท่านั้น มิฉะนั้นบล็อกจะถูกปฏิบัติเป็นข้อความที่ไม่รองรับและถูก ซ่อนจากคำตอบที่ผู้ใช้เห็น -
หากโมเดลส่ง JSON, XML หรือข้อความสไตล์ ReAct ที่ดูเหมือนการเรียกเครื่องมือ แต่ provider ไม่ได้ส่ง invocation แบบมีโครงสร้าง OpenClaw จะปล่อยไว้เป็น ข้อความและบันทึกคำเตือนพร้อม run id, provider/model, รูปแบบที่ตรวจพบ และ ชื่อเครื่องมือเมื่อมี ให้ถือว่านั่นเป็นความไม่เข้ากันของการเรียกเครื่องมือของ provider/model ไม่ใช่การรันเครื่องมือที่เสร็จแล้ว
-
หากเครื่องมือปรากฏเป็นข้อความของ assistant แทนที่จะถูกรัน เช่น JSON ดิบ, XML, ไวยากรณ์ ReAct หรืออาร์เรย์
tool_callsว่างในคำตอบจาก provider ให้ตรวจสอบก่อนว่าเซิร์ฟเวอร์กำลังใช้ chat template/parser ที่รองรับการเรียกเครื่องมือ สำหรับ แบ็กเอนด์ Chat Completions ที่เข้ากันได้กับ OpenAI ซึ่ง parser ทำงานเฉพาะเมื่อบังคับใช้ เครื่องมือ ให้ตั้งค่า override คำขอต่อโมเดลแทนการพึ่งพาการแยกวิเคราะห์ข้อความ:json5 { agents: { defaults: { models: { "local/my-local-model": { params: { extra_body: { tool_choice: "required", }, }, }, }, }, },}ใช้สิ่งนี้เฉพาะกับโมเดล/เซสชันที่ทุกเทิร์นปกติควรเรียกเครื่องมือ สิ่งนี้จะ override ค่า proxy เริ่มต้นของ OpenClaw ที่เป็น
tool_choice: "auto"แทนที่local/my-local-modelด้วยอ้างอิง provider/model ที่ตรงตัวซึ่งแสดงโดยopenclaw models listbash openclaw config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge -
หากโมเดลแบบกำหนดเองที่เข้ากันได้กับ OpenAI ยอมรับระดับ reasoning effort ของ OpenAI นอกเหนือจาก โปรไฟล์ในตัว ให้ประกาศไว้ในบล็อก compat ของโมเดล การเพิ่ม
"xhigh"ที่นี่จะทำให้/think xhigh, ตัวเลือกเซสชัน, การตรวจสอบของ Gateway และการตรวจสอบllm-taskแสดงระดับนี้สำหรับอ้างอิง provider/model ที่กำหนดค่าไว้:json5 { models: { providers: { local: { baseUrl: "http://127.0.0.1:8000/v1", apiKey: "sk-local", api: "openai-responses", models: [ { id: "gpt-5.4", name: "GPT 5.4 via local proxy", reasoning: true, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 196608, maxTokens: 8192, compat: { supportedReasoningEfforts: ["low", "medium", "high", "xhigh"], reasoningEffortMap: { xhigh: "xhigh" }, }, }, ], }, }, },}
แบ็กเอนด์ที่เล็กกว่าหรือเข้มงวดกว่า
หากโมเดลโหลดได้เรียบร้อยแต่รอบการทำงานของเอเจนต์แบบเต็มทำงานผิดปกติ ให้ไล่ตรวจจากบนลงล่าง — ยืนยันการขนส่งข้อมูลก่อน แล้วจึงจำกัดขอบเขตให้แคบลง
-
ยืนยันว่าโมเดลภายในเครื่องตอบสนองได้เอง ไม่มีเครื่องมือ ไม่มีบริบทของเอเจนต์:
bash openclaw infer model run --local --model <provider/model> --prompt "Reply with exactly: pong" --json -
ยืนยันการกำหนดเส้นทางของ Gateway ส่งเฉพาะพรอมป์ที่ให้มา — ข้ามทรานสคริปต์, การบูตสแตรป AGENTS, การประกอบ context-engine, เครื่องมือ และเซิร์ฟเวอร์ MCP ที่รวมมา แต่ยังคงทดสอบการกำหนดเส้นทางของ Gateway, การยืนยันตัวตน และการเลือกผู้ให้บริการ:
bash openclaw infer model run --gateway --model <provider/model> --prompt "Reply with exactly: pong" --json -
ลองใช้โหมดแบบเบา หากโพรบทั้งสองผ่าน แต่การทำงานจริงของเอเจนต์ล้มเหลวด้วยการเรียกเครื่องมือที่มีรูปแบบไม่ถูกต้องหรือพรอมป์ที่ใหญ่เกินไป ให้เปิดใช้
agents.defaults.experimental.localModelLean: trueตัวเลือกนี้จะตัดเครื่องมือเริ่มต้นที่หนักที่สุดสามรายการ (browser,cron,message) ออก และตั้งค่าแค็ตตาล็อกเครื่องมือขนาดใหญ่กว่าให้อยู่หลังตัวควบคุม Tool Search แบบมีโครงสร้างเป็นค่าเริ่มต้น ยกเว้นการรันที่ต้องคงความหมายของการส่งmessageโดยตรงไว้ ดู ฟีเจอร์ทดลอง → โหมดแบบเบาสำหรับโมเดลภายในเครื่อง สำหรับคำอธิบายทั้งหมด เวลาที่ควรใช้ และวิธียืนยันว่าเปิดใช้งานอยู่ -
ปิดใช้เครื่องมือทั้งหมดเป็นทางเลือกสุดท้าย หากโหมดแบบเบายังไม่พอ ให้ตั้งค่า
models.providers.<provider>.models[].compat.supportsTools: falseสำหรับรายการโมเดลนั้น จากนั้นเอเจนต์จะทำงานกับโมเดลนั้นโดยไม่มีการเรียกเครื่องมือ -
หลังจากนั้น คอขวดอยู่ที่ต้นทาง หากแบ็กเอนด์ยังล้มเหลวเฉพาะในการรัน OpenClaw ขนาดใหญ่หลังจากใช้โหมดแบบเบาและ
supportsTools: falseแล้ว ปัญหาที่เหลือมักเป็นความจุของโมเดลหรือเซิร์ฟเวอร์ต้นทาง เช่น หน้าต่างบริบท หน่วยความจำ GPU การไล่ kv-cache ออก หรือบั๊กของแบ็กเอนด์ ณ จุดนั้นปัญหาไม่ได้อยู่ที่ชั้นการขนส่งของ OpenClaw
การแก้ปัญหา
- Gateway เข้าถึงพร็อกซีได้หรือไม่
curl http://127.0.0.1:1234/v1/models - โมเดล LM Studio ถูกยกเลิกการโหลดหรือไม่ โหลดใหม่ การเริ่มแบบเย็นเป็นสาเหตุทั่วไปของอาการ “ค้าง”
- เซิร์ฟเวอร์ภายในเครื่องแจ้งว่า
terminated,ECONNRESETหรือปิดสตรีมกลางเทิร์นหรือไม่ OpenClaw บันทึกmodel.call.error.failureKindที่มีคาร์ดินาลิตีต่ำ พร้อมสแนปช็อต RSS/heap ของกระบวนการ OpenClaw ในข้อมูลวินิจฉัย สำหรับแรงกดดันด้านหน่วยความจำของ LM Studio/Ollama ให้เทียบเวลานั้นกับบันทึกของเซิร์ฟเวอร์หรือบันทึก crash / jetsam ของ macOS เพื่อยืนยันว่าเซิร์ฟเวอร์โมเดลถูกปิดหรือไม่ - OpenClaw อนุมานเกณฑ์พรีไฟลต์ของหน้าต่างบริบทจากหน้าต่างโมเดลที่ตรวจพบ หรือจากหน้าต่างโมเดลแบบไม่จำกัดเมื่อ
agents.defaults.contextTokensลดหน้าต่างที่มีผลจริง ระบบจะเตือนเมื่อต่ำกว่า 20% โดยมีพื้นขั้นต่ำ 8k การบล็อกแบบเด็ดขาดใช้เกณฑ์ 10% โดยมีพื้นขั้นต่ำ 4k และจำกัดไว้ไม่เกินหน้าต่างบริบทที่มีผลจริง เพื่อให้เมทาดาทาโมเดลที่ใหญ่เกินไปไม่ปฏิเสธขีดจำกัดผู้ใช้ที่ยังใช้ได้ หากคุณเจอพรีไฟลต์นี้ ให้เพิ่มขีดจำกัดบริบทของเซิร์ฟเวอร์/โมเดล หรือเลือกโมเดลที่ใหญ่กว่า - เกิดข้อผิดพลาดบริบทหรือไม่ ลด
contextWindowหรือเพิ่มขีดจำกัดเซิร์ฟเวอร์ของคุณ - เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ส่งคืน
messages[].content ... expected a stringหรือไม่ เพิ่มcompat.requiresStringContent: trueในรายการโมเดลนั้น - เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ส่งคืน
validation.keysหรือบอกว่ารายการข้อความอนุญาตเฉพาะroleและcontentหรือไม่ เพิ่มcompat.strictMessageKeys: trueในรายการโมเดลนั้น - การเรียก
/v1/chat/completionsขนาดเล็กโดยตรงทำงานได้ แต่openclaw infer model run --localล้มเหลวกับ Gemma หรือโมเดลภายในเครื่องอื่นหรือไม่ ตรวจ URL ของผู้ให้บริการ การอ้างอิงโมเดล เครื่องหมายการยืนยันตัวตน และบันทึกเซิร์ฟเวอร์ก่อนmodel runภายในเครื่องไม่มีเครื่องมือของเอเจนต์รวมอยู่ หากmodel runภายในเครื่องสำเร็จ แต่เทิร์นเอเจนต์ที่ใหญ่กว่าล้มเหลว ให้ลดพื้นผิวเครื่องมือของเอเจนต์ ด้วยlocalModelLeanหรือcompat.supportsTools: false - การเรียกเครื่องมือแสดงเป็นข้อความ JSON/XML/ReAct ดิบ หรือผู้ให้บริการส่งคืน
อาร์เรย์
tool_callsว่างหรือไม่ อย่าเพิ่มพร็อกซีที่แปลงข้อความของผู้ช่วย เป็นการดำเนินการเครื่องมือแบบไม่พิจารณา ให้แก้เทมเพลต/ตัวแยกวิเคราะห์แชตของเซิร์ฟเวอร์ก่อน หาก โมเดลทำงานได้เฉพาะเมื่อบังคับใช้เครื่องมือ ให้เพิ่มการแทนที่รายโมเดลparams.extra_body.tool_choice: "required"ด้านบน และใช้รายการโมเดลนั้น เฉพาะกับเซสชันที่คาดว่าจะมีการเรียกเครื่องมือในทุกเทิร์น - ความปลอดภัย: โมเดลภายในเครื่องข้ามตัวกรองฝั่งผู้ให้บริการ ให้จำกัดขอบเขตเอเจนต์ให้แคบและเปิด Compaction เพื่อลดรัศมีผลกระทบของ prompt injection