<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jev &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<atom:link href="https://myifew.com/tag/jev/feed/" rel="self" type="application/rss+xml" />
	<link>https://myifew.com</link>
	<description></description>
	<lastBuildDate>Sun, 27 Sep 2026 03:27:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://myifew.com/wp-content/uploads/2018/07/cropped-logo6-ts-32x32.png</url>
	<title>Jev &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<link>https://myifew.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ลองจับ Jev มาช่วยคัด Lead ปลอม ทำได้จริงไหม</title>
		<link>https://myifew.com/8543/jev-ai-fake-lead/</link>
					<comments>https://myifew.com/8543/jev-ai-fake-lead/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Sun, 27 Sep 2026 02:47:32 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Jev]]></category>
		<category><![CDATA[Lead Spam]]></category>
		<category><![CDATA[TypeSafe AI]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=8543</guid>

					<description><![CDATA[ช่วงนี้มีเทรนด์ AI ใหม่ตัวหนึ่ง ที่ไม่ได้ใช้คุยกับมนุษย์ปกติทั่วไป แต่มีไว้ให้ซอฟต์แวร์ถามแล้วได้คำตอบที่โค้ดเอาไปใช้ต่อได้ ตัวที่ผมลองชื่อว่า Jev เป็นโมเดลของ TypeSafe AI ที่รับข้อมูลเข้าไป แล้วตอบกลับมาเป็นค่าที่มีชนิดชัดเจน เช่น เลือกหนึ่งตัวเลือก (Choice) ให้คะแนน (Score) หรือคืนความน่าจะเป็นของคำตอบใช่หรือไม่ใช่&#8230;]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ช่วงนี้มีเทรนด์ AI ใหม่ตัวหนึ่ง ที่ไม่ได้ใช้คุยกับมนุษย์ปกติทั่วไป แต่มีไว้ให้ซอฟต์แวร์ถามแล้วได้คำตอบที่โค้ดเอาไปใช้ต่อได้</p>



<p class="wp-block-paragraph">ตัวที่ผมลองชื่อว่า <strong>Jev</strong> เป็นโมเดลของ TypeSafe AI ที่รับข้อมูลเข้าไป แล้วตอบกลับมาเป็นค่าที่มีชนิดชัดเจน เช่น เลือกหนึ่งตัวเลือก (Choice) ให้คะแนน (Score) หรือคืนความน่าจะเป็นของคำตอบใช่หรือไม่ใช่ (Noul) ผมเลยเอามันทดลองกับโจทย์ใกล้ตัวมากๆ คือการคัด Lead ปลอมที่ได้มาจากการลงทะเบียน  โดยใช้ข้อมูลจริง 788 ราย ที่ทีมผมเคยพิจารณาตรวจคำตอบไว้ก่อนหน้านั้นแล้ว</p>



<p class="wp-block-paragraph">ผลออกมาค่อนข้างน่าสนใจพอสมควร เลยแชร์ไว้เผื่อเป็นประโยชน์ครับ</p>



<span id="more-8543"></span>



<p class="wp-block-paragraph"><em>หมายเหตุ: เอเจ้นชมพูช่วยถอดความและเรียบเรียงบทความนี้จากบันทึก โค้ด และผลการทดลองจริงของฟิวส์</em></p>



<p class="wp-block-paragraph"><em><strong>หมายเหตุเรื่องข้อมูล:</strong> ตัวอย่างชื่อทั้งหมดในบทความเป็นชื่อสมมติที่สร้างให้มีคุณสมบัติทางภาษาเหมือนข้อมูลจริง ไม่ได้นำชื่อจากไฟล์ลูกค้ามาเผยแพร่ เพราะแม้แถวที่ถูกตัดสินว่าเป็น spam ก็ยังอาจเป็นชื่อของคนจริง</em></p>



<h2 class="wp-block-heading">สรุปไฮไลต์สั้นๆ</h2>



<ul class="wp-block-list">
<li><strong>Jev คืนค่าแบบ typed output</strong> โค้ดใช้ผลลัพธ์ต่อได้โดยไม่ต้องแกะข้อความหรือหวังว่า JSON จะไม่พัง</li>



<li><strong>ทดสอบกับลีดจริง 788 ราย</strong> ครอบคลุมข้อมูล 38 สัปดาห์ และผมมีเฉยๆ ของมนุษย์ครบทุกแถว เพื่อไว้ Cross Check แล้ว</li>



<li><strong>ระบบตัดสินเองได้ 66.4%</strong> บนชุดทดสอบชุดแรก (312 ราย) โดยกลุ่มที่ระบบตัดเป็น spam เองไม่มีลีดจริงปะปน 0 จาก 28 ราย</li>



<li><strong>Probability calibration ทำได้ดีขึ้น</strong> ค่าที่ใช้วัดความแม่นยำของความน่าจะเป็น (ECE) อยู่ที่ 0.065 จึงอยู่ในระดับที่ใช้ตั้ง threshold กับข้อมูลชุดนี้ได้</li>



<li><strong>ไม่แนะนำให้</strong> <strong>AI ทำแทน deterministic logic</strong> เรื่องรูปแบบอีเมล ตัวเลขในชื่อ หรือประวัติในฐานข้อมูล เราเขียนโค้ดและเช็คฐานข้อมูลเองได้ ถูกกว่า</li>
</ul>



<h2 class="wp-block-heading">Jev คืออะไร และต่างจาก LLM ที่เราใช้กันอย่างไร</h2>



<p class="wp-block-paragraph"><strong>Jev</strong> คือโมเดลตัวแรกที่ TypeSafe AI พัฒนาขึ้นมา เรียกว่า <strong>System One model</strong> ชื่อนี้ยืมแนวคิด System 1 และ System 2 ที่ <strong>Daniel Kahneman</strong> ทำให้คนรู้จักผ่านหนังสือ <em>Thinking, Fast and Slow</em></p>



<p class="wp-block-paragraph">System 1 คือการตัดสินใจเร็วๆ แบบที่สมองทำอัตโนมัติ</p>



<p class="wp-block-paragraph">ส่วน System 2 คือการคิดใคร่ครวญทีละขั้น </p>



<p class="wp-block-paragraph">Jev ถูกออกแบบมาสำหรับการตัดสินใจแบบแรก คือถามเรื่องแคบๆ ให้ชัด แล้วคืนคำตอบที่ software ใช้ต่อได้ทันที</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">ซอฟต์แวร์ไม่ได้อยากได้ข้อความยาวๆ ซอฟต์แวร์อยากได้คำตอบที่เอาไป branch, sort, threshold หรือ route ต่อได้เลย</p>
</blockquote>



<p class="wp-block-paragraph">ถ้าเราถาม LLM ว่า lead รายนี้เป็นของปลอมไหม แล้วได้คำตอบว่า จากข้อมูลที่ให้มามีความเป็นไปได้ค่อนข้างสูง เราต้องเขียนโค้ดแกะข้อความอีกชั้น และมีโอกาสพังวันที่โมเดลเปลี่ยนสำนวนการตอบ</p>



<p class="wp-block-paragraph">Jev ไม่เขียนคำอธิบายแบบนั้นครับ มันรับ state แล้วคืน typed answers กับ probability distribution ตามชนิดคำถามที่เรากำหนดไว้ เอกสารของ TypeSafe แบ่ง primitive ออกเป็น 3 แบบ</p>



<figure class="wp-block-table"><table><thead><tr><th>แบบคำถาม</th><th>ใช้ถามอะไร</th><th>ค่าที่ได้กลับมา</th></tr></thead><tbody><tr><td><strong>Choice</strong></td><td>เลือก 1 จากตัวเลือกที่กำหนด</td><td>ตัวเลือกที่เลือก ความน่าจะเป็นทุกตัวเลือก และ confidence</td></tr><tr><td><strong>Score</strong></td><td>ให้คะแนนตามระดับที่เรียงไว้</td><td>คะแนน legend ความน่าจะเป็นแต่ละระดับ และ confidence</td></tr><tr><td><strong>Noul</strong></td><td>คำถามใช่หรือไม่ใช่</td><td>ตัวเลข 0 ถึง 1 ซึ่งเป็นความน่าจะเป็นที่คำตอบคือใช่</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ตัวอย่างจาก Python SDK จะประมาณนี้</p>



<pre class="wp-block-code"><code>from typesafe_sdk import Choice, Noul, TypeSafeClient

with TypeSafeClient() as client:
    result = client.system_one(
        state={"message": "ผมโดนเรียกเก็บเงินซ้ำสองรอบ ช่วยแก้ด่วนเลยครับ"},
        questions={
            "department": Choice(
                instructions="ทีมไหนควรรับเรื่องนี้",
                criteria={
                    "billing": "เรื่องการเงิน",
                    "technical": "เรื่องระบบ",
                },
            ),
            "is_urgent": Noul(
                instructions="ข้อความนี้แสดงความเร่งด่วน"
            ),
        },
    )

print(result.choices&#91;"department"].choice)
print(result.choices&#91;"department"].confidence)
print(result.nouls&#91;"is_urgent"].noul)</code></pre>



<p class="wp-block-paragraph">จุดที่ผมชอบคือไม่ต้อง regex ข้อความ ไม่ต้องลุ้นว่าโมเดลจะครอบ JSON ด้วย markdown หรือใส่คำอธิบายเกินมา โค้ดรู้ตั้งแต่ต้นว่าจะได้ข้อมูลรูปแบบไหนกลับมา</p>



<h3 class="wp-block-heading">Probability กับ confidence ไม่ใช่ค่าเดียวกัน</h3>



<p class="wp-block-paragraph">ตามเอกสารของ TypeSafe ค่า probability บอกการกระจายของคำตอบ ส่วน confidence เป็นสถิติที่สรุปว่าการกระจายนั้นมีคำตอบที่ควรจะใช่ ชัดแค่ไหน และมีเฉพาะ Choice กับ Score ส่วน Noul คืน probability โดยตรง ไม่มี confidence แยกอีกตัว</p>



<p class="wp-block-paragraph">แนวคิดนี้เอาไปสร้างระบบแบบ confidence-gated routing ได้ เช่น confidence สูงให้ทำอัตโนมัติ confidence กลางส่งให้คนตรวจ และ confidence ต่ำไม่ให้ระบบเดา แต่ค่าตัดตรงไหนต้องวัดจากข้อมูลของงานเราเอง ไม่ควรหยิบเลขจากตัวอย่างใน docs มาใช้ตรงๆ</p>



<h2 class="wp-block-heading">โจทย์ที่เอามาทดลองคือ Fake Lead </h2>



<p class="wp-block-paragraph">เว็บไซต์ที่ผมหยิบมาทดสอบ มีฟอร์มให้คนสนใจกรอกข้อมูล แล้วส่งลีดต่อให้ทีมขายโทรติดตาม ปัญหาคือมีทั้งลูกค้าจริงที่กรอกข้อมูลแปลกๆ คนก่อกวน และบอท</p>



<p class="wp-block-paragraph">ระบบเดิมมี rule คอยดักไว้ชั้นหนึ่ง เช่น ชื่อมีตัวเลข ชื่อยาวเกิน xx ตัวอักษร อีเมลผิดรูปแบบ หรือเบอร์เคยอยู่ในฐาน spam จากนั้นถ้าเจอว่าก้ำกึ่งๆ ให้คนนั่งตรวจทีละราย</p>



<p class="wp-block-paragraph">ข้อมูลที่ผมใช้ทดลองมาจากผลการตรวจจริง 38 สัปดาห์ รวม 788 ราย ทุกแถวมีคำตัดสินของคนกำกับไว้ทุกรายการก่อนแล้ว (แต่ผมไม่ส่งเฉลยให้ Jev นะ)</p>



<p class="wp-block-paragraph">ตัวเลขแรกก็สะดุดแล้วครับ จาก 788 รายที่ระบบกฎดักไว้ คนตัดสินว่าไม่ใช่ spam ถึง 542 ราย หรือ 68.8% แปลว่างานตรวจส่วนใหญ่คือการยืนยันว่ากฎดักผิด</p>



<p class="wp-block-paragraph">เหตุผลที่เจอบ่อยที่สุดคือ <code>Numbers found in name</code> จำนวน 305 ราย และเกือบทั้งหมดเป็นลีดจริง ตัวอย่างรูปแบบสมมติจะเป็นแบบนี้</p>



<pre class="wp-block-code"><code>38-605 สมหญิง ใจดี
สุภาพร 05
10 สมชาย รักดี</code></pre>



<p class="wp-block-paragraph">คนเหล่านี้อาจลืมาสลับแป้น เผลอกรอกผิด หรือเอาเลขที่บ้าน เลขลำดับ หรือข้อมูลบางอย่างไปใส่รวมกับชื่อ แต่ก็ยังเป็นคนจริงที่ติดต่อได้ ระบบกฎเห็นแค่รูปแบบผิด ส่วนคนตรวจมองเจตนาและบริบทออก</p>



<p class="wp-block-paragraph"><strong>แกนที่กฎแยกไม่ออก คือคนจริงที่กรอกมั่ว กับคนที่ตั้งใจปลอมตัวตน</strong></p>



<h2 class="wp-block-heading">แยกสิ่งที่คำนวณได้ ออกจากสิ่งที่ต้องใช้ judgment</h2>



<p class="wp-block-paragraph">เงื่อนไขที่ทีมให้มามี 12 ข้อ แต่พอดูจริงๆ แล้วส่วนใหญ่ไม่ใช่คำถามสำหรับ AI เลยครับ อีเมลผิดรูปแบบไหม ชื่อมีตัวเลขไหม เบอร์ยาวเกิน xx หลักไหม โค้ดธรรมดาตอบได้แม่นกว่า เร็วกว่า และฟรี</p>



<pre class="wp-block-preformatted">ข้อมูลลีด
  └─ โค้ดคำนวณข้อเท็จจริง 23 ตัว
       └─ ส่ง facts ให้ Jev ตัดสินส่วนที่ต้องใช้ judgment
            └─ โค้ดใช้ threshold และ confidence ตัดสินว่าจะทำเองหรือส่งให้คน</pre>



<p class="wp-block-paragraph">ผมให้ Jev ตอบ Choice 3 ทาง</p>



<ul class="wp-block-list">
<li><code>spam</code> ตั้งใจปลอม</li>



<li><code>low_quality_but_real</code> เป็นคนจริง แต่กรอกข้อมูลเลอะ</li>



<li><code>legitimate</code> ลีดปกติ</li>
</ul>



<p class="wp-block-paragraph">ที่ไม่ใช้แค่ spam กับ not spam เพราะสองตัวเลือกนั้นบีบให้โมเดลทิ้งข้อมูลสำคัญพอดี กลุ่มที่ระบบเดิมมีปัญหาคือคนจริงที่กรอกมั่ว ถ้าไม่มี class ตรงกลาง โมเดลก็ต้องยัดคนเหล่านี้ไปฝั่งใดฝั่งหนึ่ง</p>



<h3 class="wp-block-heading">ทำไมไม่เขียนกฎเพิ่มไปเรื่อยๆ</h3>



<p class="wp-block-paragraph">ผมลองแล้วครับ และมันสอนบทเรียนค่อนข้างแพงทางเวลา ฮาาา</p>



<p class="wp-block-paragraph">การทดลองแรกคือเอาถังคำหยาบภาษาไทยและอังกฤษ 173 คำไปค้นในชื่อทั้ง 788 ราย พบ 11 ราย แต่ 10 รายในนั้น คนยืนยันว่าไม่ใช่ spam</p>



<figure class="wp-block-table"><table><thead><tr><th>รูปแบบชื่อ ตัวอย่างสมมติ</th><th>ไปตรงกับคำว่า</th><th>สาเหตุที่ไม่ควรตัดสินทันที</th></tr></thead><tbody><tr><td>Somsak Theechai</td><td>hee</td><td>นามสกุลไทยที่ถอดเสียงมีพยางค์ <code>-hee-</code></td></tr><tr><td>Marco Grassano</td><td>ass</td><td>นามสกุลอิตาลีลงท้าย <code>-assano</code></td></tr><tr><td>Rapee7 สุขใจ</td><td>rape</td><td>ชื่อ ระพี ถอดเสียงเป็น <code>Rapee</code></td></tr><tr><td>สมหญิง ทรงกูล</td><td>กู</td><td>นามสกุลลงท้ายด้วย กูล</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ถังคำหยาบมีคำอย่าง อี กู ขี้ หน้า แม่ ซึ่งเป็นพยางค์ปกติในชื่อคนไทยได้ การ match substring ตรงๆ จึงเหมือนเอาตะแกรงช่องใหญ่ไปกรองทราย เม็ดที่ไม่เกี่ยวติดมาด้วยเต็มไปหมด</p>



<p class="wp-block-paragraph">การทดลองที่สองคือเขียน detector หกรูปแบบ เช่น อักษรซ้ำ ชื่อเหมือนนามสกุล และ keyboard smash มันจับตัวอย่าง spam ที่ทีมให้มาได้ 16 จาก 17 ราย ฟังดูดีมาก</p>



<p class="wp-block-paragraph">แต่พอใช้กับข้อมูลจริง มันไปโดนคนที่ไม่ใช่ spam 91 จาก 542 ราย หรือ 16.8% ตัวอย่างสมมติคือนามสกุลแบบ <code>Chaichanachai</code> ที่โดนเพราะพยางค์ <code>cha</code> ซ้ำสี่ครั้ง</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Signal เป็นหลักฐาน ไม่ใช่คำตัดสิน หน้าที่ของมันคือบอกว่าเราเห็นอะไร แล้วให้ระบบชั่งน้ำหนักร่วมกับบริบทอื่น</p>
</blockquote>



<h2 class="wp-block-heading">ผลทดลองบนข้อมูลที่ไม่เคยใช้เลือก threshold</h2>



<p class="wp-block-paragraph">ผมแบ่งข้อมูลตามเวลา โดยใช้สัปดาห์ 1 ถึง 26 จำนวน 476 รายสำหรับเลือก threshold, แล้ววัดผลจริงบนสัปดาห์ 27 ถึง 38 อีก 312 รายที่ไม่เคยถูกใช้เลือกอะไรเลย</p>



<p class="wp-block-paragraph">การแบ่งตามเวลาสำคัญมาก เพราะระบบจริงไม่ได้สุ่มอดีตและอนาคตมาปนกัน เราตั้งเกณฑ์จากอดีตแล้วเอาไปใช้กับข้อมูลที่เข้ามาทีหลัง</p>



<figure class="wp-block-table"><table><thead><tr><th>ตัวชี้วัดบนชุดทดสอบ 312 ราย</th><th>ผล และช่วงเชื่อมั่น 95%</th></tr></thead><tbody><tr><td>ตัดสินเองได้โดยไม่ต้องให้คนดู</td><td><strong>66.4%</strong> (60.9 ถึง 71.4%)</td></tr><tr><td>ผิดพลาด ที่ไปตัดลีดจริงทิ้ง</td><td><strong>0%</strong> หรือ 0 จาก 28 ราย</td></tr><tr><td>จับ spam ได้ครบแค่ไหน</td><td>47.8% (37.8 ถึง 58.0%)</td></tr><tr><td>ผิดพลาด ที่ปล่อย spam ผ่านเข้าระบบ</td><td>14.0% (9.6 ถึง 19.8%)</td></tr><tr><td>ค่าความคลาดของความน่าจะเป็น ECE</td><td>0.065</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">เลขที่สำคัญที่สุดสำหรับผมคือ 0 จาก 28 ราย เพราะต้นทุนของความผิดสองแบบไม่เท่ากัน การตัดลูกค้าจริงทิ้งคือเสียโอกาสขายไปเลย ส่วนการปล่อย spam ผ่านคือทีมขายเสียเวลาโทร</p>



<p class="wp-block-paragraph">แต่ต้องอ่านให้ครบครับ 0 จาก 28 ไม่ได้แปลว่าอัตราผิดจริงคือศูนย์ เพราะขอบบนของช่วงเชื่อมั่นยังอยู่ที่ 12.1% จากฐานข้อมูลแค่ 28 ราย อาจจะยังเล็กเกินกว่าจะสรุปว่า Jev มี error rate ต่ำกว่า 1% ซึ่งคงต้องหาข้อมูลมาเพิ่มเติมทดสอบใหม่</p>



<h3 class="wp-block-heading">Probability calibration รอบนี้ดีขึ้นจนใช้ตั้งเกณฑ์ได้</h3>



<p class="wp-block-paragraph">ค่า <strong>Expected Calibration Error (ECE)</strong> ซึ่งใช้วัดว่าความน่าจะเป็นที่โมเดลรายงานตรงกับอัตราที่เกิดจริงแค่ไหน ออกมาที่ 0.065 ถือว่าดีสำหรับข้อมูลชุดนี้</p>



<p class="wp-block-paragraph">พูดแบบง่ายๆ เวลาโมเดลตอบ 0.8 อัตราที่เกิดจริงอยู่ตั้งแต่ 0.74 ถึง 0.87 ตัวเลขจึงเชื่อถือได้ในระดับที่เอาไปตั้ง threshold สำหรับข้อมูลชุดนี้ได้</p>



<p class="wp-block-paragraph">ถึงตัวเลขรอบนี้จะดีขึ้น หลักเดิมยังเหมือนเดิมครับ ต่อให้ผู้ผลิตบอกว่าโมเดลถูกฝึกเรื่อง calibration มา เราก็ต้องวัดกับ domain, ภาษา และข้อมูลของตัวเองก่อนตั้งเกณฑ์ใช้งานจริง</p>



<h2 class="wp-block-heading">Jev ทำอะไรได้ และอะไรควรปล่อยให้ฐานข้อมูลทำ</h2>



<p class="wp-block-paragraph">พอผมให้รันเหมือนระบบจริงทั้ง 788 ราย โดยจะมีเงื่อนไขตรวจสอบตามกฎ และส่งผลลัพธ์การตรวจพร้อมชื่อ เบอร์โทร อีเมล วันที่กรอกฟอร์ม ให้ Jev พิจารณาต่อแทนคน ผลลัพธ์ที่ได้น่าสนใจมาก คือ</p>



<figure class="wp-block-table"><table><thead><tr><th>เหตุผลที่คนเขียน</th><th>จำนวน</th><th>Jev ระบุเหตุผลตรงกันกับคน</th></tr></thead><tbody><tr><td>ติดต่อได้ เป็นคนจริง</td><td>421</td><td><strong>98.3%</strong> (Jev ไม่ได้ติดต่อคนจริงๆ นะ ดูจากข้อมูลเท่านั้น)</td></tr><tr><td>เป็นข้อมูลทดสอบ</td><td>16</td><td><strong>100%</strong> (มีอยู่ผลลัพธ์คัดกรองหลายๆ ข้อ ที่ส่งให้ Jev)</td></tr><tr><td>ลงทะเบียนซ้ำหลายครั้ง</td><td>92</td><td>3.3% (โค้ดประมวลผลจากวันที่กรอกฟอร์ม และส่งให้ Jev)</td></tr><tr><td>เคยอยู่ในฐาน spam</td><td>212</td><td><strong>0%</strong> (โค้ดและ Jev ตรวจสอบไม่ได้ เพราะผมไม่ได้จำลองข้อมูลไว้ให้)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>known_spam_record</code> ร่วงเป็น 0% และนี่ไม่ใช่ความผิดของโมเดล เราไม่สามารถรู้ว่าเบอร์หนึ่งเคยเป็น spam ด้วยการมองตัวเลข ต้อง query ฐานข้อมูล คนตรวจมีฐานนั้น แต่ Jev ไม่มี</p>



<p class="wp-block-paragraph">การเช็คประวัติจึงเป็นงานของ database กับ deterministic rule เพราะเร็ว แม่น และ audit ได้ ส่วนการตัดสินว่าข้อมูลชุดนี้ดูเป็นคนจริงที่ติดต่อได้หรือเป็นการปลอมตัวตน เป็นงานที่ Jev ช่วยได้ดีกว่า</p>



<p class="wp-block-paragraph">นี่อธิบายด้วยว่าทำไม recall ฝั่ง spam อยู่เพียงราว 48% เพราะ 85% ของสิ่งที่คนเรียกว่า spam ในข้อมูลชุดนี้เป็นเคสที่อาศัยประวัติจากฐานข้อมูลล้วนๆ</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">จุดที่ผมคิดว่าคุ้มที่สุดคือใช้ Jev ช่วยจัดการ 305 รายที่ rule ดักเพราะชื่อมีตัวเลข ซึ่งปัจจุบันคนต้องคอยตรวจและยืนยันทีละราย </p>
</blockquote>



<h2 class="wp-block-heading">ค่าใช้จ่ายถูกจนไม่ใช่ปัจจัยตัดสินใจ</h2>



<figure class="wp-block-table"><table><tbody><tr><th>ประมวลผล 788 ราย</th><td><strong>$0.042</strong> หรือประมาณ 1.5 บาท</td></tr><tr><th>ค่าใช้จ่ายต่อราย</th><td>$0.0000525</td></tr><tr><th>ปริมาณจริงประมาณ 21 รายต่อสัปดาห์</th><td>ประมาณ $0.06 ต่อปี</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ต้นทุนทั้งปีถูกกว่ากาแฟหนึ่งแก้วอีกครับ ทำให้ผมปรับคำถาม ปรับ threshold แล้วรันข้อมูลทั้งชุดใหม่ได้หลายรอบโดยไม่ต้องกังวลเรื่องค่า API</p>



<p class="wp-block-paragraph">แต่ราคาถูกไม่ได้แปลว่าควรใช้ทุกที่ ถ้าโค้ดหรือ SQL ตอบได้ตรงๆ ต่อให้ AI ฟรีก็ยังเป็นทางเลือกที่ซับซ้อนกว่า</p>



<h2 class="wp-block-heading">ถ้าจะเอา Jev ไปใช้จริง ผมจะเริ่มแบบนี้</h2>



<ol class="wp-block-list">
<li><strong>เลือก judgment ที่แคบและชัด</strong> เช่น intent, routing, risk tier หรือข้อมูลดูเป็นคนจริงหรือไม่ ไม่โยนโจทย์กว้างให้วิเคราะห์ทุกอย่าง</li>



<li><strong>แยก deterministic facts ออกมาก่อน</strong> ใช้ code, regex, database และ validation สำหรับเรื่องที่ตอบแน่นอนได้</li>



<li><strong>มนุษย์ควรมายืนยันความน่า</strong><strong>เชื่อถือ</strong> และเก็บเหตุผลไว้ด้วย เพราะ accuracy อย่างเดียวบอกไม่พอว่าโมเดลใช้เหตุผลถูกหรือไม่</li>



<li><strong>แบ่ง train และ evaluation ตามเวลา</strong> เลือก threshold จากอดีตแล้ววัดกับอนาคตให้เหมือน production</li>



<li><strong>ตรวจ lineage ของทุก feature</strong> กัน label leakage ที่อ้อมผ่าน lookup, cache หรือ aggregate</li>



<li><strong>เขียนกติกาภายในทีมออกมาให้ชัด</strong> สิ่งที่คนทำงานรู้กันเองอาจไม่มีอยู่ในนิยามที่ส่งให้โมเดล</li>



<li><strong>วัด calibration และ distribution</strong> อย่าเชื่อ probability หรือ metric รวมโดยไม่เปิดดูพฤติกรรมรายกลุ่ม</li>



<li><strong>ออกแบบ human review เป็นส่วนหนึ่งของระบบ</strong> เคส confidence ต่ำหรือผลกระทบสูงควรส่งให้คนตัดสิน</li>
</ol>



<h2 class="wp-block-heading">บทสรุป</h2>



<p class="wp-block-paragraph">หลังลองกับข้อมูลจริง ผมมองว่า Jev น่าสนใจตรงที่มันอยู่กึ่งกลางระหว่าง rule engine กับ LLM แบบสร้างข้อความ มันรับภาษาธรรมชาติและใช้ judgment ได้ แต่ผลลัพธ์ยังอยู่ในรูปที่โค้ดควบคุมต่อได้</p>



<p class="wp-block-paragraph">สิ่งที่ผมชอบที่สุดไม่ใช่ accuracy สูงสุด แต่คือความสามารถในการออกแบบระบบที่ยอมรับว่าไม่มั่นใจ แล้วส่งเคสยากกลับให้คนตรวจ ตรงนี้เหมาะกับงานที่ความผิดแต่ละฝั่งมีต้นทุนไม่เท่ากันมากๆ</p>



<p class="wp-block-paragraph">ส่วนที่ต้องระวังคือ AI ไม่ได้เติมข้อมูลที่ไม่มีให้เรา ถ้าคำตอบอยู่ในฐาน spam ก็ต้องเปิดฐานข้อมูล ถ้ากฎธรรมดาตรวจอีเมลได้ก็ใช้กฎธรรมดา ส่วน probability calibration แม้รอบนี้จะทำได้ดี ก็ยังต้องวัดใหม่เมื่อ domain, ภาษา หรือข้อมูลเปลี่ยน</p>



<p class="wp-block-paragraph">ผลการทดลองรอบนี้ยังไม่ทำให้ผมเปิดระบบตัด lead อัตโนมัติเต็มรูปแบบทันที ฐานตัวอย่างฝั่งที่ตัดเป็น spam เองยังน้อย และ recall ยังมีข้อจำกัด แต่ผมเห็นจุดที่เอาไปลดงาน manual review ได้ชัด คือกลุ่มคนจริงที่กรอกข้อมูลเลอะเทอะ โดยเฉพาะชื่อที่มีตัวเลข (แต่ถ้าว่ากันตามจริง ช่วยได้น้อยมากๆ ผมอาจจะแค่ปรับ rule เช็คให้ดีขึ้น)</p>



<p class="wp-block-paragraph">สำหรับผม คำตอบว่า ยังไม่ควรใช้ Jev เต็มระบบ ไม่ใช่ว่ามันไม่ดีนะครับ มันคือผลลัพธ์ที่มีค่าที่สุดของการทดลอง เพราะอย่างน้อยเรารู้ว่าควรใช้ตรงไหน ไม่ควรใช้ตรงไหน และต้องเก็บหลักฐานเพิ่มอีกเท่าไร</p>



<p class="wp-block-paragraph">การทดลองทั้งหมดเขียนด้วย Python มี test 137 ตัว และตัวเลขในบทความมาจากการรันกับข้อมูลลีดจริง 788 รายจาก 38 สัปดาห์ ชื่อบุคคลทุกชื่อที่ใช้เป็นตัวอย่างเป็นข้อมูลสมมติ</p>



<h2 class="wp-block-heading">ผู้อ่านได้อะไรจากบทความนี้</h2>



<ul class="wp-block-list">
<li><strong>รู้จัก Jev และ System One model</strong> ว่าเหมาะกับ typed decisions มากกว่างานสร้างข้อความ</li>



<li><strong>เห็นตัวอย่าง evaluation บนข้อมูลจริง</strong> ตั้งแต่ temporal split, confidence interval, precision, recall ไปจนถึง calibration</li>



<li><strong>แยกบทบาท AI กับ deterministic system ได้ชัดขึ้น</strong> เพื่อไม่เอาโมเดลไปทำงานที่ code หรือ database ทำได้ดีกว่า</li>



<li><strong>รู้จัก data leakage แบบอ้อมๆ</strong> ซึ่งซ่อนอยู่ใน feature, lookup และ cache ได้</li>



<li><strong>อ่าน metric อย่างระวัง</strong> โดยดู distribution, class behavior และต้นทุนของความผิดแต่ละแบบร่วมกัน</li>



<li><strong>ออกแบบ human review ได้เป็นระบบ</strong> แทนการบังคับให้ AI ตอบทุกเคส</li>
</ul>



<h2 class="wp-block-heading">แหล่งข้อมูล</h2>



<ul class="wp-block-list">
<li><a href="https://docs.typesafe.ai" target="_blank" rel="noreferrer noopener">TypeSafe AI Documentation</a></li>



<li><a href="https://docs.typesafe.ai/concepts/system-one" target="_blank" rel="noreferrer noopener">System One model</a></li>



<li><a href="https://docs.typesafe.ai/primitives" target="_blank" rel="noreferrer noopener">Choice, Score และ Noul primitives</a></li>



<li><a href="https://docs.typesafe.ai/confidence" target="_blank" rel="noreferrer noopener">Probability และ confidence</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/8543/jev-ai-fake-lead/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
