Agents ทำงานเป็นลูป: LLM ตัดสินใจว่าจะทำอะไร, เครื่องมือ (Tool) จะทำการประมวลผล, โมเดลจะประเมินผลลัพธ์ แล้ววนซ้ำลูปนี้จนกว่างานจะเสร็จสมบูรณ์
ในช่วงแรก การนำ Agents และ LLM มาผสานรวมเข้ากับแอปพลิเคชันซอฟต์แวร์เป็นเรื่องยาก เนื่องจากซอฟต์แวร์เหล่านี้พึ่งพาข้อมูลที่มีโครงสร้างและอินเทอร์เฟซที่คาดการณ์ได้ แต่มีสององค์ประกอบพื้นฐาน (Primitives) ที่ช่วยให้กระบวนการนี้ง่ายขึ้นอย่างมาก:
- การเรียกใช้เครื่องมือ (Tool calling) ช่วยให้โมเดลสามารถส่งคำขอที่มีโครงสร้างและรับผลลัพธ์ที่มีโครงสร้างกลับมาได้
- ผลลัพธ์ที่มีโครงสร้าง (Structured outputs) ช่วยให้โมเดลสามารถส่งคืนผลลัพธ์ที่มีโครงสร้างได้
แต่แม้จะมีสิ่งเหล่านั้นแล้ว ลูปของ Agent ยังคง ช้า และ มีค่าใช้จ่ายสูง: เพราะทุกการตัดสินใจต้องมีการเรียกใช้โมเดลอีกครั้ง
ขอแนะนำ Jev ซึ่งเป็นโมเดลใหม่ ที่เปิดตัวโดย TypeSafe AI ทางบริษัทรายงานว่า Jev มีประสิทธิภาพในการอนุมาน (Inference) เร็วกว่าถึง 200 เท่า และมีต้นทุนต่ำกว่า 400 เท่า เมื่อเทียบกับ LLM ที่คล้ายคลึงกันในงานจำแนกประเภท (Classification tasks)
https://x.com/CompleteSkeptic/status/2099925682726002904
บทความนี้จะอธิบายว่า Jev ทำงานอย่างไร ตำแหน่งของมันในลูปของ Agent คืออะไร และวิธีใช้งานร่วมกับ LangChain
เจาะลึกเรื่อง Jev
Jev ไม่ใช่ LLM แบบดั้งเดิม มันไม่ได้สร้างข้อความ (Generate text) แต่เป็นสิ่งที่ทีม TypeSafe AI เรียกว่า System One model:
📖 System One models คือกลุ่มของโมเดล AI ที่ถูกสร้างขึ้นเพื่อตัดสินใจอย่างรวดเร็วและมีโครงสร้าง ซึ่งซอฟต์แวร์สามารถนำไปใช้ได้โดยตรง System One model จะประเมิน
สถานะ (state) และส่งคืนคำตอบที่มีชนิดข้อมูลชัดเจน (Typed answers) พร้อมความน่าจะเป็น
มันถูกฝึกโดยใช้ Reinforcement Learning for Calibrated Decisions (RLCD) โค้ดของคุณจะใช้ผลลัพธ์เหล่านั้นเพื่อนำทางสิ่งที่ Agent จะทำต่อไป โดยไม่ต้องเรียกใช้ Chat LLM เต็มรูปแบบสำหรับการตัดสินใจแต่ละครั้ง
เพื่อเรียกใช้โมเดล Jev คุณต้องส่ง สถานะ (state) (บริบท) และ คำถาม (questions) เกี่ยวกับสถานะนั้นไปให้ นี่คือเวอร์ชันคำถามเดียวจากตัวอย่างตั๋วสนับสนุน (Support-ticket) ใน เอกสารของพวกเขา:
1{2 "model": "jev-latest",3 "state": "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.",4 "questions": {5 "is_urgent": {6 "type": "noul",7 "instructions": "The message conveys urgency or time-sensitivity"8 }9 }10}
ตัวอย่างในเอกสารให้คำตอบด้านความเร่งด่วนดังนี้ ซึ่งแสดงที่นี่โดยไม่รวมส่วนอื่นๆ ของการตอบกลับ:
1{2 "is_urgent": {3 "type": "noul",4 "noul": 0.9995 }6}
นั่นคือความน่าจะเป็น 99.9% ว่าข้อความนั้นเร่งด่วน ซึ่งแอปพลิเคชันของคุณสามารถใช้เพื่อจัดลำดับความสำคัญของตั๋วได้
มีสามประเภทของ คำถาม ที่รองรับ:

