ใครสงสัยว่า LLM ทำงานยังไง มันเอาโจทย์แปลงเป็นตัวเลข เอาเลขมาบวกลบกันจะได้คอบ ทดสอบรันบนแอปได้เลย
พิมพ์ คำถามแบบนี้
ทำไมไก่กินอาหารเพราะอะไร
ทำไมหมาเห่าเพราะอะไร
ทำไมแมวกินปลาทูเพราะอะไร
คิดเลขอะไรก็ได้ เอาป้อน 3x5
import re
embeddings = {
"ทำไม": 0.0, "แมว": 0.2, "กิน": 0.3, "ปลาทู": 0.56,
"เพราะอะไร": 0.06, "หิว": 1.0, "ไก่": 0.1, "อาหาร": 0.66,
"หมา": 0.4, "เห่า": 0.76, "คนมา": 1.1
}
decode_table = {
1.00: "หิว",
1.10: "คนมา"
}
def auto_split_thai(text):
"""ระบบตัดคำภาษาไทยอัตโนมัติ โดยอิงจากคลังคำศัพท์ในฐานข้อมูล"""
words = sorted(list(embeddings.keys()), key=len, reverse=True)
tokens = []
i = 0
while i < len(text):
match = False
for word in words:
if text[i:].startswith(word):
tokens.append(word)
i += len(word)
match = True
break
if not match:
# ถ้าไม่เจอคำในคลังศัพท์ ให้เก็บทีละตัวอักษร/ตัวเลข
tokens.append(text
)
i += 1
return tokens
def calculate_brain(input_sentence):
# 1. ล้างเครื่องหมาย '=' และช่องว่างส่วนเกินออก
clean_input = input_sentence.replace("=", "").replace(" ", "").strip()
if not clean_input:
print("กรุณาป้อนอินพุต")
return
# 2. ตรวจสอบโหมดคณิตศาสตร์ตรงตัว
is_math_expr = bool(re.search(r'\d+', clean_input)) and any(c in clean_input for c in ['+', '-', '*', '/'])
if is_math_expr:
# --- [โหมดคณิตศาสตร์] ---
try:
result_raw = float(eval(clean_input))
result_rounded = round(result_raw, 2)
result_str = f"{result_rounded:.2f}"
print(f"
{clean_input}={result_str})")
print(f" ผลลัพธ์คณิตศาสตร์ = {result_str}\n")
print("=" * 41)
print(input_sentence)
return
except Exception:
print("สมการคณิตศาสตร์ไม่ถูกต้อง")
return
# --- [โหมดภาษา: ระบบตัดคำอัตโนมัติจากอินพุตที่พิมพ์ติดกัน] ---
# เรียกใช้ระบบตัดคำอัจฉริยะที่สร้างขึ้น
tokens = auto_split_thai(clean_input)
if len(tokens) < 3:
print("รูปแบบประโยคไม่ถูกต้อง: ต้องมีอย่างน้อย 3 คำหลังจากตัดคำ")
return
# แปลง Token เป็นค่าตัวเลข (Embeddings)
values = [float(embeddings.get(t, 0.0)) for t in tokens]
middle_values = values[1:-1]
last_value = values[-1]
# คำนวณค่าน้ำหนักความสัมพันธ์
sum_middle = sum(middle_values)
result_raw = float(sum_middle - last_value)
result_rounded = round(result_raw, 2)
result_str = f"{result_rounded:.2f}"
math_str = "+".join(f"{v:.2f}" for v in middle_values) + "-" + f"{last_value:.2f}"
# ถอดรหัสคำตอบ (Decoding)
answer_word = decode_table.get(result_rounded, "???")
# กลไกสร้างประโยคต่อเนื่อง
output_tokens = tokens.copy()
if output_tokens[0] in ["ทำไม", "เพราะอะไร"]:
output_tokens[0] = "เพราะ"
output_tokens[-1] = answer_word
generated_sentence = "".join(output_tokens)
# --- 📌 แสดงผล 2 บรรทัด (พิมพ์ติดกัน และ แยกคำ) ตามโจทย์ของคุณ ---
print(f"พิมพ์ติดกัน: {clean_input}")
print(f"แยกคำแล้ว: {' | '.join(tokens)}")
print("-" * 41)
# แสดงผลการทำงานของระบบคิด
print(f"
{math_str}={result_str})")
print(f" {result_str} = '{answer_word}'\n")
print(f" ประโยคผลลัพธ์ที่สร้างขึ้นใหม่: {generated_sentence}\n")
print("=" * 41)
print(f"อินพุตเดิม: {input_sentence}")
# --- ตัวกระตุ้นรันในแอปพลิเคชัน (ทดสอบป้อนแบบพิมพ์ติดกันเว้นวรรคหายหมด) ---
calculate_brain("ทำไมแมวกินปลาทูเพราะอะไร")
ผู้ออกแบบ LAM-Thai (Large Audio Model Thai)
วิธีสร้าง LLM ด้วย python จำลอง
พิมพ์ คำถามแบบนี้
ทำไมไก่กินอาหารเพราะอะไร
ทำไมหมาเห่าเพราะอะไร
ทำไมแมวกินปลาทูเพราะอะไร
คิดเลขอะไรก็ได้ เอาป้อน 3x5
import re
embeddings = {
"ทำไม": 0.0, "แมว": 0.2, "กิน": 0.3, "ปลาทู": 0.56,
"เพราะอะไร": 0.06, "หิว": 1.0, "ไก่": 0.1, "อาหาร": 0.66,
"หมา": 0.4, "เห่า": 0.76, "คนมา": 1.1
}
decode_table = {
1.00: "หิว",
1.10: "คนมา"
}
def auto_split_thai(text):
"""ระบบตัดคำภาษาไทยอัตโนมัติ โดยอิงจากคลังคำศัพท์ในฐานข้อมูล"""
words = sorted(list(embeddings.keys()), key=len, reverse=True)
tokens = []
i = 0
while i < len(text):
match = False
for word in words:
if text[i:].startswith(word):
tokens.append(word)
i += len(word)
match = True
break
if not match:
# ถ้าไม่เจอคำในคลังศัพท์ ให้เก็บทีละตัวอักษร/ตัวเลข
tokens.append(text)
i += 1
return tokens
def calculate_brain(input_sentence):
# 1. ล้างเครื่องหมาย '=' และช่องว่างส่วนเกินออก
clean_input = input_sentence.replace("=", "").replace(" ", "").strip()
if not clean_input:
print("กรุณาป้อนอินพุต")
return
# 2. ตรวจสอบโหมดคณิตศาสตร์ตรงตัว
is_math_expr = bool(re.search(r'\d+', clean_input)) and any(c in clean_input for c in ['+', '-', '*', '/'])
if is_math_expr:
# --- [โหมดคณิตศาสตร์] ---
try:
result_raw = float(eval(clean_input))
result_rounded = round(result_raw, 2)
result_str = f"{result_rounded:.2f}"
print(f"
print(f" ผลลัพธ์คณิตศาสตร์ = {result_str}\n")
print("=" * 41)
print(input_sentence)
return
except Exception:
print("สมการคณิตศาสตร์ไม่ถูกต้อง")
return
# --- [โหมดภาษา: ระบบตัดคำอัตโนมัติจากอินพุตที่พิมพ์ติดกัน] ---
# เรียกใช้ระบบตัดคำอัจฉริยะที่สร้างขึ้น
tokens = auto_split_thai(clean_input)
if len(tokens) < 3:
print("รูปแบบประโยคไม่ถูกต้อง: ต้องมีอย่างน้อย 3 คำหลังจากตัดคำ")
return
# แปลง Token เป็นค่าตัวเลข (Embeddings)
values = [float(embeddings.get(t, 0.0)) for t in tokens]
middle_values = values[1:-1]
last_value = values[-1]
# คำนวณค่าน้ำหนักความสัมพันธ์
sum_middle = sum(middle_values)
result_raw = float(sum_middle - last_value)
result_rounded = round(result_raw, 2)
result_str = f"{result_rounded:.2f}"
math_str = "+".join(f"{v:.2f}" for v in middle_values) + "-" + f"{last_value:.2f}"
# ถอดรหัสคำตอบ (Decoding)
answer_word = decode_table.get(result_rounded, "???")
# กลไกสร้างประโยคต่อเนื่อง
output_tokens = tokens.copy()
if output_tokens[0] in ["ทำไม", "เพราะอะไร"]:
output_tokens[0] = "เพราะ"
output_tokens[-1] = answer_word
generated_sentence = "".join(output_tokens)
# --- 📌 แสดงผล 2 บรรทัด (พิมพ์ติดกัน และ แยกคำ) ตามโจทย์ของคุณ ---
print(f"พิมพ์ติดกัน: {clean_input}")
print(f"แยกคำแล้ว: {' | '.join(tokens)}")
print("-" * 41)
# แสดงผลการทำงานของระบบคิด
print(f"
print(f" {result_str} = '{answer_word}'\n")
print(f" ประโยคผลลัพธ์ที่สร้างขึ้นใหม่: {generated_sentence}\n")
print("=" * 41)
print(f"อินพุตเดิม: {input_sentence}")
# --- ตัวกระตุ้นรันในแอปพลิเคชัน (ทดสอบป้อนแบบพิมพ์ติดกันเว้นวรรคหายหมด) ---
calculate_brain("ทำไมแมวกินปลาทูเพราะอะไร")
ผู้ออกแบบ LAM-Thai (Large Audio Model Thai)