วิธีเชื่อมต่อ Ollama กับ Coding Agent อย่างละเอียด
เรียนรู้วิธีตั้งค่า Coding Agent ให้ใช้โมเดลจาก Ollama ผ่านพอร์ต 11434 พร้อมวิธีตั้งค่า base URL การจัดการ API key และการปรับ context length ให้เหมาะสมกับการใช้งานจริง
สิ่งที่คุณกำลังเชื่อมต่อ
คุณสามารถใช้ Ollama ร่วมกับ coding agent ของคุณได้ โดยการเชื่อมต่อมีความซับซ้อนน้อยกว่าที่หลายคนคาดคิด คุณเพียงแค่เปลี่ยน base URL หนึ่งรายการและเลือกชื่อโมเดลหนึ่งชื่อ ช่องสำหรับใส่ API key ยังคงต้องการค่า แต่เซิร์ฟเวอร์ภายในเครื่องจะเพิกเฉยต่อค่านั้น ดังนั้นคุณสามารถใส่ข้อความใดก็ได้ลงไป
Ollama ฟังคำขอที่พอร์ต 11434 และให้บริการในรูปแบบคำขอสองประเภทพร้อมกัน /v1/chat/completions คือรูปแบบที่รองรับมาตรฐาน OpenAI ซึ่งเอกสารของ Ollama ระบุว่าจำเป็นต้องมี key แต่จะไม่มีการตรวจสอบ /v1/messages คือรูปแบบที่รองรับมาตรฐาน Anthropic ซึ่งเป็นภาษาที่ Claude Code ใช้สื่อสาร เนื่องจาก agent ของคุณรองรับรูปแบบใดรูปแบบหนึ่งอยู่แล้ว จึงไม่มีส่วนอื่นที่ต้องเปลี่ยนแปลง
ขั้นตอนนี้ใช้เวลาเพียง 5 นาที ผลลัพธ์จะใช้งานได้ดีหรือไม่นั้นขึ้นอยู่กับการตั้งค่าสองอย่างที่แทบไม่มีใครปรับเปลี่ยน นั่นคือ context length และ keep-alive รวมถึงการมอบหมายงานที่เหมาะสมกับความสามารถของโมเดล ทั้งสองหัวข้อนี้จะมีส่วนอธิบายแยกต่างหาก และข้อจำกัดตามความเป็นจริงจะระบุไว้ในส่วนท้าย
Coding agent ตัวใดบ้างที่รองรับการกำหนด base URL ภายในเครื่อง
การทดสอบทำได้ด้วยคำถามเดียวคือ เครื่องมือนั้นเปิดให้ตั้งค่า base URL หรือไม่ หากทำได้ เครื่องมือนั้นก็จะสามารถสื่อสารกับเซิร์ฟเวอร์ของคุณได้
Ollama ได้เผยแพร่หน้าการเชื่อมต่อสำหรับ Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs และ VS Code ส่วน Aider ได้จัดทำเอกสารสนับสนุน Ollama แยกต่างหาก ซึ่งครอบคลุมเครื่องมือส่วนใหญ่ที่ผู้คนมักหมายถึงเมื่อพูดถึง coding agent ในเดือนสิงหาคม 2026 อย่างไรก็ตาม เครื่องมือเหล่านี้ไม่ได้ใช้รูปแบบการสื่อสารเดียวกันทั้งหมด และความแตกต่างนี้เองที่เป็นสาเหตุให้การตั้งค่าล้มเหลว
- Coding agent ส่วนใหญ่ต้องการ endpoint ที่เข้ากันได้กับ OpenAI ให้ระบุ base URL เป็น
http://localhost:11434/v1และใส่ API key เป็นสตริงใดก็ได้ที่ไม่ว่างเปล่า - Claude Code ไม่รองรับ OpenAI base URL โดยตรง เนื่องจากใช้ Anthropic Messages API จึงจำเป็นต้องตั้งค่า
ANTHROPIC_BASE_URLให้เป็นhttp://localhost:11434ซึ่งเป็นตำแหน่งที่ Ollama ให้บริการ/v1/messagesอยู่ - Codex ใช้ OpenAI Responses API ซึ่ง Ollama ให้บริการผ่าน
/v1/responsesเช่นกัน โดยถูกเพิ่มเข้ามาในเวอร์ชัน 0.13.3 - Coding agent ที่ไม่มีการตั้งค่า base URL จะไม่สามารถเปลี่ยนเส้นทางได้ เนื่องจาก endpoint ถูกฝังไว้ในตัว client ให้ใช้เลเยอร์แปลงข้อมูลคั่นกลางแทน เช่น LiteLLM gateway ที่โฮสต์เอง แล้วนำโมเดลของคุณมาเผยแพร่ใหม่ในรูปแบบที่ client ต้องการ
Ollama สามารถเขียนไฟล์กำหนดค่าเหล่านี้ให้คุณได้ โดย ollama launch opencode จะเริ่มการทำงานของ OpenCode พร้อมการตั้งค่าแบบ inline สำหรับโมเดลที่คุณเลือก ส่วน ollama launch claude จะทำเช่นเดียวกันสำหรับ Claude Code และ ollama launch droid --config จะทำการเขียนไฟล์กำหนดค่าโดยไม่เปิดใช้งานเครื่องมือดังกล่าว
ติดตั้ง Ollama และดึงโมเดลที่สามารถเรียกใช้เครื่องมือได้
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsตัวติดตั้งจะเพิ่ม systemd unit และเริ่มการทำงานให้โดยอัตโนมัติ ดังนั้น systemctl status ollama ควรแสดงผลเป็น active (running) หากไม่เป็นเช่นนั้น journalctl -e -u ollama จะแสดงสาเหตุของปัญหา
โมเดลต้องรองรับการเรียกใช้เครื่องมือ (tool calling) เนื่องจากเป็นกลไกหลักในการทำงานของเอเจนต์ เอเจนต์จะอ่านไฟล์ เขียนแพตช์ รันการทดสอบ จากนั้นอ่านผลลัพธ์ที่ล้มเหลวแล้วลองใหม่ โมเดลที่ไม่สามารถสร้างการเรียกใช้เครื่องมือได้จะอธิบายการแก้ไขเป็นข้อความแทนที่จะลงมือทำจริง ซึ่งจะทำให้เอเจนต์วนลูปหรือหยุดทำงาน ให้มองหาป้ายกำกับ tools ในหน้าของโมเดลบน ollama.com ก่อนทำการดึงข้อมูล qwen3-coder:30b รองรับฟีเจอร์นี้ และ ณ เดือนสิงหาคม 2026 แท็กดังกล่าวมีขนาดดาวน์โหลด 19 GB พร้อมหน้าต่างบริบท (context window) ขนาด 256K หากเซิร์ฟเวอร์ของคุณเป็นแบบ CPU-only หรือมี RAM จำกัด การคำนวณหน่วยความจำสำหรับแท็ก Qwen 27B บน VPS จะแสดงให้เห็นว่าขนาดใดที่เหมาะสมกับ RAM ตั้งแต่ 8 ถึง 64 GB ก่อนที่คุณจะเริ่มดาวน์โหลด
ตรวจสอบว่าเซิร์ฟเวอร์ให้บริการโมเดลชื่อใดบ้าง:
curl http://localhost:11434/v1/modelsสตริงในผลลัพธ์ดังกล่าวคือสิ่งที่คุณต้องระบุในไฟล์ตั้งค่าของเอเจนต์ให้ตรงกันทุกตัวอักษร การตรวจสอบขั้นตอนนี้จะช่วยลดข้อผิดพลาดประเภท model-not-found ได้เกือบทั้งหมด หากยังไม่ได้ติดตั้ง Ollama สามารถดูขั้นตอนโดยละเอียดได้ที่ การโฮสต์ LLM ด้วยตนเองโดยใช้ Ollama บน VPS
การชี้ OpenCode ไปยัง Ollama
แก้ไขไฟล์ ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-coder:30b": {
"name": "qwen3-coder 30b"
}
}
}
}
}ค่าภายใต้ models คือชื่อโมเดลที่จะส่งไปยัง Ollama ดังนั้นจึงต้องตรงกับ ollama ls ทุกประการ ส่วนฟิลด์ name เป็นเพียงป้ายกำกับในตัวเลือกโมเดลเท่านั้น ให้เริ่มการทำงานของ opencode สลับไปที่ผู้ให้บริการ Ollama และเฝ้าดู journalctl -e -u ollama เพื่อยืนยันว่าคำขอมาถึงเซิร์ฟเวอร์ของคุณแล้ว ไม่ใช่ที่อื่น สำหรับการตั้งค่าตัวเอเจนต์นั้นได้อธิบายไว้ใน การรัน OpenCode บน VPS
การกำหนดค่า Claude Code ให้ใช้งานร่วมกับ Ollama
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bANTHROPIC_API_KEY ถูกตั้งค่าเป็นสตริงว่างโดยเจตนา หากมีการทิ้งคีย์จริงไว้ใน environment ระบบจะส่งคำขอของคุณไปยัง API ที่โฮสต์ไว้แทน ซึ่งจะทำให้คุณมีค่าใช้จ่ายเกิดขึ้นและไม่ได้ใช้งานการประมวลผลแบบ local ollama launch claude จะจัดการตั้งค่าทั้งหมดนี้ให้คุณ
โปรดทราบถึงข้อจำกัดของเลเยอร์ความเข้ากันได้ (compatibility layer) โดยระบบนี้ไม่ได้รองรับ tool_choice หรือการทำ prompt caching และไม่มี endpoint สำหรับนับจำนวน token ดังนั้นตัวเลข token ที่คุณเห็นจึงเป็นเพียงค่าประมาณจาก tokenizer ของตัวโมเดลเอง นอกจากนี้ Claude Code ยังมาพร้อมกับ system prompt ขนาดใหญ่และชุดเครื่องมือจำนวนมาก จึงต้องการบริบท (context) มากกว่าแอปพลิเคชันแชททั่วไป สำหรับคำถามในวงกว้างว่าสิ่งใดที่สามารถใช้งานร่วมกันได้และสิ่งใดที่ไม่รองรับ สามารถดูรายละเอียดได้ที่ ว่าคุณสามารถ self-host Claude ได้หรือไม่
การชี้ Aider ไปที่ Ollama
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bเอกสารประกอบของ Aider แนะนำให้ใช้ prefix ollama_chat/ แทน ollama/ นอกจากนี้ยังช่วยให้คุณสามารถกำหนดขนาด context window แยกตามโมเดลได้ใน .aider.model.settings.yml ซึ่งมีประโยชน์ในกรณีที่โมเดลหนึ่งต้องการขนาดหน้าต่างที่แตกต่างจากค่าเริ่มต้นของเซิร์ฟเวอร์:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536เหตุใดการตั้งค่าที่ทำงานได้ปกติจึงยังให้ผลลัพธ์ที่ไม่สมเหตุสมผล
นี่คือส่วนที่สำคัญที่สุด Ollama จะเลือกความยาวบริบท (context length) เริ่มต้นจาก VRAM (หน่วยความจำวิดีโอใน GPU) ที่ตรวจพบ ซึ่งค่าเริ่มต้นเหล่านี้ได้ถูกเผยแพร่ไว้ดังนี้:
The data behind this chart
[
{
"label": "Under 24 GiB VRAM",
"default_context_tokens": "4,096"
},
{
"label": "24 to 48 GiB VRAM",
"default_context_tokens": "32,768"
},
{
"label": "48 GiB VRAM or more",
"default_context_tokens": "262,144"
}
]แผนบริการ VPS ส่วนใหญ่และเซิร์ฟเวอร์ที่ใช้เฉพาะ CPU จะอยู่ในแถวแรกคือ 4,096 โทเค็น มีเพียง GPU ขนาดใหญ่เท่านั้นที่จะได้รับ 262,144 โทเค็นในแถวสุดท้าย
เอเจนต์จะใช้โทเค็นไป 4096 โทเค็นก่อนที่จะเริ่มทำงานใดๆ ทั้ง system prompt, คำจำกัดความของเครื่องมือ (tool definitions), รายการไฟล์ใน repository และไฟล์แรกที่เปิดขึ้นมานั้นมีขนาดใหญ่กว่าค่าดังกล่าวแล้ว สิ่งที่จะเกิดขึ้นหลังจากนั้นคือปัญหาทั้งหมด: ไม่มีการแจ้งเตือนข้อผิดพลาด เอกสารของ Aider ระบุว่า Ollama จะทิ้งบริบทที่เกินขนาดหน้าต่างไปโดยไม่มีการแจ้งเตือน โทเค็นที่เก่าที่สุดจะถูกลบออก ทำให้โมเดลตอบคำถามอย่างมั่นใจเกี่ยวกับไฟล์ที่มันไม่สามารถมองเห็นได้อีกต่อไป หรือลืมคำสั่งที่คุณให้ไว้ก่อนหน้านี้สองขั้นตอน กลไกนี้คือสาเหตุเบื้องหลังรายงานส่วนใหญ่ที่ว่าโมเดลท้องถิ่นนั้น "โง่เกินกว่าจะเขียนโค้ดได้"
เอกสารของ Ollama ระบุว่างานประเภทเอเจนต์และเครื่องมือเขียนโค้ดควรตั้งค่าไว้อย่างน้อย 64000 โทเค็น ให้ตั้งค่าบนเซิร์ฟเวอร์ดังนี้:
sudo systemctl edit ollama.serviceเพิ่มบรรทัดเหล่านี้ลงในไฟล์ override:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"จากนั้นโหลดการตั้งค่าใหม่และรีสตาร์ทบริการ:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psollama ps คือคำสั่งสำหรับตรวจสอบ โดยจะแสดงคอลัมน์ CONTEXT ซึ่งตัวเลขนั้นคือจำนวนที่โมเดลได้รับจริง ค่า ID และ SIZE ของคุณจะแตกต่างกัน:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowควรตั้งค่าบนเซิร์ฟเวอร์แทนที่จะตั้งในตัวเอเจนต์ด้วยเหตุผล 2 ประการ ประการแรก สคีมา OpenAI chat completions ไม่มีฟิลด์สำหรับความยาวบริบท ดังนั้นไคลเอนต์ที่รองรับ OpenAI จึงไม่สามารถร้องขอค่านี้ได้ ประการที่สอง การตั้งค่านี้เป็นแบบต่อเซิร์ฟเวอร์ ดังนั้นเอเจนต์ทุกตัวที่คุณชี้มายังเซิร์ฟเวอร์นี้จะได้รับค่าดังกล่าวไปโดยอัตโนมัติ หากมีโมเดลใดต้องการขนาดหน้าต่างที่ต่างออกไป ให้สร้างสำเนาขึ้นมาใหม่ด้วย Modelfile:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f Modelfileบริบทมีต้นทุน หน้าต่างที่ยาวขึ้นใช้หน่วยความจำมากขึ้น ดังนั้นให้คอยสังเกตคอลัมน์ PROCESSOR ค่า 100% GPU คือสิ่งที่คุณต้องการ เมื่อส่วนหนึ่งของโมเดลถูกย้ายไปประมวลผลที่ CPU อัตราการประมวลผลโทเค็นจะลดลงจนวงจรการทำงานของเอเจนต์ใช้งานไม่ได้จริง และ การวัดจำนวนโทเค็นต่อวินาทีบน LLM ท้องถิ่น คือวิธีที่คุณจะค้นหาขีดจำกัดที่แท้จริงของเครื่องคุณ การประเมินขนาดเครื่องก่อนตัดสินใจซื้อได้อธิบายไว้ใน RAM และ CPU ที่จำเป็นสำหรับ VPS ของเอเจนต์เขียนโค้ด
คงโมเดลไว้ในหน่วยความจำระหว่างการร้องขอ
โดยปกติ Ollama จะยกเลิกการโหลดโมเดลหลังจากไม่มีการร้องขอเป็นเวลา 5 นาที ซึ่งเหมาะสมสำหรับแชทบอทแต่ไม่เหมาะสำหรับงานประเภท Agent เมื่อคุณหยุดอ่าน diff ตัวจับเวลาจะทำงานจนครบกำหนด และการร้องขอถัดไปจะต้องโหลดข้อมูลน้ำหนัก (weights) ขนาดหลายสิบกิกะไบต์จากดิสก์ใหม่ก่อนที่จะแสดงโทเค็นแรก ทำให้ดูเหมือนระบบค้าง
OLLAMA_KEEP_ALIVE รับค่าเป็นสตริงระบุระยะเวลา เช่น 10m หรือ 24h, ตัวเลขจำนวนวินาทีปกติ, -1 เพื่อคงโมเดลไว้ในหน่วยความจำอย่างไม่มีกำหนด หรือ 0 เพื่อยกเลิกการโหลดทันที ให้ตั้งค่านี้ควบคู่ไปกับความยาวของบริบท (context length):
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"ฟิลด์การร้องขอ keep_alive มีอยู่เฉพาะใน endpoint /api/generate และ /api/chat แบบเนทีฟของ Ollama เท่านั้น ไม่รองรับใน endpoint ที่มีความเข้ากันได้ (compatibility endpoints) ดังนั้น Agent จึงไม่สามารถตั้งค่านี้แยกตามการร้องขอได้ ตัวแปรสภาพแวดล้อม (environment variable) จึงเป็นวิธีเดียวที่คุณสามารถทำได้ เมื่อคุณต้องการคืนพื้นที่หน่วยความจำ ให้ใช้ ollama stop qwen3-coder:30b เพื่อยกเลิกการโหลดโมเดลโดยไม่ต้องหยุดการทำงานของเซิร์ฟเวอร์
การรัน Ollama บนเซิร์ฟเวอร์แยกต่างหาก
Ollama จะผูกการทำงานไว้ที่ localhost หากต้องการเข้าถึงจากเครื่องอื่น ให้ตั้งค่า OLLAMA_HOST=0.0.0.0:11434 ในไฟล์ systemd override เดียวกันแล้วรีสตาร์ท service
ให้ดำเนินการเฉพาะบนเครือข่ายส่วนตัวเท่านั้น เอกสารของ Ollama ระบุว่า API ภายในเครื่องไม่จำเป็นต้องมีการยืนยันตัวตน ดังนั้นการเปิดพอร์ต 11434 สู่สาธารณะหมายความว่าใครก็ตามสามารถใช้ฮาร์ดแวร์ของคุณและอ่านข้อมูลทุกอย่างที่เอเจนต์ของคุณส่งได้ มีทางเลือกที่ปลอดภัย 2 ทาง คือคงการผูกไว้ที่ localhost แล้วทำ port forwarding ผ่าน SSH จากแล็ปท็อปของคุณ:
ssh -N -L 11434:localhost:11434 you@your-vpsเอเจนต์ของคุณจะยังคงชี้ไปที่ http://localhost:11434/v1 โดยไม่พบความแตกต่างใดๆ อีกทางเลือกหนึ่งคือการใช้ VPN โดยให้ Ollama ผูกกับที่อยู่ IP ของ VPN แทนที่จะเป็น 0.0.0.0 หากมีผู้ใช้หลายคนหรือเอเจนต์หลายตัวใช้งานเซิร์ฟเวอร์เครื่องเดียวกัน ตัวจัดตารางเวลาของ Ollama ไม่ได้ถูกออกแบบมาเพื่อรองรับภาระงานระดับนั้น และ การเปรียบเทียบระหว่าง Ollama และ vLLM จะแสดงให้เห็นว่าความแตกต่างของปริมาณงาน (throughput) เริ่มส่งผลกระทบในจุดใด
จุดแข็งและจุดอ่อนของการใช้โมเดลเขียนโค้ดภายในเครื่อง
เอเจนต์ที่ขับเคลื่อนด้วยโมเดลที่คุณโฮสต์เองไม่ได้เข้ามาแทนที่ API ระดับแนวหน้าในทุกงาน แต่มีจุดแข็งที่ชัดเจนในงาน 4 ประเภทดังนี้:
- การแก้ไขเชิงกลไกจำนวนมาก ซึ่งการเปลี่ยนแปลงแต่ละจุดมีขนาดเล็กและคุณสามารถตรวจสอบได้ เช่น การเปลี่ยนชื่อตัวแปรทั่วทั้ง repository, การเพิ่ม type hints, การเขียน docstrings หรือการแปลคอมเมนต์ โมเดลสามารถรันงานได้นานหลายชั่วโมงโดยไม่มีค่าใช้จ่ายเพิ่มเติม
- งานที่ไม่สามารถนำออกจากฮาร์ดแวร์ของคุณได้ เช่น โค้ดของลูกค้าภายใต้สัญญาเก็บรักษาความลับ หรือ repository ภายในที่ไม่ได้รับอนุญาตให้ส่งไปยังบุคคลที่สาม
- เครื่องที่ทำงานแบบออฟไลน์หรือ air-gapped ซึ่งไม่มี API ภายนอกให้เรียกใช้งานได้เลย
- ค่าใช้จ่ายที่คาดการณ์ได้ เมื่อจ่ายค่าเซิร์ฟเวอร์แล้ว เอเจนต์ที่ใช้โทเค็นจำนวนมากในลูปจะไม่สร้างค่าใช้จ่ายเพิ่ม ซึ่งตรงกันข้ามกับ API ที่คิดเงินตามการใช้งานจริง จุดคุ้มทุนของ GPU VPS เมื่อเทียบกับโทเค็น API มีการคำนวณในส่วนนี้
โมเดลภายในเครื่องจะเสียเปรียบในงานหลายขั้นตอนที่ซับซ้อน เช่น "หาสาเหตุที่ test นี้ล้มเหลว, แก้ไขต้นเหตุ, และอัปเดตส่วนที่เรียกใช้งาน" งานเหล่านี้ต้องการการเรียกใช้เครื่องมือที่ถูกต้องต่อเนื่องกันหลายครั้งโดยที่ประวัติทั้งหมดต้องยังคงอยู่ในบริบท โมเดลขนาด 8B ถึง 14B บนเซิร์ฟเวอร์ทั่วไปมักจะสร้างการเรียกใช้เครื่องมือที่ผิดรูปแบบ หรือสูญเสียแผนการทำงานหลังจากผ่านไปไม่กี่รอบ ทำให้คุณต้องเสียเวลาควบคุมมันมากกว่าการลงมือทำเอง ซึ่งไม่ใช่ปัญหาของ prompt ที่จะแก้ไขได้ด้วยการเขียนคำสั่ง แต่เป็นข้อจำกัดด้านขีดความสามารถของโมเดล
นอกจากนี้ โมเดลภายในเครื่องยังเสียเปรียบในงานที่ความผิดพลาดมีราคาแพงและคุณไม่สามารถตรวจสอบโค้ดทุกบรรทัดได้ ดังนั้นควรใช้โมเดลภายในเครื่องกับงานเฉพาะทางที่คุณสามารถตรวจสอบผลลัพธ์ได้ และใช้โมเดลแบบโฮสต์สำหรับงานที่คุณไม่ต้องการตรวจสอบทีละขั้นตอน
รูปแบบความล้มเหลวและข้อความที่คุณจะพบ
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. เซิร์ฟเวอร์ไม่ได้ทำงานอยู่ หรือ agent ชี้ไปยังโฮสต์อื่น ให้รัน systemctl status ollama จากนั้นรัน journalctl -e -u ollama
Agent รายงานว่าไม่พบโมเดลดังกล่าว ชื่อในไฟล์ config ของคุณไม่ตรงกับชื่อที่เซิร์ฟเวอร์ให้บริการ ให้เปรียบเทียบกับ curl http://localhost:11434/v1/models แล้วคัดลอกสตริงจากที่นั่นมาใช้งาน แท็กเป็นส่วนหนึ่งของชื่อ ดังนั้นหาก config ระบุแท็กที่คุณไม่เคยดึงมา (pull) จะทำให้เกิดข้อผิดพลาด แม้ว่าจะมีโมเดลที่คล้ายกันติดตั้งอยู่ก็ตาม
Agent ตอบกลับเป็นข้อความปกติและไม่แก้ไขไฟล์ใดๆ อาจเป็นเพราะโมเดลไม่รองรับเครื่องมือ (tool support) หรือคำขอรวมถึงคำจำกัดความของเครื่องมือมีขนาดเต็ม context window แล้ว ให้ตรวจสอบป้ายกำกับ tools ในหน้าโมเดล จากนั้นตรวจสอบคอลัมน์ CONTEXT ใน ollama ps
เกิดความเงียบเป็นเวลานานก่อนที่โทเค็นแรกจะปรากฏ จากนั้นจึงทำงานด้วยความเร็วปกติ ค่า keep-alive หมดอายุและระบบกำลังอ่านค่าน้ำหนัก (weights) จากดิสก์ใหม่อีกครั้ง ให้ตั้งค่า OLLAMA_KEEP_ALIVE
โมเดลให้ข้อมูลขัดแย้งกับไฟล์ที่เพิ่งอ่านไป เกิดการตัดทอน context (context truncation) โดยปกติแล้ว ollama ps จะแสดงค่า CONTEXT ที่น้อยกว่าที่คุณคิดว่าตั้งไว้ เนื่องจาก environment variable ถูกส่งไปยัง shell ของคุณแทนที่จะเป็น systemd unit
ทุกอย่างทำงานได้ แต่ช้า และ PROCESSOR ไม่ใช่ 100% GPU โมเดลรวมถึง context ของมันไม่สามารถบรรจุลงใน VRAM ได้ ให้ลดความยาวของ context ลง หรือเปลี่ยนไปใช้โมเดลที่มีขนาดเล็กลง หรือใช้การ quantisation ที่ต่ำลง
FAQ
ฉันสามารถชี้ Claude Code ไปที่ Ollama ได้หรือไม่
ได้ แต่ไม่ใช่ด้วย URL ที่รองรับ OpenAI โดยตรง Claude Code ใช้ Anthropic Messages API และ Ollama ให้บริการในรูปแบบดังกล่าวที่ /v1/messages บนพอร์ต 11434 ให้ส่งออกค่า ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama และ ANTHROPIC_API_KEY ที่ว่างเปล่า จากนั้นเริ่มการทำงานด้วย claude --model qwen3-coder:30b ทั้งนี้ ollama launch claude จะเขียนการตั้งค่าเดียวกันนี้ให้คุณ ชั้นความเข้ากันได้นี้ไม่ได้รองรับ tool_choice หรือการทำ prompt caching และไม่มี endpoint สำหรับนับจำนวน token ดังนั้นจำนวน token ที่แสดงจึงเป็นเพียงค่าประมาณ
ทำไมโมเดลในเครื่องของฉันถึงตอบคำถามเกี่ยวกับโค้ดที่มันมองไม่เห็น
เพราะคำขอมีขนาดเกิน context window และส่วนที่เก่าที่สุดถูกตัดออกโดยไม่มีข้อความแจ้งเตือน Ollama กำหนดค่า context เริ่มต้นจาก VRAM ที่ตรวจพบ และหากต่ำกว่า 24 GiB ค่าเริ่มต้นจะเป็น 4,096 token ซึ่งเพียงแค่ system prompt และคำจำกัดความของเครื่องมือของ agent ก็มีขนาดเกินจำนวนนี้แล้ว ให้ตั้งค่า OLLAMA_CONTEXT_LENGTH=64000 ใน systemd unit, รีสตาร์ท Ollama และตรวจสอบว่าคอลัมน์ CONTEXT ใน ollama ps แสดงค่าใหม่แล้ว
ฉันควรใช้โมเดลใดสำหรับ coding agent บน VPS
ให้เลือกโมเดลที่ใหญ่ที่สุดที่มีป้ายกำกับ tools ซึ่งยังคงพอดีกับหน่วยความจำเมื่อใช้ context window ขนาด 64k และควรเลือกโมเดลที่ปรับแต่งมาเพื่อการเขียนโค้ดโดยเฉพาะ qwen3-coder:30b เป็นคำตอบทั่วไปสำหรับเซิร์ฟเวอร์ที่มี GPU และมี VRAM เพียงพอ สำหรับโมเดลที่มีพารามิเตอร์ต่ำกว่า 14B อาจตอบคำถามเกี่ยวกับโค้ดได้ดี แต่อาจล้มเหลวในการแก้ไขโค้ดหลายขั้นตอน เนื่องจากงานของ agent จะได้รับผลกระทบอย่างมากจากข้อผิดพลาดในการจัดรูปแบบเล็กน้อยใน tool calls ให้ทดสอบด้วยงานจริงจาก repository ของคุณเองแทนการใช้ prompt ตัวอย่าง
ฉันจำเป็นต้องมี GPU เพื่อรัน coding agent ด้วยโมเดลของตัวเองหรือไม่
ในทางปฏิบัติคือจำเป็น การอนุมานด้วย CPU เพียงอย่างเดียวสามารถทำได้และเพียงพอสำหรับคำถามสั้นๆ แต่ agent จะส่งคำขอจำนวนมากต่อหนึ่งงาน และแต่ละคำขอต้องอ่านประวัติการสนทนาที่ยาวนาน ดังนั้นอัตราการประมวลผล token ที่ช้าจะทำให้งานที่ควรใช้เวลาสองนาทีกลายเป็นหนึ่งชั่วโมง ให้ตรวจสอบคอลัมน์ PROCESSOR ใน ollama ps หากค่าใดก็ตามที่ไม่ใช่ 100% GPU หมายความว่าโมเดลบางส่วนกำลังทำงานบน CPU ซึ่งจะทำให้อัตราการประมวลผล token ลดลงอย่างมาก