Skip to main content

13 posts tagged with "litellm"

View All Tags

TypeSafe Jev — System One Model ที่ไม่ generate text แต่ลด token ของ agent ได้จริง

· 10 min read

"Jev ไม่ใช่ LLM — มันไม่ generate text, ไม่ parse string, และ schema-lock output จน type error เป็นไปไม่ได้. คำถามคือ: เอามันไปทำอะไรใน pipeline ของเราได้บ้าง?"

LiteLLM guardrail blog — Jev + LiteLLM compaction DataCamp explainer — System One Model + benchmarks tamaratran/fast-jev-compaction — Claude Code plugin ที่ hook /compact (4.2k stars)

ผมเพิ่งเห็น post ใน Facebook ของ Geek Consult บอกว่า TypeSafe ปล่อย skill ให้ใช้ Jev ผ่าน Codex/Claude ได้แล้ว + คนเริ่มเอาไปใช้แล้ว "ลด token ได้จริง"

ทีแรกผมคิดว่าเป็น hype แบบเดิม — แต่พออ่าน docs + benchmark + community projects แล้วพบว่า มันเป็นแนวคิดที่ต่างจาก LLM จริงๆ และ token reduction ในบาง use case ไม่ใช่ marketing

LiteLLM journey: Self-host economics — 776M tokens/week, $0 vs $128/เดือน

· 5 min read

"ผมรู้สึกว่า DGX คุ้ม — verify ด้วยตัวเลขจาก LiteLLM SpendLogs"

Part 1 — drop_params ทำไมต้อง recreate Part 2 — 3 flags ที่ช่วยเพิ่มประสิทธิภาพ Part 3 — DB mode + 3-way sync Part 4 — vLLM integration + pitfalls Part 5 — ตัวเลขจริงจาก SpendLogs — self-host vs cloud

LiteLLM journey: vLLM integration — drop_params + reasoning + DGX Spark pitfalls

· 5 min read

"ผมเชื่อว่า vLLM integration คือเรื่องง่าย — จนกว่าจะเจอ 3 pitfalls: reasoning_content → reasoning, ContextWindowExceededError ไม่บอกชัด, และ drop_params มี 3 ระดับ"

Part 1 — drop_params ทำไมต้อง recreate Part 2 — 3 flags ที่ใช้บ่อย Part 3 — DB mode + 3-way sync Part 4 — vLLM integration + pitfalls

LiteLLM journey: 3 flags ที่ช่วยเพิ่มประสิทธิภาพ — drop_params + cache + callbacks

· 5 min read

"LiteLLM config มี 100+ flags แต่ถ้าเลือกได้แค่ 3 ตัว ผมเลือกตัวนี้ — แต่ละตัวช่วยเพิ่มประสิทธิภาพคนละแบบ"

มีคนบอกผมว่า "ตั้ง flag เยอะๆ เข้าไว้" แล้วมันจะ work มันก็ work จริง — แต่ไม่ใช่ทุก flag ที่ apply ทันที

Part 1 ผมเล่าเรื่อง drop_params ที่ตั้งผ่าน DB อย่างเดียวไม่พอ ต้อง recreate Part 2 นี้คือภาพกว้าง — 3 flags ที่ผมตั้งก่อนเปิดใช้งานทุกครั้ง และทำไม flag บางตัวใช้ DB update พอ

LiteLLM journey: DB mode — 3 tables, config.yaml overlay, 60s auto-reload

· 5 min read

"ผม assume ว่า config.yaml เป็น source of truth — จนกว่าจะไปอ่าน docs เจอบรรทัดนี้: 'DB rows overlay config.yaml on every refresh'"

Part 1 ผมเล่าเรื่อง drop_params ต้อง recreate Part 2 ผมเล่าเรื่อง 3 flags ที่ใช้บ่อย Part 3 คือภาพของ DB mode — เก็บอะไรไว้ที่ไหน, config.yaml กับ DB ตัวไหนมีลำดับสูงกว่า, auto-reload ทำอะไรได้บ้าง

LiteLLM journey: drop_params ทำไมต้อง recreate

· 4 min read

"ทุกอย่างดูเหมือนตั้งค่าถูกต้องใน DB แต่ logs ก็ยังโยน error 400 ออกมา — แล้วผมก็นั่งงงอยู่สิบนาทีกว่าจะรู้ว่า 'ค่านี้' apply ตอน start container เท่านั้น"

