System Prompt Engineering ใน LM Studio สำหรับการเขียนโค้ด: อธิบาย `temperature`, `context_length` และ `stop` tokens
คุณปรับ top_p, top_k และ repeat_penalty มาแล้ว output หยุดวนซ้ำและไม่สุ่มสี่สุ่มห้าอีกต่อไป แต่โมเดลยังวอกแวกออกนอกเรื่อง ลืมโค้ดที่เขียนไปก่อนหน้า หรือไม่หยุดตรงที่ต้องการ
นั่นคือ parameter ชุดอื่นที่สำคัญไม่แพ้กัน
บทความนี้ครอบคลุมสามพารามิเตอร์ที่ควบคุม วิธีที่โมเดลเข้าใจบทบาทของตัวเอง, ปริมาณที่จำได้, และ จุดที่หยุดเขียน: temperature, context_length และ stop tokens
🌡️ temperature คืออะไร?
ถ้า top_p และ top_k คือการกรองว่า token ไหนเป็นตัวเลือก temperature คือการควบคุมว่าโมเดล มั่นใจแค่ไหน ในการเลือกจากตัวเลือกเหล่านั้น
คิดว่าเป็นปุ่มหมุนระหว่าง โฟกัส และ สร้างสรรค์:
temperature = 0.0→ กำหนดผลลัพธ์ตายตัว โมเดลเลือก token ที่น่าจะเป็นไปได้มากที่สุดเสมอ prompt เดิม = output เดิมทุกครั้งtemperature = 0.2→ ผ่อนคลายเล็กน้อย บางครั้งพิจารณาตัวเลือกที่สองหรือสามtemperature = 1.0→ ความน่าจะเป็นเต็มที่ token ทุกตัวในรายการมีน้ำหนักเท่ากัน — output คาดเดาไม่ได้temperature > 1.0→ ไม่เป็นระเบียบสุดขีด อย่าใช้กับโค้ด
👉 ค่าที่แนะนำสำหรับการเขียนโค้ด: 0.1–0.3
การเขียนโค้ดไม่ใช่การเขียนสร้างสรรค์ function signature, loop, SQL query — มีคำตอบที่ถูกต้องและคุณต้องการให้โมเดลมุ่งมั่นกับมัน temperature สูงคือสาเหตุที่โมเดลบางครั้งคืน Python ที่ถูกต้องในครั้งหนึ่ง และคืน Python ที่ syntax ผิดในครั้งถัดไป
{
"temperature": 0.2
}
เมื่อไหรที่ควรสูงขึ้นเล็กน้อย (0.4–0.6): การสร้าง boilerplate, comment อธิบายโค้ด หรือส่วน README ที่รับการเปลี่ยนแปลงในการใช้ถ้อยคำได้
ไม่ควรเกิน 0.7 สำหรับโค้ด คุณจะได้ชื่อ library ที่ไม่มีอยู่จริง, การจัดย่อหน้าที่ผิดพลาด และ logic ที่ดูน่าเชื่อถือแต่ทำงานไม่ได้
📏 context_length คืออะไร?
context_length (หรือ n_ctx ใน UI บางตัว) กำหนดว่าโมเดลสามารถ "มองเห็น" ได้กี่ token พร้อมกัน — เหมือนกับหน่วยความจำในการทำงาน
ซึ่งรวมถึง:
- System prompt ของคุณ
- ประวัติการสนทนาทั้งหมด
- เอกสารหรือโค้ดที่วางเข้าไป
- output ของโมเดลเองจนถึงปัจจุบัน
เมื่อ context window เต็ม โมเดลจะเริ่ม ลืมตอนต้น สำหรับ session การเขียนโค้ด หมายความว่ามันลืม function definition ก่อนหน้า ชื่อตัวแปรที่กำหนดไว้ หรือข้อจำกัดของโปรเจกต์ที่อธิบายไว้ใน system prompt
👉 ค่าที่แนะนำตามงาน:
| งาน | context_length |
|---|---|
| เติมโค้ด function เดียว | 2,048 |
| ตรวจสอบโค้ดระดับไฟล์ | 4,096 |
| Session การ refactor หลายไฟล์ | 8,192 |
| ถาม-ตอบเกี่ยวกับ codebase ขนาดใหญ่ | 16,384–32,768 |
{
"n_ctx": 8192
}
ต้นทุน RAM: Context length กำหนดโดยตรงว่าโมเดลใช้ RAM เท่าไหร่ บนเครื่อง 8GB การรัน model ขนาด 7B ที่ n_ctx = 32768 มีแนวโน้มทำให้เกิด OOM error หรือทำงานช้ามาก สูตรประมาณการ:
RAM สำหรับ context ≈
n_ctx × 2 bytesสำหรับ model ที่ quantise แบบ Q4
ดังนั้น n_ctx = 8192 ใช้ RAM ประมาณ 16MB สำหรับ context storage — จัดการได้ n_ctx = 32768 ใช้ ~64MB น้ำหนักของ model เองใช้ส่วนใหญ่ context เพิ่มเติมขึ้นไป
จุดตกของคุณภาพ: ที่ปลายสุดของ context window โมเดลส่วนใหญ่เริ่มสูญเสียความสอดคล้อง — "ลืม" สิ่งที่พูดตอนต้นแม้ว่าจะยังอยู่ใน window สำหรับความช่วยเหลือในการเขียนโค้ดที่เชื่อถือได้ ให้เก็บเนื้อหาจริงไว้ที่ 70–80% ของ context_length ที่ตั้งไว้ ถ้าตั้ง n_ctx = 8192 ให้ถือว่า 6,000 tokens เป็นเพดานในทางปฏิบัติ
🛑 stop tokens คืออะไร?
stop tokens บอกโมเดลว่า: "เมื่อเห็น string นี้ใน output ให้หยุดเขียนทันที"
หากไม่มี โมเดลจะสร้าง text ต่อเนื่องเกินจุดสิ้นสุดตามตรรกะ — เพิ่มคำอธิบายเพิ่มเติม, สร้างโค้ดติดตาม หรือพูดซ้ำตัวเอง
{
"stop": ["```", "# END", "\n\n\n"]
}
ทำไมถึงสำคัญสำหรับโค้ดโดยเฉพาะ
เมื่อขอให้โมเดลเขียน function ภายใน code block คุณต้องการให้หยุดที่ triple backtick ปิด หากไม่มี stop token มักจะดำเนินต่อ:
ไม่มี stop token:
```python
def calculate_tax(amount):
return amount * 0.07
คุณยังสามารถขยายสิ่งนี้เพื่อจัดการอัตราภาษีที่แตกต่างกัน:
def calculate_tax(amount, rate=0.07):
...
จริงๆ นี่คือเวอร์ชั่นที่ดีกว่า…
**ด้วย "stop": ["`"]:**
def calculate_tax(amount):
return amount * 0.07
สะอาด เสร็จสิ้น
### stop tokens ที่มีประโยชน์สำหรับงานเขียนโค้ด:
| Use case | ค่า stop |
|---|---|
| Output code block | ` "`" ` |
| Function เดียว ไม่มี prose | "\ndef " (หยุดก่อน function def ถัดไป) |
| Structured JSON output | "}" + นับด้วยตนเอง หรือ schema validation |
| Diff / patch output | "---" |
| ป้องกันคำอธิบายยืดยาด | "\n\n\n" (สามบรรทัดว่าง) |
---
## ⚙️ Config ที่แนะนำทั้งหมดสำหรับการเขียนโค้ดใน LM Studio
รวม parameter ของบทความนี้กับการตั้งค่า top_p/top_k/repeat_penalty ก่อนหน้า:
```json
{
"temperature": 0.2,
"top_k": 40,
"top_p": 0.9,
"repeat_penalty": 1.05,
"n_ctx": 8192,
"max_tokens": 2048,
"stop": ["```", "\n\n\n"],
"seed": -1
}
🧠 การเขียน System Prompt ที่ใช้งานได้จริงสำหรับโค้ด
สาม parameter นี้จะมีพลังมากขึ้นอย่างมีนัยสำคัญเมื่อรวมกับ system prompt ที่เขียนดี System prompt กำหนดบทบาทและข้อจำกัดของโมเดล ก่อน การสนทนาโค้ดใดๆ เริ่มต้น — มันใช้ส่วนหนึ่งของ context_length ดังนั้นให้กระชับ
สิ่งที่ทำให้ system prompt สำหรับโค้ดดี:
ระบุภาษาและ style อย่างชัดเจน:
You are a Python 3.11 backend developer. Use type hints on all functions.
Follow PEP 8. Prefer standard library over third-party packages unless necessary.
กำหนดความคาดหวังรูปแบบ output:
When writing code, output only the code block with no explanation before or after,
unless explicitly asked. Use triple backtick fences.
กำหนดข้อจำกัดของโปรเจกต์:
This project uses FastAPI 0.111, PostgreSQL 16, and Python 3.11.
No Django. No SQLAlchemy — use raw asyncpg for database queries.
System prompt เต็มรูปแบบที่เราใช้สำหรับงาน backend ที่ Simplico:
You are a senior backend engineer. Stack: FastAPI, Python 3.11, PostgreSQL with asyncpg, pgvector.
Always use async/await. Use type hints. Follow PEP 8.
Output code only — no explanations unless asked. Use triple backticks.
If the task is ambiguous, ask one clarifying question before writing code.
Do not hallucinate library names. If unsure about an API, say so.
Prompt นี้ใช้ประมาณ 80–100 tokens — เป็นสัดส่วนเล็กน้อยของ context 8,192-token ผลตอบแทนของ token เหล่านั้นนั้นมหาศาล: คำตอบที่ผิด stack น้อยลง รูปแบบ output ที่สะอาดขึ้น และโมเดลที่ถามก่อนจะสมมติ
🧮 สรุปการทำงานร่วมกันของ Parameter
| Parameter | ควบคุม | ค่าที่เหมาะสมสำหรับโค้ด |
|---|---|---|
temperature |
ความมั่นใจของโมเดลในการเลือก | 0.1–0.3 |
top_k |
จำนวน token candidate ที่พิจารณา | 20–50 |
top_p |
probability mass ของ candidate ที่รวม | 0.85–0.9 |
repeat_penalty |
การยับยั้ง token ที่เพิ่งใช้ซ้ำ | 1.05–1.1 |
n_ctx |
ปริมาณที่โมเดล "มองเห็น" พร้อมกัน | 8,192 สำหรับงานส่วนใหญ่ |
stop |
จุดที่โมเดลหยุดสร้าง | " + "\n\n\n"` |
คิดว่าเป็นชั้นๆ:
n_ctxกำหนด ขนาดห้อง — ปริมาณที่โมเดลเก็บในหน่วยความจำได้- System prompt กำหนด กฎของห้อง — บทบาท, stack, รูปแบบ output
temperature+top_k+top_pควบคุม วิธีที่โมเดลเลือกแต่ละคำrepeat_penaltyป้องกัน การวนซ้ำstoptokens กำหนด ทางออก
✅ สรุปสาระสำคัญ
temperature= ความมั่นใจ → ให้ต่ำ (0.1–0.3) สำหรับโค้ดที่กำหนดผลลัพธ์ได้และถูกต้องcontext_length= หน่วยความจำในการทำงาน → กำหนดขนาดตามงาน อย่า max ออกโดยไม่คิดstoptokens = จุดสิ้นสุดที่สะอาด → ตั้ง""` เสมอเมื่อสร้าง code block- System prompt = ตัวคูณ → system prompt 100 token จ่ายผลตอบแทนในทุก query ของ session
ด้วยการตั้งค่า parameter ทั้งหกพร้อมกัน LM Studio จะหยุดเป็นแค่ "autocomplete อัจฉริยะ" และกลายเป็น coding collaborator ที่เชื่อถือได้ ที่อยู่ถูก stack, หยุดตรงที่ต้องการ และไม่ลืม context กลางเซสชัน
🔗 บทความที่เกี่ยวข้อง
- ปรับแต่ง LM Studio สำหรับงานโค้ด: เข้าใจ
top_p,top_kและrepeat_penalty - LlamaIndex + pgvector: RAG ระดับ Production สำหรับเอกสารธุรกิจไทยและญี่ปุ่น
ต้องการความช่วยเหลือในการตั้งค่า local AI coding environment สำหรับทีม? ติดต่อ Simplico — เราสร้างและปรับแต่ง AI-assisted development workflows สำหรับทีมวิศวกรทั่วไทยและญี่ปุ่น
Get in Touch with us
Related Posts
- LlamaIndex + pgvector: RAG ระดับ Production สำหรับเอกสารธุรกิจไทยและญี่ปุ่น
- simpliShop: แพลตฟอร์มอีคอมเมิร์ซไทย รองรับสินค้าทำตามสั่งและหลายภาษาในระบบเดียว
- ทำไม ERP ถึงล้มเหลว (และจะทำให้โครงการของคุณสำเร็จได้อย่างไร)
- Idempotency ใน Payment API คืออะไร?
- Agentic AI ใน SOC Workflows: เกินกว่า Playbook สู่การป้องกันอัตโนมัติ (คู่มือ 2026)
- สร้าง SOC ตั้งแต่ศูนย์: บันทึกจากสนามจริงด้วย Wazuh + IRIS-web
- ซอฟต์แวร์โรงงานรีไซเคิล: ระบบจัดการครบวงจรสำหรับธุรกิจรีไซเคิลไทย
- คืนทุนจากซอฟต์แวร์พลังงาน: ลดต้นทุนค่าไฟได้ 15–40% จริงหรือ?
- วิธีสร้าง SOC แบบ Lightweight ด้วย Wazuh + Open Source
- วิธีเชื่อมต่อร้านค้าออนไลน์กับระบบ ERP อย่างถูกต้อง: คู่มือปฏิบัติจริง (2026)
- AI Coding Assistant ใช้เครื่องมืออะไรอยู่เบื้องหลัง? (Claude Code, Codex CLI, Aider)
- ประหยัดน้ำมันอย่างได้ผล: ฟิสิกส์ของการขับด้วยโหลดสูง รอบต่ำ
- ระบบบริหารคลังทุเรียนและผลไม้ — WMS เชื่อมบัญชี สร้างเอกสารส่งออกอัตโนมัติ
- ล้งทุเรียนยุคใหม่: หยุดนับสต็อกด้วยกระดาษ เริ่มควบคุมธุรกิจด้วยระบบ
- AI System Reverse Engineering: ใช้ AI ทำความเข้าใจระบบซอฟต์แวร์ Legacy (Architecture, Code และ Data)
- ความได้เปรียบของมนุษย์: บริการพัฒนาซอฟต์แวร์ที่ AI ไม่อาจทดแทนได้
- จาก Zero สู่ OCPP: สร้างแพลตฟอร์มชาร์จ EV แบบ White-Label
- Wazuh Decoders & Rules: โมเดลความเข้าใจที่หายไป
- การสร้างระบบติดตาม OEE แบบเรียลไทม์สำหรับโรงงานอุตสาหกรรม
- ความเชื่อเรื่อง Enterprise Software ราคาเป็นล้านกำลังจะจบลง มื่อ Open‑Source + AI กำลังแทนที่ระบบองค์กรราคาแพง