- Choice: เลือกจากชุดตัวเลือกที่กำหนด คืนค่าความน่าจะเป็นสำหรับแต่ละตัวเลือกและคะแนนความเชื่อมั่นโดยรวม
- Score: ให้คะแนนอินพุตตามระดับที่เป็นลำดับ เช่น ต่ำ กลาง และสูง คืนค่าคะแนนต่อเนื่อง การกระจายตัวเบื้องหลัง และค่าความเชื่อมั่น
- Noul: ตอบคำถามแบบใช่หรือไม่ใช่ (Yes-or-no) คืนค่าความน่าจะเป็นที่ประโยคหนึ่งจะเป็นจริง
ฟีเจอร์สำคัญอย่างหนึ่งคือคุณสามารถถามหลายคำถามเกี่ยวกับสถานะเดียวกันได้ในคำขอเดียว
💡 System One models ประเมินทุกคำถามในคำขอแบบขนาน (Parallel) การเพิ่มคำถามแทบไม่ส่งผลต่อเวลาตอบสนอง และมีค่าใช้จ่ายเพียงโทเคนสำหรับคำถามเพิ่มเติมเท่านั้น ซึ่งมีราคาถูก
สำหรับตัวอย่างการถามหลายคำถามเกี่ยวกับตั๋วสนับสนุน ดูที่ TypeSafe Quickstart
สรุปได้ว่า ต่างจาก LLM แบบดั้งเดิม Jev ไม่ได้ถูกจำกัดด้วยการสร้างข้อความหรือการตัดสินใจแบบลำดับ!
วิธีใช้ Jev ร่วมกับ LangChain
โมเดลที่ไม่ผูกติดกับผู้ให้บริการรายใดรายหนึ่ง (Provider agnostic) ของ LangChain เหมาะสมอย่างยิ่งสำหรับการรองรับ Jev alongside การเชื่อมต่อและผู้ให้บริการโมเดลอีกนับพันราย
การผสานรวมกับ LangChain เปิดให้เข้าถึง Jev ผ่านทาง TypeSafeClassifier คุณส่งสถานะและคำถามไปยัง .invoke() และได้รับผลลัพธ์จากการจำแนกประเภทแทนที่จะเป็นการตอบกลับแบบแชท
ติดตั้ง langchain-typesafe และตั้งค่า TYPESAFE_API_KEY ของคุณ จากนั้นทำการเรียกใช้:
1from langchain_typesafe import Noul, TypeSafeClassifier23classifier = TypeSafeClassifier()45response = classifier.invoke(6 state=(7 "The deploy failed twice and customers are seeing 500s. "8 "Can someone look now?"9 ),10 questions={11 "urgent": Noul(12 instructions="Does this need attention right now?"13 ),14 },15)1617urgency = response.nouls["urgent"].noul
สถานะ (State) สามารถเป็นข้อความ ข้อมูลที่มีโครงสร้าง หรือข้อความของ LangChain ก็ได้ ทำให้สามารถเรียกใช้ Jev จาก Node หรือ Middleware hook โดยใช้บริบทที่ Agent มีอยู่แล้วได้อย่างง่ายดาย
คุณสามารถสร้างสิ่งนี้ลงใน Custom middleware หรือ Tools ได้!
กรณีการใช้งาน
Jev ไม่ใช่ตัวแทนทดแทน (Drop-in replacement) สำหรับ LLM มันไม่ได้สร้างข้อความ แต่สามารถจัดการงานจำแนกประเภทที่เรามักใช้ LLM ทำในปัจจุบันได้ โดยไม่มี Latency และค่าใช้จ่ายเท่าเดิม สิ่งนี้ทำให้มันเป็นส่วนเสริมที่มีศักยภาพสำหรับโมเดลที่ขับเคลื่อน Agent ของคุณ: ใช้ LLM สำหรับการให้เหตุผลและการสร้างเนื้อหาแบบเปิดกว้าง และใช้ Jev สำหรับการตัดสินใจที่มีโครงสร้างและรวดเร็วระหว่างทาง
การกำหนดเส้นทางโมเดล (Model routing)
การค้นหาข้อมูลง่ายๆ ไม่จำเป็นต้องใช้โมเดลเดียวกับงานดีบักที่ยากลำบาก Model-routing middleware ช่วยให้ Jev ประเมินคำขอและเลือกโมเดลตามเกณฑ์ที่คุณกำหนด ดังนั้นจึงรวดเร็วและประหยัดสำหรับงานตรงไปตรงมา และมีความสามารถสูงขึ้นสำหรับงานที่ซับซ้อน
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 ModelChoice,4 ModelRouterMiddleware,5)67router = ModelRouterMiddleware(8 choices={9 "fast": ModelChoice(10 model="openai:luna",11 criteria="Direct lookups, extraction, and localized changes.",12 ),13 "powerful": ModelChoice(14 model="openai:sol",15 criteria="Architecture and high-stakes decisions.",16 ),17 },18 instructions="Choose the least costly model that can complete the task.",19)2021agent = create_agent("openai:gpt-5.6-luna", middleware=[router])
Router จะเลือกโมเดลจากข้อความล่าสุดของผู้ใช้และใช้อย่างต่อเนื่องตลอดการทำงาน ความน่าจะเป็นและคะแนนความเชื่อมั่นยังคงพร้อมใช้งานในสถานะของ Agent ด้วย
Auto Mode
Agent ยังคงมีความไม่น่าเชื่อถือโดยธรรมชาติ Agent อาจได้รับคำแนะนำที่ไม่ดี (ไม่ว่าจะโดยบังเอิญหรือจากผู้โจมตีที่มีความตั้งใจเพียงพอ) ซึ่งอาจโน้มน้าวให้มันดำเนินการที่เราไม่ต้องการ
Coding harnesses อย่าง claude, codex, cursor ได้ปล่อยฟีเจอร์บางอย่างเพื่อจำแนกการกระทำที่เป็นอันตราย ก่อน ที่มันจะเกิดขึ้น ซึ่งช่วยสร้างความเชื่อมั่นใน Agent ขึ้นทีละนิด จนถึงตอนนี้ ขั้นตอนการจำแนกประเภทนี้ถูกซ่อนอยู่ในส่วน Closed source ของ Harness เหล่านั้น
เมื่อมีโมเดลจำแนกประเภทที่ราคาถูกและมีประสิทธิภาพอยู่ เราสามารถนำแพทเทิร์นเดียวกันนี้มาใช้กับ Agent ทุกตัวได้!
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 AutoModeMiddleware,4)56guardrail = AutoModeMiddleware(tools=["bash"])78agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])
AutoModeMiddleware ใช้ Jev เพื่อตรวจสอบการเรียกใช้ Tools สำหรับการตัดสินใจที่อาจมีความเสี่ยง และบล็อกการเรียกใช้ก่อนที่ Tool จะทำงาน
เริ่มต้นเลย!
เราตื่นเต้นมากเกี่ยวกับ Jev และความเป็นไปได้ที่มาพร้อมกับมัน โครงการเจ๋งๆ บางอย่างที่เห็นแล้ว: Kyle Jeong จาก Browserbase กำลังขับเคลื่อน Agent ที่ใช้เบราว์เซอร์ด้วยต้นทุนเพียงเศษเสี้ยวของเซนต์, Jarrod Watts สร้าง Agent สำหรับเทรดสด และ Ryan Vogel กำลังทำ Email triage ในขนาดใหญ่
โมเดลใหม่ออกมาทุกสัปดาห์ในเวลานี้ แต่ตัวนี้ได้รับการตอบรับที่ดีเป็นพิเศษ เราตื่นเต้นที่จะได้เห็นสิ่งที่คุณสร้างด้วย LangChain และ Jev
บอกความคิดเห็นของคุณได้ที่ ฟอรัม, แท็กเราบน X และแชร์สิ่งที่คุณกำลังสร้าง หรือมีส่วนร่วมใน LangChain issues!
คำขอบคุณ
ขอบคุณ @huntlovell, @hwchase, @ccurme, @veryboldbagel และ Nathan Drenzer สำหรับการรีวิวอย่างละเอียดอ่อนและการมีส่วนร่วม