ผมเปลี่ยน drop_params จาก false เป็น true เพื่อให้ LiteLLM drop reasoning_effort แบบเงียบๆ — pattern ที่ docs แนะนำ และ community ใน r/LocalLLaMA ก็เห็นด้วย

แต่ error ก็ยังเด้งออกมาหลังจากนั้นสองชั่วโมง

ลอง trace ดูกันว่าเกิดอะไรขึ้น และ lesson คืออะไร

เมื่อ shared gateway เจอ client ที่ส่งของไม่ครบ: บทเรียน debug 400 (2013) ข้าม 3 ระบบ

· 11 min read

ตอนสามทุ่มวันจันทร์ LiteLLM log เริ่มเต็มไปด้วย 400 ทุก 2-3 วินาที — request_id วนลูป, model group M3-CODE-256k, Available Model Group Fallbacks=None. ผมไม่รู้ว่ามันคือ harness ที่เพิ่งอัปเดตเมื่อวาน หรือ gateway ที่ pin version ไว้เมื่อเดือนก่อน

นี่คือ investigation log เต็มของ bug ที่ทำให้ผม recreate container สามรอบในคืนเดียว, post บน GitHub, และค้นพบว่าทางออกที่ดีที่สุดคือ 91 บรรทัดที่ไม่มีใครเขียนมาก่อน

vLLM Chat Completion Params ทั้ง 52 ตัว และวิธี Override ผ่าน LiteLLM

· 10 min read

บันทึก 27 มิถุนายน 2569 — หลังจากใช้ vLLM มาสักพัก อยากรู้ว่าจริง ๆ แล้ว params ที่ส่งได้ใน /v1/chat/completions มีอะไรบ้าง และอันไหนส่งผ่าน LiteLLM ได้โดยตรง อันไหนต้องใช้ extra_body

ผมใช้ vLLM เป็น inference backend มาสักพัก แต่ไม่เคยนั่งดูจริง ๆ ว่า /v1/chat/completions endpoint รองรับ parameters อะไรบ้างเต็ม ๆ ส่วนใหญ่ก็แค่ส่ง temperature, top_p, max_tokens ไปแล้วก็จบ — จนวันนี้ลองเปิด OpenAPI schema ดู ถึงรู้ว่ามี params ที่ใช้ไม่เคยรู้จักตั้งหลายตัว

Virtual Models บน LiteLLM Proxy: Ornith-1.0-35B 10 profiles ใช้ reasoning_effort คุมพฤติกรรม

· 13 min read

หลังจาก deploy Ornith-1.0-35B-NVFP4 บน DGX Spark สำเร็จแล้ว (ดูรายละเอียดใน บทความก่อนหน้า) ขั้นตอนต่อไปคือสร้าง Virtual Models ผ่าน LiteLLM Proxy เหมือนที่เคยทำกับ Qwen3.6

ความต่างสำคัญ: Ornith มี reasoning_effort 7 levels (none/minimal/low/medium/high/xhigh/max) แทนที่แค่ enable_thinking: true|false แบบ Qwen ทำให้คุมความลึกของ reasoning ได้ละเอียดกว่า และมี thinking_token_budget สำหรับจำกัดจำนวน thinking tokens ต่อ request

MiniMax-M3 - Model ใหม่ 1M Context ควบคู่กับ LiteLLM Gateway

· 8 min read

เมื่อสัปดาห์ที่แล้วผมลองเปลี่ยนโมเดลบน LiteLLM proxy จาก Qwen3.6-35B ไปเป็น MiniMax-M3 แล้วเจอว่าพารามิเตอร์ที่ใช้อยู่กับ Qwen ใช้กับ M3 ไม่ได้เลย

Qwen ผมตั้ง presence_penalty=1.5, top_k=20, chat_template_kwargs={"preserve_thinking": true} — แต่ M3 เพิกเฉย top_k และ presence_penalty (บน API) และใช้ reasoning_split แทน preserve_thinking

Note: อย่า copy-paste config ระหว่าง model — แต่ละโมเดลมีพารามิเตอร์ default และ recommended range ต่างกัน การตั้งค่า Qwen มาใส่ M3 โดยไม่ตรวจสอบ = พารามิเตอร์ที่ถูกเพิกเฉยโดยไม่มีการแจ้งเตือน

พออ่าน docs ของ MiniMax อย่างละเอียดแล้ว เลยต้องปรับ profile ใหม่ทั้งหมด — ผลที่ได้คือชุด config ที่ผมใช้มาตลอด และอยากเอามาเล่าให้ฟัง