[{"data":1,"prerenderedAt":2481},["ShallowReactive",2],{"blogs-2026-02-12-glm-5":3,"next-blog-2026-02-12-glm-5":100,"prev-blog-2026-02-12-glm-5":100,"recommended-blog-2026-02-12-glm-5":109,"related-blog-2026-02-12-glm-5":110},{"id":4,"title":5,"body":6,"date":94,"description":95,"draft":96,"extension":97,"meta":98,"navigation":99,"next":100,"ogTitle":101,"path":102,"pin":96,"prev":100,"recommends":100,"seo":103,"sitemap":104,"stem":105,"tags":106,"__hash__":108},"content/blogs/2026-02-12-glm-5.md","GLM-5 เปิดตัวแล้ว! การก้าวกระโดดครั้งใหญ่สู่ Omni-Model เต็มรูปแบบ 🚀",{"type":7,"value":8,"toc":87},"minimark",[9,22,29,34,62,65,68,71],[10,11,12,13,17,18,21],"p",{},"หลังจากที่เพิ่งตื่นเต้นกับ GLM-4.7 ไปหมาดๆ ทาง ",[14,15,16],"strong",{},"Zhipu AI"," ก็ไม่ปล่อยให้รอนาน ปล่อยของใหญ่อย่าง ",[14,19,20],{},"GLM-5"," ออกมาตบตลาด AI อีกรอบแล้วครับ!",[10,23,24,25,28],{},"รอบนี้ไม่ใช่แค่เก่งขึ้น แต่เป็นการยกเครื่องสถาปัตยกรรมใหม่ให้เป็น ",[14,26,27],{},"Native Omni-Model"," เต็มตัว คือรับ Input/Output ได้ทั้ง Text, Audio และ Video แบบ Seamless ไม่ต้องผ่านตัวแปลงหลายทอด ทำให้ Response Time ไวขึ้นแบบเห็นได้ชัด",[30,31,33],"h3",{"id":32},"ไฮไลท์ของ-glm-5","ไฮไลท์ของ GLM-5",[35,36,37,44,50,56],"ul",{},[38,39,40,43],"li",{},[14,41,42],{},"Unified Modality:"," คุยด้วยเสียง หรือโยนวิดีโอให้วิเคราะห์ได้แบบ Real-time ความหน่วงต่ำมาก (Low Latency) เหมาะเอาไปทำ Voice Agent สุดๆ",[38,45,46,49],{},[14,47,48],{},"Deep Reasoning:"," ความสามารถในการแก้โจทย์ Logic ซับซ้อนและการวางแผน (Planning) สำหรับ Agent Workflow ดีขึ้นกว่ารุ่น 4 เยอะมาก",[38,51,52,55],{},[14,53,54],{},"Coding & Tool Use:"," เขียน Code ได้แม่นยำขึ้น เข้าใจ Context ของ Project ใหญ่ๆ ได้ดี และเรียกใช้ External Tools (Function Calling) ได้เนียนกริบ",[38,57,58,61],{},[14,59,60],{},"Long Context:"," รองรับ Context Window มหาศาล เอา Book ทั้งเล่มหรือ Codebase ทั้งก้อนโยนเข้าไปได้สบาย",[30,63,64],{"id":64},"ความเห็นส่วนตัว",[10,66,67],{},"สำหรับ Dev สายสร้าง Agent หรือคนที่ทำระบบ Automation ผ่าน API ตัว GLM-5 ถือว่าเป็นตัวเลือกที่น่ากลัวมาก (ในทางที่ดี) เพราะทั้งฉลาดและราคา (Pricing) น่าจะยังคงความคุ้มค่าสไตล์ Zhipu ไว้",[10,69,70],{},"ใครที่รัน Project ด้วย GLM-4 อยู่ แนะนำให้เตรียมวางแผน Migration มาลองตัวนี้เลยครับ น่าจะช่วยลด Error Rate ใน Production ได้เยอะ",[72,73,74],"blockquote",{},[10,75,76,79,80],{},[14,77,78],{},"รายละเอียดเพิ่มเติม:"," ",[81,82,86],"a",{"href":83,"rel":84},"https://z.ai/blog/glm-5",[85],"nofollow","Zhipu AI Blog - GLM-5",{"title":88,"searchDepth":89,"depth":89,"links":90},"",2,[91,93],{"id":32,"depth":92,"text":33},3,{"id":64,"depth":92,"text":64},"2026-02-12T00:00:00.000Z","สรุปฟีเจอร์เด็ดของ GLM-5 โมเดลเรือธงรุ่นล่าสุดจาก Zhipu AI ที่เก่งรอบด้านทั้งภาพ เสียง และการเขียนโค้ด",false,"md",{},true,null,"GLM-5 Review","/blogs/2026-02-12-glm-5",{"title":5,"description":95},{"loc":102},"blogs/2026-02-12-glm-5",[107],"AI","6KA0eRJl40dqBCCvhPm87IAwxOEryI9_nMye5JfEScE",[],[111,957,1736,1825,2051,2135,2234,2362],{"id":112,"title":113,"body":114,"date":944,"description":945,"draft":96,"extension":97,"meta":946,"navigation":99,"next":947,"ogTitle":948,"path":949,"pin":96,"prev":100,"recommends":950,"seo":952,"sitemap":953,"stem":954,"tags":955,"__hash__":956},"content/blogs/2025-04-24-n8n-part-1.md","N8N วิธีการ Setup | Part 1",{"type":7,"value":115,"toc":933},[116,121,124,127,131,150,153,157,191,195,208,517,528,549,552,584,601,605,612,617,786,789,854,857,864,870,873,878,881,885,891,894,899,910,915,922,929],[117,118,120],"h2",{"id":119},"n8n-คืออะไร","N8N คืออะไร",[10,122,123],{},"คือ Platform สำหรับทำ workflow automation หรือพูดให้เข้าใจง่าย ๆ ก็คือพวกระบบอัตโนมัติต่าง ๆ นั้นแหละครับ ซึ่งจุดเด่นของเครื่องมือตัวนี้คือเป็น Open Source มีทั้ง version cloud และ self-hosted ให้ใช้งานสำหรับคนที่เป็นห่วงเรื่องความปลอดภัยของข้อมูลครับ อีกทั้งยังเป็น platform ที่อยู่ในรูปแบบของ Low Code หรือ No Code เลยก็ได้ (ในบาง workflows)",[10,125,126],{},"ซึ่งผมเองในฐานะของคนที่ชอบเขียนโปรแกรมอยู่แล้ว ต้องบอกเลยว่า \"ของดีย์\" ครับ ทำให้หลาย ๆ ไอเดียสามารถทำออกมาได้เลย ลดเวลาในการพัฒนาลงได้เยอะครับ ผมเองมองว่าการมีสกิล workflows ติดตัวไว้ถือเป็นข้อได้เปรียบนึงเลยครับ โดยซีรีย์นี้ตั้งใจว่าจะทำออกมาแบ่งเป็น EP ย่อย ๆ ครับแชร์ทริคต่าง ๆ ที่ได้ศึกษามา ยังไงก็ฝากติดตตามด้วยนะครับ เย่ ~",[117,128,130],{"id":129},"requirements","Requirements",[35,132,133,140,147],{},[38,134,135,136],{},"Docker version 25.x.x ขึ้นไป ",[137,138,139],"code",{},"docker --version",[38,141,142,143,146],{},"Docker Compose version 2.24.x ขึ้นไป (",[137,144,145],{},"docker compose version",")",[38,148,149],{},"ความรู้พื้นฐาน (มาก ๆ) ของ docker cli",[117,151,152],{"id":152},"วิธีการติดตั้ง",[30,154,156],{"id":155},"_1-สร้าง-directory-และ-docker-compose-file-สำหรับทดสอบ","1. สร้าง Directory และ docker compose file สำหรับทดสอบ",[158,159,163],"pre",{"className":160,"code":161,"language":162,"meta":88,"style":88},"language-sh shiki shiki-themes material-theme-lighter one-dark-pro github-dark","mkdir n8n-labs\n\ncd n8n-labs\n","sh",[137,164,165,178,183],{"__ignoreMap":88},[166,167,170,174],"span",{"class":168,"line":169},"line",1,[166,171,173],{"class":172},"sosa_","mkdir",[166,175,177],{"class":176},"sAlJX"," n8n-labs\n",[166,179,180],{"class":168,"line":89},[166,181,182],{"emptyLinePlaceholder":99},"\n",[166,184,185,189],{"class":168,"line":92},[166,186,188],{"class":187},"sJZfL","cd",[166,190,177],{"class":176},[30,192,194],{"id":193},"_2-สร้าง-docker-compose-file","2. สร้าง docker compose file",[158,196,198],{"className":160,"code":197,"language":162,"meta":88,"style":88},"nano docker-compose.yml\n",[137,199,200],{"__ignoreMap":88},[166,201,202,205],{"class":168,"line":169},[166,203,204],{"class":172},"nano",[166,206,207],{"class":176}," docker-compose.yml\n",[158,209,213],{"className":210,"code":211,"language":212,"meta":88,"style":88},"language-yml shiki shiki-themes material-theme-lighter one-dark-pro github-dark","services:\n  n8n:\n    image: docker.n8n.io/n8nio/n8n\n    restart: unless-stopped\n    ports:\n      - '127.0.0.1:5678:5678'\n    volumes:\n      - n8n_data:/home/node/.n8n\n      - n8n_local_files:/files\n    environment:\n      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=https\n      - NODE_ENV=production\n      - WEBHOOK_URL=https://${WEBHOOK_SUBDOMAIN}.${DOMAIN_NAME}/\n      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}\n      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true\n\n  pg-vector:\n    image: pgvector/pgvector:pg17\n    restart: unless-stopped\n    environment:\n      POSTGRES_USER: \u003Cusername>\n      POSTGRES_PASSWORD: \u003Cpassword>\n      POSTGRES_DB: n8n-pgvector\n    ports:\n      - '127.0.0.1:5432:5432'\n    volumes:\n      - db-pgvector-data:/var/lib/postgresql/data\n\nvolumes:\n  n8n_data:\n  n8n_local_files:\n  db-data:\n  db-pgvector-data:\n","yml",[137,214,215,225,232,243,254,262,278,286,294,302,310,318,326,334,342,350,358,366,371,379,389,398,405,416,427,438,445,457,464,472,477,485,493,501,509],{"__ignoreMap":88},[166,216,217,221],{"class":168,"line":169},[166,218,220],{"class":219},"s0Prt","services",[166,222,224],{"class":223},"stlKB",":\n",[166,226,227,230],{"class":168,"line":89},[166,228,229],{"class":219},"  n8n",[166,231,224],{"class":223},[166,233,234,237,240],{"class":168,"line":92},[166,235,236],{"class":219},"    image",[166,238,239],{"class":223},":",[166,241,242],{"class":176}," docker.n8n.io/n8nio/n8n\n",[166,244,246,249,251],{"class":168,"line":245},4,[166,247,248],{"class":219},"    restart",[166,250,239],{"class":223},[166,252,253],{"class":176}," unless-stopped\n",[166,255,257,260],{"class":168,"line":256},5,[166,258,259],{"class":219},"    ports",[166,261,224],{"class":223},[166,263,265,268,272,275],{"class":168,"line":264},6,[166,266,267],{"class":223},"      -",[166,269,271],{"class":270},"snfNA"," '",[166,273,274],{"class":176},"127.0.0.1:5678:5678",[166,276,277],{"class":270},"'\n",[166,279,281,284],{"class":168,"line":280},7,[166,282,283],{"class":219},"    volumes",[166,285,224],{"class":223},[166,287,289,291],{"class":168,"line":288},8,[166,290,267],{"class":223},[166,292,293],{"class":176}," n8n_data:/home/node/.n8n\n",[166,295,297,299],{"class":168,"line":296},9,[166,298,267],{"class":223},[166,300,301],{"class":176}," n8n_local_files:/files\n",[166,303,305,308],{"class":168,"line":304},10,[166,306,307],{"class":219},"    environment",[166,309,224],{"class":223},[166,311,313,315],{"class":168,"line":312},11,[166,314,267],{"class":223},[166,316,317],{"class":176}," N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}\n",[166,319,321,323],{"class":168,"line":320},12,[166,322,267],{"class":223},[166,324,325],{"class":176}," N8N_PORT=5678\n",[166,327,329,331],{"class":168,"line":328},13,[166,330,267],{"class":223},[166,332,333],{"class":176}," N8N_PROTOCOL=https\n",[166,335,337,339],{"class":168,"line":336},14,[166,338,267],{"class":223},[166,340,341],{"class":176}," NODE_ENV=production\n",[166,343,345,347],{"class":168,"line":344},15,[166,346,267],{"class":223},[166,348,349],{"class":176}," WEBHOOK_URL=https://${WEBHOOK_SUBDOMAIN}.${DOMAIN_NAME}/\n",[166,351,353,355],{"class":168,"line":352},16,[166,354,267],{"class":223},[166,356,357],{"class":176}," GENERIC_TIMEZONE=${GENERIC_TIMEZONE}\n",[166,359,361,363],{"class":168,"line":360},17,[166,362,267],{"class":223},[166,364,365],{"class":176}," N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true\n",[166,367,369],{"class":168,"line":368},18,[166,370,182],{"emptyLinePlaceholder":99},[166,372,374,377],{"class":168,"line":373},19,[166,375,376],{"class":219},"  pg-vector",[166,378,224],{"class":223},[166,380,382,384,386],{"class":168,"line":381},20,[166,383,236],{"class":219},[166,385,239],{"class":223},[166,387,388],{"class":176}," pgvector/pgvector:pg17\n",[166,390,392,394,396],{"class":168,"line":391},21,[166,393,248],{"class":219},[166,395,239],{"class":223},[166,397,253],{"class":176},[166,399,401,403],{"class":168,"line":400},22,[166,402,307],{"class":219},[166,404,224],{"class":223},[166,406,408,411,413],{"class":168,"line":407},23,[166,409,410],{"class":219},"      POSTGRES_USER",[166,412,239],{"class":223},[166,414,415],{"class":176}," \u003Cusername>\n",[166,417,419,422,424],{"class":168,"line":418},24,[166,420,421],{"class":219},"      POSTGRES_PASSWORD",[166,423,239],{"class":223},[166,425,426],{"class":176}," \u003Cpassword>\n",[166,428,430,433,435],{"class":168,"line":429},25,[166,431,432],{"class":219},"      POSTGRES_DB",[166,434,239],{"class":223},[166,436,437],{"class":176}," n8n-pgvector\n",[166,439,441,443],{"class":168,"line":440},26,[166,442,259],{"class":219},[166,444,224],{"class":223},[166,446,448,450,452,455],{"class":168,"line":447},27,[166,449,267],{"class":223},[166,451,271],{"class":270},[166,453,454],{"class":176},"127.0.0.1:5432:5432",[166,456,277],{"class":270},[166,458,460,462],{"class":168,"line":459},28,[166,461,283],{"class":219},[166,463,224],{"class":223},[166,465,467,469],{"class":168,"line":466},29,[166,468,267],{"class":223},[166,470,471],{"class":176}," db-pgvector-data:/var/lib/postgresql/data\n",[166,473,475],{"class":168,"line":474},30,[166,476,182],{"emptyLinePlaceholder":99},[166,478,480,483],{"class":168,"line":479},31,[166,481,482],{"class":219},"volumes",[166,484,224],{"class":223},[166,486,488,491],{"class":168,"line":487},32,[166,489,490],{"class":219},"  n8n_data",[166,492,224],{"class":223},[166,494,496,499],{"class":168,"line":495},33,[166,497,498],{"class":219},"  n8n_local_files",[166,500,224],{"class":223},[166,502,504,507],{"class":168,"line":503},34,[166,505,506],{"class":219},"  db-data",[166,508,224],{"class":223},[166,510,512,515],{"class":168,"line":511},35,[166,513,514],{"class":219},"  db-pgvector-data",[166,516,224],{"class":223},[10,518,519,520,523,524,527],{},"โดยในส่วนของ ",[137,521,522],{},"POSTGRES_USER"," และ ",[137,525,526],{},"POSTGRES_PASSWORD"," ให้แก้ไขเป็นค่าที่ปลอดภัยได้เลย หรือจะ generate ด้วย openssl ก็ได้เช่นกันครับ",[158,529,531],{"className":160,"code":530,"language":162,"meta":88,"style":88},"openssl rand -base64 32\n",[137,532,533],{"__ignoreMap":88},[166,534,535,538,541,545],{"class":168,"line":169},[166,536,537],{"class":172},"openssl",[166,539,540],{"class":176}," rand",[166,542,544],{"class":543},"sEoV_"," -base64",[166,546,548],{"class":547},"snOyU"," 32\n",[10,550,551],{},"หน้าตาหลังจากแก้ไขจะเป็นประมาณนี้",[158,553,555],{"className":210,"code":554,"language":212,"meta":88,"style":88},"environment:\n  POSTGRES_USER: username\n  POSTGRES_PASSWORD: VygpX7KBx2LsLTLoIk84YPV+gBsVZzgfMqVm+Kv0ltM=\n",[137,556,557,564,574],{"__ignoreMap":88},[166,558,559,562],{"class":168,"line":169},[166,560,561],{"class":219},"environment",[166,563,224],{"class":223},[166,565,566,569,571],{"class":168,"line":89},[166,567,568],{"class":219},"  POSTGRES_USER",[166,570,239],{"class":223},[166,572,573],{"class":176}," username\n",[166,575,576,579,581],{"class":168,"line":92},[166,577,578],{"class":219},"  POSTGRES_PASSWORD",[166,580,239],{"class":223},[166,582,583],{"class":176}," VygpX7KBx2LsLTLoIk84YPV+gBsVZzgfMqVm+Kv0ltM=\n",[10,585,586,587,589,590,593,594,593,597,600],{},"จากนั้น (หากใช้ ",[137,588,204],{},") แก้ไขไฟล์ให้กด ",[137,591,592],{},"CTRL + X"," -> ",[137,595,596],{},"Y",[137,598,599],{},"Enter"," จะเป็นการบันทึกและออกจากไฟล์",[30,602,604],{"id":603},"_3-กำหนดค่าให้-env","3. กำหนดค่าให้ .env",[10,606,607,608,611],{},"สร้างไฟล์ ",[137,609,610],{},".env"," และทำการแก้ไขค่าต่าง ๆ",[72,613,614],{},[10,615,616],{},"DOMAIN_NAME, SUBDOMAIN, WEBHOOK_SUBDOMAIN ในส่วนนี้อาจจะปล่อยเป็นค่า default แบบนี้ไปก่อนครับ",[158,618,620],{"className":160,"code":619,"language":162,"meta":88,"style":88},"NODE_ENV=\"production\"\nN8N_PROTOCOL=\"http\" # or https\nN8N_DIAGNOSTICS_ENABLED=false\nGENERIC_TIMEZONE=\"Asia/Bangkok\"\nDOMAIN_NAME=localhost\nSUBDOMAIN=\nWEBHOOK_SUBDOMAIN=\nN8N_RUNNERS_ENABLED=true\n\nEXECUTIONS_DATA_PRUNE=true\nEXECUTIONS_DATA_MAX_AGE=168\nEXECUTIONS_DATA_PRUNE_MAX_COUNT=50000\n\nPG_USER=\u003Cusername>\nPG_PASSWORD=\u003Cpassword>\n",[137,621,622,641,659,669,683,693,701,708,718,722,731,741,751,755,772],{"__ignoreMap":88},[166,623,624,628,632,635,638],{"class":168,"line":169},[166,625,627],{"class":626},"sLHrO","NODE_ENV",[166,629,631],{"class":630},"sMTEB","=",[166,633,634],{"class":270},"\"",[166,636,637],{"class":176},"production",[166,639,640],{"class":270},"\"\n",[166,642,643,646,648,650,653,655],{"class":168,"line":89},[166,644,645],{"class":626},"N8N_PROTOCOL",[166,647,631],{"class":630},[166,649,634],{"class":270},[166,651,652],{"class":176},"http",[166,654,634],{"class":270},[166,656,658],{"class":657},"sDKbk"," # or https\n",[166,660,661,664,666],{"class":168,"line":92},[166,662,663],{"class":626},"N8N_DIAGNOSTICS_ENABLED",[166,665,631],{"class":630},[166,667,668],{"class":176},"false\n",[166,670,671,674,676,678,681],{"class":168,"line":245},[166,672,673],{"class":626},"GENERIC_TIMEZONE",[166,675,631],{"class":630},[166,677,634],{"class":270},[166,679,680],{"class":176},"Asia/Bangkok",[166,682,640],{"class":270},[166,684,685,688,690],{"class":168,"line":256},[166,686,687],{"class":626},"DOMAIN_NAME",[166,689,631],{"class":630},[166,691,692],{"class":176},"localhost\n",[166,694,695,698],{"class":168,"line":264},[166,696,697],{"class":626},"SUBDOMAIN",[166,699,700],{"class":630},"=\n",[166,702,703,706],{"class":168,"line":280},[166,704,705],{"class":626},"WEBHOOK_SUBDOMAIN",[166,707,700],{"class":630},[166,709,710,713,715],{"class":168,"line":288},[166,711,712],{"class":626},"N8N_RUNNERS_ENABLED",[166,714,631],{"class":630},[166,716,717],{"class":176},"true\n",[166,719,720],{"class":168,"line":296},[166,721,182],{"emptyLinePlaceholder":99},[166,723,724,727,729],{"class":168,"line":304},[166,725,726],{"class":626},"EXECUTIONS_DATA_PRUNE",[166,728,631],{"class":630},[166,730,717],{"class":176},[166,732,733,736,738],{"class":168,"line":312},[166,734,735],{"class":626},"EXECUTIONS_DATA_MAX_AGE",[166,737,631],{"class":630},[166,739,740],{"class":176},"168\n",[166,742,743,746,748],{"class":168,"line":320},[166,744,745],{"class":626},"EXECUTIONS_DATA_PRUNE_MAX_COUNT",[166,747,631],{"class":630},[166,749,750],{"class":176},"50000\n",[166,752,753],{"class":168,"line":328},[166,754,182],{"emptyLinePlaceholder":99},[166,756,757,760,762,766,769],{"class":168,"line":336},[166,758,759],{"class":626},"PG_USER",[166,761,631],{"class":630},[166,763,765],{"class":764},"sbGrh","\u003C",[166,767,768],{"class":176},"username",[166,770,771],{"class":764},">\n",[166,773,774,777,779,781,784],{"class":168,"line":344},[166,775,776],{"class":626},"PG_PASSWORD",[166,778,631],{"class":630},[166,780,765],{"class":764},[166,782,783],{"class":176},"password",[166,785,771],{"class":764},[10,787,788],{},"จากนั้นสามารถ start docker compose ได้เลยด้วยคำสั่ง",[158,790,792],{"className":160,"code":791,"language":162,"meta":88,"style":88},"docker compose pull\n\n# [+] Pulling 15/29\n# ⠧ pg-vector [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling                              13.8s\n# ⠧ n8n [⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling                                         13.8s\n\ndocker compose --env-file .env up --build -d\n# อย่าลืม --env-file flag นะครับ\n",[137,793,794,805,809,814,819,824,828,849],{"__ignoreMap":88},[166,795,796,799,802],{"class":168,"line":169},[166,797,798],{"class":172},"docker",[166,800,801],{"class":176}," compose",[166,803,804],{"class":176}," pull\n",[166,806,807],{"class":168,"line":89},[166,808,182],{"emptyLinePlaceholder":99},[166,810,811],{"class":168,"line":92},[166,812,813],{"class":657},"# [+] Pulling 15/29\n",[166,815,816],{"class":168,"line":245},[166,817,818],{"class":657},"# ⠧ pg-vector [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling                              13.8s\n",[166,820,821],{"class":168,"line":256},[166,822,823],{"class":657},"# ⠧ n8n [⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling                                         13.8s\n",[166,825,826],{"class":168,"line":264},[166,827,182],{"emptyLinePlaceholder":99},[166,829,830,832,834,837,840,843,846],{"class":168,"line":280},[166,831,798],{"class":172},[166,833,801],{"class":176},[166,835,836],{"class":543}," --env-file",[166,838,839],{"class":176}," .env",[166,841,842],{"class":176}," up",[166,844,845],{"class":543}," --build",[166,847,848],{"class":543}," -d\n",[166,850,851],{"class":168,"line":288},[166,852,853],{"class":657},"# อย่าลืม --env-file flag นะครับ\n",[30,855,856],{"id":856},"ทดสอบเปิดเข้าใช้งาน",[10,858,859,860,863],{},"จากนั้นเปิด browser แล้วไปที่ ",[137,861,862],{},"http://localhost:5678/setup"," ได้เลยครับ",[10,865,866],{},[867,868],"img",{"alt":88,"src":869},"/images/2025-04-24-n8n-part-1/n8n-setup.png",[10,871,872],{},"โดยในขั้นตอนนี้เป็น optional ครับ แต่แนะนำให้เอากดรับมาครับ",[10,874,875],{},[867,876],{"alt":88,"src":877},"/images/2025-04-24-n8n-part-1/paid-features-for-free.png",[10,879,880],{},"เรียบร้อยครับ เพียงแค่นี้เราก็จะได้ N8N version self-hosted มาใช้งานแล้วครับ",[30,882,884],{"id":883},"_4-ทดสอบเพิ่ม-pgvector-เข้าไปยัง-n8n","4. ทดสอบเพิ่ม PGVector เข้าไปยัง N8N",[10,886,887,888],{},"ไปที่เมนู Credential\n",[867,889],{"alt":88,"src":890},"/images/2025-04-24-n8n-part-1/n8n-credential-1.png",[10,892,893],{},"เลือกเป็น Postgres",[10,895,896],{},[867,897],{"alt":88,"src":898},"/images/2025-04-24-n8n-part-1/n8n-credential-2.png",[10,900,901,902,905,906,909],{},"กรอกข้อมูล โดยผมจะทำการแก้ชื่อด้านซ้ายบนให้เป็น ",[137,903,904],{},"PG-Vector"," นะครับ ในช่องของ database ถ้า setup ตามที่ผมแนะนำไว้ก็สามารถใส่เป็น",[137,907,908],{},"pg-vector"," (service name ใน docker-compose) และใส่ username, password จากไฟล์ .env และ Database เอามาจากไฟล์ docker-compose ได้เลยครับ",[10,911,912],{},[867,913],{"alt":88,"src":914},"/images/2025-04-24-n8n-part-1/n8n-credential-3.png",[10,916,917,918,921],{},"ถ้ากด Save แล้วขึ้น ",[137,919,920],{},"Connection Tested Successfully"," แสดงว่าใช้งานได้แล้วครับ โดยตัว PG Vector อันนี้จะเป็นตัว Postgres ที่มีการเปิดใช้งาน extension vector ซึ่งเดี๋ยวเราจะเอามาใช้ในการเล่นเกี่ยว LLM ต่อไปนะครับ",[10,923,924,925],{},"สามารถอ่าน Part 2 ต่อได้เลย\n",[81,926,928],{"href":927},"/blogs/n8n-part-2","N8N Part 2",[930,931,932],"style",{},"html pre.shiki code .sosa_, html code.shiki .sosa_{--shiki-light:#E2931D;--shiki-default:#61AFEF;--shiki-dark:#B392F0}html pre.shiki code .sAlJX, html code.shiki .sAlJX{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sJZfL, html code.shiki .sJZfL{--shiki-light:#6182B8;--shiki-default:#56B6C2;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sEoV_, html code.shiki .sEoV_{--shiki-light:#91B859;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .snOyU, html code.shiki .snOyU{--shiki-light:#F76D47;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .sLHrO, html code.shiki .sLHrO{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#E1E4E8}html pre.shiki code .sMTEB, html code.shiki .sMTEB{--shiki-light:#39ADB5;--shiki-default:#56B6C2;--shiki-dark:#F97583}html pre.shiki code .snfNA, html code.shiki .snfNA{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sDKbk, html code.shiki .sDKbk{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7F848E;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbGrh, html code.shiki .sbGrh{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#F97583}html pre.shiki code .s0Prt, html code.shiki .s0Prt{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#85E89D}html pre.shiki code .stlKB, html code.shiki .stlKB{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}",{"title":88,"searchDepth":89,"depth":89,"links":934},[935,936,937],{"id":119,"depth":89,"text":120},{"id":129,"depth":89,"text":130},{"id":152,"depth":89,"text":152,"children":938},[939,940,941,942,943],{"id":155,"depth":92,"text":156},{"id":193,"depth":92,"text":194},{"id":603,"depth":92,"text":604},{"id":856,"depth":92,"text":856},{"id":883,"depth":92,"text":884},"2025-04-24T00:00:00.000Z","วิธีการ Self-hosted N8N ด้วย docker อย่างง่าย",{},"n8n-part-2","Awesome N8N","/blogs/2025-04-24-n8n-part-1",[951],"n8n-with-telegram-notify",{"title":113,"description":945},{"loc":949},"blogs/2025-04-24-n8n-part-1",[107],"uHK9G_HejrNQRXrEpuR0_UaXMpKPTLEP2XjoWzHpuo8",{"id":958,"title":959,"body":960,"date":1725,"description":1726,"draft":96,"extension":97,"meta":1727,"navigation":99,"next":100,"ogTitle":948,"path":1728,"pin":96,"prev":1729,"recommends":1730,"seo":1731,"sitemap":1732,"stem":1733,"tags":1734,"__hash__":1735},"content/blogs/2025-04-28-n8n-part-2.md","N8N วิธีการการใช้งานเบื้องต้น | Part 2",{"type":7,"value":961,"toc":1719},[962,969,972,982,986,990,995,998,1003,1006,1010,1013,1024,1029,1032,1035,1040,1043,1048,1051,1056,1059,1080,1085,1092,1097,1100,1105,1108,1113,1116,1186,1189,1241,1244,1250,1335,1338,1343,1346,1656,1659,1664,1667,1673,1680,1685,1688,1693,1699,1705,1708,1713,1716],[10,963,964,965],{},"สำหรับใครที่ยังไม่ได้อ่าน Part 1 นะครับ สามารถไปอ่านได้ที่ ",[81,966,968],{"href":967},"/blogs/n8n-part-1","N8N Part 1",[10,970,971],{},"โดยวันนี้ผมจะพามาลองเล่น workflow ในแบบ basic ๆ กันก่อนนะครับ เผื่อให้สามารถเข้าใจการทำงานในเบื้องต้นได้",[10,973,974,975,978,979],{},"โดยโจทย์ในครั้งนี้คือ ",[14,976,977],{},"\"ค้นหา URLs ต่าง ๆ ของ domain ที่ต้องการโดยใช้ Wayback machine\""," ถ้านึกภาพไม่ออกคือการทำแบบนี้แหละครับ แต่เราจะทำให้มันเป็น workflow เพื่อนำไปต่อยอดในอนาคตนะครับ\n",[867,980],{"alt":88,"src":981},"/images/2025-04-28-n8n-part-2/image-4.png",[117,983,985],{"id":984},"เริ่มต้นการสร้าง-workflows","เริ่มต้นการสร้าง workflows",[30,987,989],{"id":988},"ทำการสร้าง-workflow-ใหม่โดยการกดที่ปุ่มขวาบน-create-workflow-ได้เลยครับ","ทำการสร้าง workflow ใหม่โดยการกดที่ปุ่มขวาบน (\"Create Workflow\") ได้เลยครับ",[10,991,992],{},[867,993],{"alt":88,"src":994},"/images/2025-04-28-n8n-part-2/image.png",[10,996,997],{},"จากนั้นจะพบกับ UI หน้าตาโล่ง ๆ แบบนี้",[10,999,1000],{},[867,1001],{"alt":88,"src":1002},"/images/2025-04-28-n8n-part-2/image-1.png",[10,1004,1005],{},"โดยเมื่อกดปุ่ม \"+\" กลางจอหรือมุมขวาบนแล้วจะพบกับ Trigger Node ครับ (ภายใน N8N เราจะเรียกเครื่องมือแต่ละตัวว่า Node นะครับ)",[30,1007,1009],{"id":1008},"อธิบายคร่าว-ๆ-ของ-trigger-node-ประมาณนี้ครับ","อธิบายคร่าว ๆ ของ Trigger Node ประมาณนี้ครับ",[10,1011,1012],{},"Trigger Node คือจุดเริ่มต้นของ workflow ซึ่งสามารถทำได้หลายวิธีด้วยกันขึ้นอยู่กับจุดประสงค์ของ workflow นั้น ๆ ครับ เช่นหากเป็นประเภท Scheduler จะใช้ประเภท \"On a scheduler\" หากเป็นประเภท Webhook ที่รอรับสัญญาณจากแหล่งอื่นจะใช้เป็น \"On webhook call\" ครับ ยังมีอีกหลาย ๆ ตัวที่น่าสนใจเช่น",[35,1014,1015,1018,1021],{},[38,1016,1017],{},"On chat message: Node นี้จะเป็นการสร้างหน้า chat ui ขึ้นมาให้ครับ เหมาะสำหรับการนำมาใช้งานกับ AI Agent นั้นเอง",[38,1019,1020],{},"On app event: Node นี้จะเป็นการรับ trigger จาก application อื่น ๆ ที่นำมาเชื่อมต่อครับ เช่น notion, telegram, airtable ซึ่งจำเป็นต้องเชื่อมต่อกันให้เรียบร้อยก่อนใช้งาน",[38,1022,1023],{},"Trigger manual: Node นี้เป็นการสร้างปุ่มขึ้นมาให้กดครับ เหมาะสำหรับการใช้งานที่จำเป็นต้องกรอกข้อมูลก่อน หรือ ไม่ได้อยากทำให้มี external trigger มาครับ",[10,1025,1026],{},[867,1027],{"alt":88,"src":1028},"/images/2025-04-28-n8n-part-2/image-2.png",[10,1030,1031],{},"ซึ่งอันนี้เป็นแค่เพียงเบื้องต้นนะครับ จริง ๆ แล้ว N8N ยังสามารถทำอะไรได้มากกว่านั้นอีก (มากกกก) ไปกันต่อเลยครับ",[10,1033,1034],{},"โดยผมจะเริ่มจาก Trigger เบื้องต้นอย่าง \"Trigger manually\" ละกันครับ สามารถกดเลือกได้เลยครับ เมื่อเลือกแล้วจะมี Node โผล่มากลางจอแบบนี้ครับ",[10,1036,1037],{},[867,1038],{"alt":88,"src":1039},"/images/2025-04-28-n8n-part-2/image-3.png",[10,1041,1042],{},"จากนั้นให้กดปุ่ม \"+\" ที่อยู่ขวามือของ Node เพื่อเพิ่มการทำงานขั้นต่อไปครับ เมื่อกดแล้วจะเพิ่มกับเครื่องมือต่าง ๆ ที่สามารถนำมาใช้ต่อได้นะครับ \"ซึ่งมีเยอะมากกกก\"",[10,1044,1045],{},[867,1046],{"alt":88,"src":1047},"/images/2025-04-28-n8n-part-2/image-5.png",[10,1049,1050],{},"โดยให้เราเลือกเป็น \"HTTP Request\" ครับ",[10,1052,1053],{},[867,1054],{"alt":88,"src":1055},"/images/2025-04-28-n8n-part-2/image-7.png",[10,1057,1058],{},"จากนั้นจะพบกับหน้าต่างที่โผล่ขึ้นมาซึ่งจะแบ่งเป็น 3 ส่วนหลัก ๆ คือ",[1060,1061,1062,1068,1074],"ol",{},[38,1063,1064,1067],{},[166,1065,1066],{},"ซ้าย"," Input: เป็นส่วนที่ไว้ใช้แสดงผลข้อมูลที่มาจาก workflows การหน้าครับ",[38,1069,1070,1073],{},[166,1071,1072],{},"กลาง"," Settings: เป็นการตั้งค่าของ Node นั้น ๆ ซึ่งจะขึ้นอยู่กับว่าเป็น Node อะไร ในกรณีจะมี \"Method\", \"URL\", \"Authentication\" และอื่น ๆ ตามด้านล่างเลยครับ ซึ่งก็คือรูปแบบการ Call HTTP request ปกติเลย",[38,1075,1076,1079],{},[166,1077,1078],{},"ขวา"," Output: เป็นส่วนที่ไว้ใช้แสดงผลข้อมูลที่ได้จาก Node นี้ครับ",[10,1081,1082],{},[867,1083],{"alt":88,"src":1084},"/images/2025-04-28-n8n-part-2/image-6.png",[10,1086,1087,1088,1091],{},"กลับมาที่ Wayback machine สักแป้บนึงครับ ให้เราค้นหา request ที่จะนำมาใช้งาน ซึ่งในกรณีนี้จะเป็น ",[137,1089,1090],{},"https://web.archive.org/web/timemap/json"," ครับ",[10,1093,1094],{},[867,1095],{"alt":88,"src":1096},"/images/2025-04-28-n8n-part-2/image-9.png",[10,1098,1099],{},"กรอกข้อมูลต่าง ๆ ได้เลย โดยที่ส่วนของ URL แนะนำให้ใช้แค่ URL นะครับ แล้วแบ่งเอา Parameter ลงมาใส่ข้างล่างแทน แบบในรูปเลยครับ (แนะนำว่าให้ปรับ Limit เป็นค่าน้อย ๆ จากเดิน 10000 อาจจะลดลงเหลือ 30 ก็ได้ครับ) เสร็จแล้วกดปุ่ม Test Step ได้เลย ถ้าถูกต้องด้านขวามือจะมีข้อมูลขึ้นมาแบบนี้ครับ",[10,1101,1102],{},[867,1103],{"alt":88,"src":1104},"/images/2025-04-28-n8n-part-2/image-10.png",[10,1106,1107],{},"โดยที่ Output จะดูข้อมูลได้ 3 รูปแบบได้แก่ Table, JSON, Schema ซึ่งการทำงานจริง ๆ ของ N8N จะทำงานภายใต้ Object Array ครับ",[10,1109,1110],{},[867,1111],{"alt":88,"src":1112},"/images/2025-04-28-n8n-part-2/image-11.png",[10,1114,1115],{},"อันนี้ถ้าดูดี ๆ มันจะเป็นการ return มาแบบแปลก ๆ นะครับ ปกติแล้วมันควรจะ return มาเป็น json ในรูปแบบ",[158,1117,1121],{"className":1118,"code":1119,"language":1120,"meta":88,"style":88},"language-json shiki shiki-themes material-theme-lighter one-dark-pro github-dark","[{\n\"original\": \"http://example.com:80/\",\n\"mimetype\": \"text/html\",\n\"...\"\n}]\n","json",[137,1122,1123,1128,1152,1172,1181],{"__ignoreMap":88},[166,1124,1125],{"class":168,"line":169},[166,1126,1127],{"class":223},"[{\n",[166,1129,1130,1133,1137,1139,1141,1144,1147,1149],{"class":168,"line":89},[166,1131,634],{"class":1132},"sObbn",[166,1134,1136],{"class":1135},"sVeMc","original",[166,1138,634],{"class":1132},[166,1140,239],{"class":223},[166,1142,1143],{"class":270}," \"",[166,1145,1146],{"class":176},"http://example.com:80/",[166,1148,634],{"class":270},[166,1150,1151],{"class":223},",\n",[166,1153,1154,1156,1159,1161,1163,1165,1168,1170],{"class":168,"line":92},[166,1155,634],{"class":1132},[166,1157,1158],{"class":1135},"mimetype",[166,1160,634],{"class":1132},[166,1162,239],{"class":223},[166,1164,1143],{"class":270},[166,1166,1167],{"class":176},"text/html",[166,1169,634],{"class":270},[166,1171,1151],{"class":223},[166,1173,1174,1176,1179],{"class":168,"line":245},[166,1175,634],{"class":1132},[166,1177,1178],{"class":1135},"...",[166,1180,640],{"class":1132},[166,1182,1183],{"class":168,"line":256},[166,1184,1185],{"class":223},"}]\n",[10,1187,1188],{},"แต่กรณีนี้ return มาเป็น",[158,1190,1192],{"className":1118,"code":1191,"language":1120,"meta":88,"style":88},"[[\"original\", \"mimetype\", \"...\"], [\"value\"...]]\n",[137,1193,1194],{"__ignoreMap":88},[166,1195,1196,1199,1201,1203,1205,1208,1210,1212,1214,1216,1218,1220,1222,1225,1228,1230,1233,1235,1238],{"class":168,"line":169},[166,1197,1198],{"class":223},"[[",[166,1200,634],{"class":270},[166,1202,1136],{"class":176},[166,1204,634],{"class":270},[166,1206,1207],{"class":223},",",[166,1209,1143],{"class":270},[166,1211,1158],{"class":176},[166,1213,634],{"class":270},[166,1215,1207],{"class":223},[166,1217,1143],{"class":270},[166,1219,1178],{"class":176},[166,1221,634],{"class":270},[166,1223,1224],{"class":223},"],",[166,1226,1227],{"class":223}," [",[166,1229,634],{"class":270},[166,1231,1232],{"class":176},"value",[166,1234,634],{"class":270},[166,1236,1178],{"class":1237},"sg798",[166,1239,1240],{"class":223},"]]\n",[10,1242,1243],{},"ซึ่งมันเอาไปใช้ต่อม่ายได้ครับ '-' ดังนั้นให้กด \"+\" ด้านขวาแล้วเลือก Node \"Code\" เข้ามาช่วยได้เลยครับ",[10,1245,1246,1247],{},"ให้ลองเอา Code นี้ไปใส่\n",[867,1248],{"alt":88,"src":1249},"/images/2025-04-28-n8n-part-2/image-12.png",[158,1251,1255],{"className":1252,"code":1253,"language":1254,"meta":88,"style":88},"language-js shiki shiki-themes material-theme-lighter one-dark-pro github-dark","for (const item of $input.all()) {\n  console.log(item)\n}\nreturn $input.all()\n","js",[137,1256,1257,1296,1316,1321],{"__ignoreMap":88},[166,1258,1259,1263,1267,1271,1275,1279,1283,1286,1290,1293],{"class":168,"line":169},[166,1260,1262],{"class":1261},"s36IK","for",[166,1264,1266],{"class":1265},"sZDfs"," (",[166,1268,1270],{"class":1269},"sOHk9","const",[166,1272,1274],{"class":1273},"sUzmo"," item",[166,1276,1278],{"class":1277},"s_AEr"," of",[166,1280,1282],{"class":1281},"sU9mH"," $input",[166,1284,1285],{"class":223},".",[166,1287,1289],{"class":1288},"suMxZ","all",[166,1291,1292],{"class":1265},"()) ",[166,1294,1295],{"class":223},"{\n",[166,1297,1298,1301,1303,1306,1310,1313],{"class":168,"line":89},[166,1299,1300],{"class":1281},"  console",[166,1302,1285],{"class":223},[166,1304,1305],{"class":1288},"log",[166,1307,1309],{"class":1308},"sbHgf","(",[166,1311,1312],{"class":626},"item",[166,1314,1315],{"class":1308},")\n",[166,1317,1318],{"class":168,"line":92},[166,1319,1320],{"class":223},"}\n",[166,1322,1323,1326,1328,1330,1332],{"class":168,"line":245},[166,1324,1325],{"class":1261},"return",[166,1327,1282],{"class":1281},[166,1329,1285],{"class":223},[166,1331,1289],{"class":1288},[166,1333,1334],{"class":1265},"()\n",[10,1336,1337],{},"ก่อนกดปุ่มให้กด F12 เพื่อเปิด browser console เพื่อดูผลของ console.log ครับ",[10,1339,1340],{},[867,1341],{"alt":88,"src":1342},"/images/2025-04-28-n8n-part-2/image-13.png",[10,1344,1345],{},"โดยอันนี้แหละที่เราจะเอามาใช้ต่อได้ เอา Code อันนี้ไปใส่",[158,1347,1349],{"className":1252,"code":1348,"language":1254,"meta":88,"style":88},"// Retrieve all data from the input\nconst inputItems = $input.all()\n\n// Extract the headers from the first item\nconst headers = inputItems[0].json || []\n\n// Initialize an array to store the new items\nconst newItems = []\n\n// Iterate over each old item, starting from the second item since the first is the headers\nfor (let i = 1; i \u003C inputItems.length; i++) {\n  const item = inputItems[i].json || []\n  const obj = {} // Use a plain JavaScript object\n\n  // Map each value to its corresponding header\n  for (let j = 0; j \u003C headers.length; j++) {\n    obj[headers[j]] = item[j]\n  }\n\n  // Add the new object to the newItems array\n  newItems.push(obj)\n}\n\n// Return the JSON array of objects\nreturn newItems\n",[137,1350,1351,1356,1374,1378,1383,1413,1417,1422,1433,1437,1442,1487,1513,1528,1532,1537,1576,1605,1610,1614,1619,1636,1640,1644,1649],{"__ignoreMap":88},[166,1352,1353],{"class":168,"line":169},[166,1354,1355],{"class":657},"// Retrieve all data from the input\n",[166,1357,1358,1360,1363,1366,1368,1370,1372],{"class":168,"line":89},[166,1359,1270],{"class":1269},[166,1361,1362],{"class":1273}," inputItems",[166,1364,1365],{"class":630}," =",[166,1367,1282],{"class":1281},[166,1369,1285],{"class":223},[166,1371,1289],{"class":1288},[166,1373,1334],{"class":1265},[166,1375,1376],{"class":168,"line":92},[166,1377,182],{"emptyLinePlaceholder":99},[166,1379,1380],{"class":168,"line":245},[166,1381,1382],{"class":657},"// Extract the headers from the first item\n",[166,1384,1385,1387,1390,1392,1394,1397,1400,1403,1405,1407,1410],{"class":168,"line":256},[166,1386,1270],{"class":1269},[166,1388,1389],{"class":1273}," headers",[166,1391,1365],{"class":630},[166,1393,1362],{"class":626},[166,1395,1396],{"class":1265},"[",[166,1398,1399],{"class":547},"0",[166,1401,1402],{"class":1265},"]",[166,1404,1285],{"class":223},[166,1406,1120],{"class":626},[166,1408,1409],{"class":630}," ||",[166,1411,1412],{"class":1265}," []\n",[166,1414,1415],{"class":168,"line":264},[166,1416,182],{"emptyLinePlaceholder":99},[166,1418,1419],{"class":168,"line":280},[166,1420,1421],{"class":657},"// Initialize an array to store the new items\n",[166,1423,1424,1426,1429,1431],{"class":168,"line":288},[166,1425,1270],{"class":1269},[166,1427,1428],{"class":1273}," newItems",[166,1430,1365],{"class":630},[166,1432,1412],{"class":1265},[166,1434,1435],{"class":168,"line":296},[166,1436,182],{"emptyLinePlaceholder":99},[166,1438,1439],{"class":168,"line":304},[166,1440,1441],{"class":657},"// Iterate over each old item, starting from the second item since the first is the headers\n",[166,1443,1444,1446,1448,1451,1454,1456,1459,1462,1464,1467,1469,1471,1475,1477,1479,1482,1485],{"class":168,"line":312},[166,1445,1262],{"class":1261},[166,1447,1266],{"class":1265},[166,1449,1450],{"class":1269},"let",[166,1452,1453],{"class":626}," i",[166,1455,1365],{"class":630},[166,1457,1458],{"class":547}," 1",[166,1460,1461],{"class":223},";",[166,1463,1453],{"class":626},[166,1465,1466],{"class":630}," \u003C",[166,1468,1362],{"class":1281},[166,1470,1285],{"class":223},[166,1472,1474],{"class":1473},"sVJsf","length",[166,1476,1461],{"class":223},[166,1478,1453],{"class":626},[166,1480,1481],{"class":630},"++",[166,1483,1484],{"class":1265},") ",[166,1486,1295],{"class":223},[166,1488,1489,1492,1494,1496,1498,1500,1503,1505,1507,1509,1511],{"class":168,"line":320},[166,1490,1491],{"class":1269},"  const",[166,1493,1274],{"class":1273},[166,1495,1365],{"class":630},[166,1497,1362],{"class":626},[166,1499,1396],{"class":1308},[166,1501,1502],{"class":626},"i",[166,1504,1402],{"class":1308},[166,1506,1285],{"class":223},[166,1508,1120],{"class":626},[166,1510,1409],{"class":630},[166,1512,1412],{"class":1308},[166,1514,1515,1517,1520,1522,1525],{"class":168,"line":328},[166,1516,1491],{"class":1269},[166,1518,1519],{"class":1273}," obj",[166,1521,1365],{"class":630},[166,1523,1524],{"class":223}," {}",[166,1526,1527],{"class":657}," // Use a plain JavaScript object\n",[166,1529,1530],{"class":168,"line":336},[166,1531,182],{"emptyLinePlaceholder":99},[166,1533,1534],{"class":168,"line":344},[166,1535,1536],{"class":657},"  // Map each value to its corresponding header\n",[166,1538,1539,1542,1544,1546,1549,1551,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574],{"class":168,"line":352},[166,1540,1541],{"class":1261},"  for",[166,1543,1266],{"class":1308},[166,1545,1450],{"class":1269},[166,1547,1548],{"class":626}," j",[166,1550,1365],{"class":630},[166,1552,1553],{"class":547}," 0",[166,1555,1461],{"class":223},[166,1557,1548],{"class":626},[166,1559,1466],{"class":630},[166,1561,1389],{"class":1281},[166,1563,1285],{"class":223},[166,1565,1474],{"class":1473},[166,1567,1461],{"class":223},[166,1569,1548],{"class":626},[166,1571,1481],{"class":630},[166,1573,1484],{"class":1308},[166,1575,1295],{"class":223},[166,1577,1578,1581,1583,1586,1588,1591,1594,1596,1598,1600,1602],{"class":168,"line":360},[166,1579,1580],{"class":626},"    obj",[166,1582,1396],{"class":1308},[166,1584,1585],{"class":626},"headers",[166,1587,1396],{"class":1308},[166,1589,1590],{"class":626},"j",[166,1592,1593],{"class":1308},"]] ",[166,1595,631],{"class":630},[166,1597,1274],{"class":626},[166,1599,1396],{"class":1308},[166,1601,1590],{"class":626},[166,1603,1604],{"class":1308},"]\n",[166,1606,1607],{"class":168,"line":368},[166,1608,1609],{"class":223},"  }\n",[166,1611,1612],{"class":168,"line":373},[166,1613,182],{"emptyLinePlaceholder":99},[166,1615,1616],{"class":168,"line":381},[166,1617,1618],{"class":657},"  // Add the new object to the newItems array\n",[166,1620,1621,1624,1626,1629,1631,1634],{"class":168,"line":391},[166,1622,1623],{"class":1281},"  newItems",[166,1625,1285],{"class":223},[166,1627,1628],{"class":1288},"push",[166,1630,1309],{"class":1308},[166,1632,1633],{"class":626},"obj",[166,1635,1315],{"class":1308},[166,1637,1638],{"class":168,"line":400},[166,1639,1320],{"class":223},[166,1641,1642],{"class":168,"line":407},[166,1643,182],{"emptyLinePlaceholder":99},[166,1645,1646],{"class":168,"line":418},[166,1647,1648],{"class":657},"// Return the JSON array of objects\n",[166,1650,1651,1653],{"class":168,"line":429},[166,1652,1325],{"class":1261},[166,1654,1655],{"class":626}," newItems\n",[10,1657,1658],{},"ใน code จะมี warning ของ interface อยู่นะครับ แต่มองข้ามไปได้ กดรันได้เลยฮะ ถ้าถูกต้องตรงฝั่งขวามือเราจะได้ Output หน้าตาเป็นแบบนี้ครับ ถือว่าถูกต้องและใช้งานต่อได้",[10,1660,1661],{},[867,1662],{"alt":88,"src":1663},"/images/2025-04-28-n8n-part-2/image-14.png",[10,1665,1666],{},"ซึ่งต่อไปก็ขึ้นอยู่กับเราว่าจะเอาข้อมูลจาก workflow นี้ไปทำอะไรต่อ เช่นนำไปเก็บใน Database, นำไปใช้วิเคราะห์ต่อ, นำไป filter ข้อมูลที่สนใจอันนี้ขึ้นอยู่กับจุดประสงค์แล้วครับ",[10,1668,1669,1670],{},"บนเส้นเมื่อรันแล้วจะเจอกับเลขอยู่นะครับ ซึ่งหมายถึงจำนวนข้อมูลปกติแล้ว N8N จะทำการ Loop ในข้อมูลแต่ละชุดให้เลยครับ จากด้านซ้ายมีข้อมูล 31 Object (รวม header) เอามาแปลงเป็นข้อมูลด้านขวาซึ่งจะเหลือ 30 Object ครับ\n",[867,1671],{"alt":88,"src":1672},"/images/2025-04-28-n8n-part-2/image-15.png",[10,1674,1675,1676,1679],{},"ต่อไปผมจะลองใช้งาน Filter ดูนะครับ โดยที่จะ filter ",[137,1677,1678],{},"mimetype: text/html"," ออกมาอย่างเดียว เลือกเป็น Data transformation และ Filter",[10,1681,1682],{},[867,1683],{"alt":88,"src":1684},"/images/2025-04-28-n8n-part-2/image-16.png",[10,1686,1687],{},"เลือกเป็น Schema แล้วดูตรง Node ที่ชื่อว่า \"Code\" ซึ่งเป็น Node ก่อนหน้า ในที่นี้เราสามารถ drag & drop ข้อมูลที่เราต้องการได้เลยครับ ให้เลือก \"mimetype\" ลากมาวางตรง \"value1\"",[10,1689,1690],{},[867,1691],{"alt":88,"src":1692},"/images/2025-04-28-n8n-part-2/image-17.png",[10,1694,1695,1696],{},"ส่วน OP: เลือกเป็น \"is equal to\" และ value ใส่เป็น \"text/html\" แบบในรูปครับ\n",[867,1697],{"alt":88,"src":1698},"/images/2025-04-28-n8n-part-2/image-18.png",[10,1700,1701,1702],{},"เมื่อกด \"Test Step\" จะพบว่าข้อมูลจะถูกแยกเป็น 2 ส่วนคือ\"Kept\" (เก็บไว้) และ \"Discarded\" (เอาทิ้ง) ซึ่งจะเป็นตามเงื่อนไขที่เราตั้งไว้ครับ\n",[867,1703],{"alt":88,"src":1704},"/images/2025-04-28-n8n-part-2/image-19.png",[10,1706,1707],{},"ปลายเส้นก็จะเหลือข้อมูล 1 item ตามที่เรา filter ไว้เลยครับ เย่",[10,1709,1710],{},[867,1711],{"alt":88,"src":1712},"/images/2025-04-28-n8n-part-2/image-20.png",[10,1714,1715],{},"การใช้งาน N8N ก็จะมีประมาณนี้ครับ ไม่ยากไม่ง่ายจนเกินไปเนอะ ไว้มาต่อกัน EP 3 นะครับ",[930,1717,1718],{},"html pre.shiki code .stlKB, html code.shiki .stlKB{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sObbn, html code.shiki .sObbn{--shiki-light:#39ADB5;--shiki-default:#E06C75;--shiki-dark:#79B8FF}html pre.shiki code .sVeMc, html code.shiki .sVeMc{--shiki-light:#9C3EDA;--shiki-default:#E06C75;--shiki-dark:#79B8FF}html pre.shiki code .snfNA, html code.shiki .snfNA{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sAlJX, html code.shiki .sAlJX{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sg798, html code.shiki .sg798{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#FFFFFF;--shiki-default-font-style:inherit;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .s36IK, html code.shiki .s36IK{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#C678DD;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sZDfs, html code.shiki .sZDfs{--shiki-light:#90A4AE;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sOHk9, html code.shiki .sOHk9{--shiki-light:#9C3EDA;--shiki-default:#C678DD;--shiki-dark:#F97583}html pre.shiki code .sUzmo, html code.shiki .sUzmo{--shiki-light:#90A4AE;--shiki-default:#E5C07B;--shiki-dark:#79B8FF}html pre.shiki code .s_AEr, html code.shiki .s_AEr{--shiki-light:#39ADB5;--shiki-default:#C678DD;--shiki-dark:#F97583}html pre.shiki code .sU9mH, html code.shiki .sU9mH{--shiki-light:#90A4AE;--shiki-default:#E5C07B;--shiki-dark:#E1E4E8}html pre.shiki code .suMxZ, html code.shiki .suMxZ{--shiki-light:#6182B8;--shiki-default:#61AFEF;--shiki-dark:#B392F0}html pre.shiki code .sbHgf, html code.shiki .sbHgf{--shiki-light:#E53935;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sLHrO, html code.shiki .sLHrO{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#E1E4E8}html pre.shiki code .sDKbk, html code.shiki .sDKbk{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7F848E;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sMTEB, html code.shiki .sMTEB{--shiki-light:#39ADB5;--shiki-default:#56B6C2;--shiki-dark:#F97583}html pre.shiki code .snOyU, html code.shiki .snOyU{--shiki-light:#F76D47;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .sVJsf, html code.shiki .sVJsf{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#79B8FF}",{"title":88,"searchDepth":89,"depth":89,"links":1720},[1721],{"id":984,"depth":89,"text":985,"children":1722},[1723,1724],{"id":988,"depth":92,"text":989},{"id":1008,"depth":92,"text":1009},"2025-04-28T00:00:00.000Z","มาต่อกันที่วิธีการใช้งาน N8N ในเบื้องต้นกันครับ",{},"/blogs/2025-04-28-n8n-part-2","n8n-part-1",[951],{"title":959,"description":1726},{"loc":1728},"blogs/2025-04-28-n8n-part-2",[107],"QfxWqB6jTdhSNiqZiwhYt7E82aaZAo6zbFKgOnnSINo",{"id":1737,"title":1738,"body":1739,"date":1815,"description":1816,"draft":96,"extension":97,"meta":1817,"navigation":99,"next":100,"ogTitle":1818,"path":1819,"pin":96,"prev":100,"recommends":100,"seo":1820,"sitemap":1821,"stem":1822,"tags":1823,"__hash__":1824},"content/blogs/2025-08-18-ollama-desktop-ui.md","Ollama มี UI ให้ใช้แล้ว",{"type":7,"value":1740,"toc":1813},[1741,1746,1749,1756,1766,1771,1783,1791,1797,1803,1806],[10,1742,1743],{},[867,1744],{"alt":88,"src":1745},"/images/2025-08-18-ollama-desktop-ui/images-3de58dcb-c7b8-4c8e-8fb6-fd713de8d854.jpg",[10,1747,1748],{},"วันนี้ผมเพิ่งมาสังเกตว่า Ollama มี Desktop Application ให้ใช้งานแล้ว (ผมติดตั้ง version 0.11.4 บน macos) โดยหน้าตาของ UI จะมีความ minimal เหมือนกับ LLM Chat ทั่ว ๆ ไปเลยครับ",[10,1750,1751,1752],{},"โดย Ollama คือเครื่องมือสำหรับใช้ในการ run llm ในรูปแบบ local (ใช้ hardware ของผู้ใช้งานโดยตรง) มีหลาย model ให้ใช้งาน เช่น Deepseek, gemma, Llama หรือ model อื่น ๆ สามารถดูได้ที่ ",[81,1753,1754],{"href":1754,"rel":1755},"https://ollama.com/search",[85],[10,1757,1758,1759,1762,1763],{},"โดยข้อดีที่ผมชอบเลยก็คือ ก่อนหน้านี้ตอนที่ต้องการทดสอบ model บางตัว ก็จำเป็นต้องใช้งานผ่าน cli โดยที่รัน ",[137,1760,1761],{},"ollama run gemma3:270m"," แต่ตอนนี้สะดวกขึ้นมาก เพียงแค่ ",[137,1764,1765],{},"ollama pull gemma3:270m",[10,1767,1768],{},[867,1769],{"alt":88,"src":1770},"/images/2025-08-18-ollama-desktop-ui/images-1350f112-92ce-4af4-b0d7-8731d4364dea.jpg",[10,1772,1773,1774,1777,1778,1782],{},"จากนั้นก็จะสามารถเลือก model ผ่าน ollama UI และใช้งานได้เลย ทำให้การทดสอบทำได้ง่ายขึ้น\n",[867,1775],{"alt":88,"src":1776},"/images/2025-08-18-ollama-desktop-ui/images-d010a3a3-8228-4438-8686-a8c7fb7330c3.jpg","\nผมเลยไปตามอ่านดู release ก็ไปเจอกับ ",[81,1779,1780],{"href":1780,"rel":1781},"https://ollama.com/blog/new-app",[85]," โดยสรุป features ไว้คร่าว ๆ ตามนี้",[35,1784,1785,1788],{},[38,1786,1787],{},"Chat with file: ส่งไฟล์เพื่อไปถาม chat เช่นส่ง PDF ให้สรุป",[38,1789,1790],{},"กำหนด context length ได้",[10,1792,1793,1796],{},[867,1794],{"alt":88,"src":1795},"/images/2025-08-18-ollama-desktop-ui/images-8f00489f-216e-414d-b4e6-49bf74ade823.jpg","\nส่วนอื่น ๆ ก็เป็น chat UI ทั่ว ๆ ไปเลยนะครับ (อนาคตน่าจะมีอะไรให้ลองเล่นมากกว่านี้)",[10,1798,1799,1800],{},"อีกอย่างคือเห็นว่ามี Turbo (Beta) เข้ามาแล้วด้วย โดยมีราคาอยู่ที่ 20$ ต่อเดือน (ข้อมูลวันที่ 18/8/68) โดย Turbo คือการที่จากเดิม ollama จะเป็นการใช้งาน self-hardware หรือเครื่องของผู้ใช้งานเป็นคนทำงานใช่มั้ยครับ แต่ Turbo คือการที่จะไปใช้ Server ของทาง Ollama เพื่อทำงานใน model ที่มีขนาดใหญ่ขึ้นนั้นเอง\n",[867,1801],{"alt":88,"src":1802},"/images/2025-08-18-ollama-desktop-ui/images-74485b02-c1a5-4067-aab2-467400bff2aa.jpg",[10,1804,1805],{},"ต้องคอยติดตามต่อไปว่าจะมีอะไรที่น่าสนใจหรือมีอะไรอัพเดทต่ออีกบ้างครับ ~",[10,1807,1808,1809],{},"ที่มา: ",[81,1810,1811],{"href":1811,"rel":1812},"https://ollama.com",[85],{"title":88,"searchDepth":89,"depth":89,"links":1814},[],"2025-08-18T00:00:00.000Z","ตอนนี้ Ollama มี Chat UI ให้สามารถใช้งานได้แล้ว",{},"Ollama New Desktop Application","/blogs/2025-08-18-ollama-desktop-ui",{"title":1738,"description":1816},{"loc":1819},"blogs/2025-08-18-ollama-desktop-ui",[107],"5EVdae6hl-dY_RTIXfZk7xFuTVbWsv6EXdUciPBLN4M",{"id":1826,"title":1827,"body":1828,"date":2040,"description":2041,"draft":96,"extension":97,"meta":2042,"navigation":99,"next":947,"ogTitle":2043,"path":2044,"pin":96,"prev":1729,"recommends":2045,"seo":2046,"sitemap":2047,"stem":2048,"tags":2049,"__hash__":2050},"content/blogs/2025-10-03-typhoon-ai-n8n.md","วิธีการนำ Typhoon AI มาใช้งานใน N8N",{"type":7,"value":1829,"toc":2035},[1830,1834,1837,1840,1844,1918,1922,1925,1939,1944,1949,1954,1959,1964,1969,1974,1979,1987,1992,1997,2002,2007,2013,2016,2022,2027,2030],[117,1831,1833],{"id":1832},"typhoon-ai-คืออะไร","Typhoon AI คืออะไร",[10,1835,1836],{},"Typhoon AI มีการพัฒนาในส่วนของ API ในรูปแบบของ Openai compatible api ซึ่งเป็นมาตรฐานของการพัฒนา API ของ AI ในปัจจุบันอยู่แล้วครับ นั่นหมายความว่าถ้าเดิม ๆ ใช้ของ OpenAI ได้ ก็จะสามารถเปลี่ยนมาใช้ของตัวอื่นได้ด้วยเช่นเดียวกัน โดยทำแค่เพียงเปลี่ยน URL ที่ใช้ในการเชื่อมต่อ",[10,1838,1839],{},"ด้วยความที่ model นี้สามารถนำมาใช้ได้ฟรีก็แนะนำว่าไม่ควรนำมาใช้ในเชิงพาณิชย์ นะครับ",[117,1841,1843],{"id":1842},"ข้อจำกัดในปัจจุบัน-update-311068","ข้อจำกัดในปัจจุบัน (update 31/10/68)",[1845,1846,1847,1874],"table",{},[1848,1849,1850],"thead",{},[1851,1852,1853,1859,1864,1869],"tr",{},[1854,1855,1856],"th",{},[14,1857,1858],{},"Model",[1854,1860,1861],{},[14,1862,1863],{},"Context Window",[1854,1865,1866],{},[14,1867,1868],{},"Requests per Second",[1854,1870,1871],{},[14,1872,1873],{},"Requests per Minute",[1875,1876,1877,1892,1904],"tbody",{},[1851,1878,1879,1883,1886,1889],{},[1880,1881,1882],"td",{},"typhoon-v2.5-30b-a3b-instruct",[1880,1884,1885],{},"128K tokens",[1880,1887,1888],{},"5",[1880,1890,1891],{},"200",[1851,1893,1894,1897,1900,1902],{},[1880,1895,1896],{},"typhoon-v2.1-12b-instruct",[1880,1898,1899],{},"56K tokens",[1880,1901,1888],{},[1880,1903,1891],{},[1851,1905,1906,1909,1912,1915],{},[1880,1907,1908],{},"typhoon-ocr",[1880,1910,1911],{},"-",[1880,1913,1914],{},"2",[1880,1916,1917],{},"20",[117,1919,1921],{"id":1920},"วิธีการนำมาใช้งานใน-n8n","วิธีการนำมาใช้งานใน N8N",[10,1923,1924],{},"มาเริ่มกันเลยฮะ",[1060,1926,1927],{},[38,1928,1929,1930,1934,1935],{},"สมัคร User ที่ ",[81,1931,1932],{"href":1932,"rel":1933},"https://playground.opentyphoon.ai/",[85]," เพื่อขอใช้ API Key (ตรงนี้ Free นะ) โดยจะมี Rate limit และเงื่อนไขการใช้งานเพิ่มเติมแนะนำให้อ่านต่อที่ ",[81,1936,1937],{"href":1937,"rel":1938},"https://docs.opentyphoon.ai/en/rate-limits/",[85],[10,1940,1941],{},[867,1942],{"alt":88,"src":1943},"/images/2025-10-03-typhoon-ai-n8n/typhoon-1.png",[1060,1945,1946],{"start":89},[38,1947,1948],{},"จากนั้นสามารถ Copy API Key ไว้ได้เลยฮะ ตามรูปนี้เลย",[10,1950,1951],{},[867,1952],{"alt":88,"src":1953},"/images/2025-10-03-typhoon-ai-n8n/typhoon-2.png",[1060,1955,1956],{"start":92},[38,1957,1958],{},"กลับมาที่ N8N ของเราแล้วกด \"Create Credential\"",[10,1960,1961],{},[867,1962],{"alt":88,"src":1963},"/images/2025-10-03-typhoon-ai-n8n/typhoon-3.png",[1060,1965,1966],{"start":245},[38,1967,1968],{},"โดยเลือกเป็น \"OpenAi\" ได้เลยครับ",[10,1970,1971],{},[867,1972],{"alt":88,"src":1973},"/images/2025-10-03-typhoon-ai-n8n/typhoon-4.png",[1060,1975,1976],{"start":256},[38,1977,1978],{},"นำ API Key ที่ Copy ไว้มาใส่ และแก้ตรง Base URL ให้เป็น",[158,1980,1985],{"className":1981,"code":1983,"language":1984},[1982],"language-text","https://api.opentyphoon.ai/v1\n","text",[137,1986,1983],{"__ignoreMap":88},[10,1988,1989],{},[867,1990],{"alt":88,"src":1991},"/images/2025-10-03-typhoon-ai-n8n/typhoon-6.png",[1060,1993,1994],{"start":264},[38,1995,1996],{},"จากนั้นเวลาจะใช้งานก็สามารถเลือกเป็น \"OpenAI Chat Model\" ได้เลย",[10,1998,1999],{},[867,2000],{"alt":88,"src":2001},"/images/2025-10-03-typhoon-ai-n8n/typhoon-5.png",[1060,2003,2004],{"start":280},[38,2005,2006],{},"ตรง \"Credential to connect with\" ให้เลือกเป็น typhoon ที่เราสร้างในขั้นตอนที่ 5 และเลือก Model โดยใช้ \"By ID\" และกรอกเป็น",[158,2008,2011],{"className":2009,"code":2010,"language":1984},[1982],"typhoon-v2.1-12b-instruct\n",[137,2012,2010],{"__ignoreMap":88},[10,2014,2015],{},"หรือ",[158,2017,2020],{"className":2018,"code":2019,"language":1984},[1982],"typhoon-v2.5-30b-a3b-instruct\n",[137,2021,2019],{"__ignoreMap":88},[10,2023,2024],{},[867,2025],{"alt":88,"src":2026},"/images/2025-10-03-typhoon-ai-n8n/typhoon-7.png",[10,2028,2029],{},"เรียบร้อยย เพียงแค่นี้เราก็จะสามารถใช้งาน typhoon AI ด้วย N8N ได้แล้วคับ Enjoy ฮะะ",[10,2031,2032],{},[867,2033],{"alt":88,"src":2034},"/images/2025-10-03-typhoon-ai-n8n/typhoon-8.png",{"title":88,"searchDepth":89,"depth":89,"links":2036},[2037,2038,2039],{"id":1832,"depth":89,"text":1833},{"id":1842,"depth":89,"text":1843},{"id":1920,"depth":89,"text":1921},"2025-10-03T00:00:00.000Z","วันนี้จะมาแนะนำวิธีการนำ Typhoon AI ซึ่งเป็น AI ของคนไทย มาใช้งานใน N8N",{},"Typhoon AI With N8N","/blogs/2025-10-03-typhoon-ai-n8n",[951],{"title":1827,"description":2041},{"loc":2044},"blogs/2025-10-03-typhoon-ai-n8n",[107],"Omc7-mXv-9vBYpXEqfE3aCWowXf2jL5taB14ExDvnDc",{"id":2052,"title":2053,"body":2054,"date":2125,"description":2126,"draft":96,"extension":97,"meta":2127,"navigation":99,"next":100,"ogTitle":2128,"path":2129,"pin":96,"prev":100,"recommends":100,"seo":2130,"sitemap":2131,"stem":2132,"tags":2133,"__hash__":2134},"content/blogs/2026-02-08-glm-4-7.md","GLM-4.7 มาแล้ว! โมเดลใหม่จาก Zhipu AI ที่เคลมว่าแรงแซง SOTA ทุกค่าย",{"type":7,"value":2055,"toc":2121},[2056,2066,2073,2077,2103,2106,2109],[10,2057,2058,2059,2061,2062,2065],{},"ช่วงนี้วงการ LLM แข่งกันดุเดือดมาก ล่าสุดทาง ",[14,2060,16],{}," ก็ไม่ยอมน้อยหน้า ปล่อยตัว ",[14,2063,2064],{},"GLM-4.7"," ออกมาท้าชนรุ่นพี่ในตลาดแบบไม่เกรงใจใคร",[10,2067,2068,2069,2072],{},"เท่าที่ลองส่องดูใน Blog และ Benchmark ที่เขาปล่อยมา รอบนี้เขาเน้นเรื่อง ",[14,2070,2071],{},"\"Super-high Intelligence\""," หรือความฉลาดในการแก้ปัญหาซับซ้อน (Complex Reasoning) แบบก้าวกระโดดครับ",[30,2074,2076],{"id":2075},"มีอะไรน่าสนใจบ้าง","มีอะไรน่าสนใจบ้าง?",[35,2078,2079,2085,2091,2097],{},[38,2080,2081,2084],{},[14,2082,2083],{},"Reasoning เทพขึ้น:"," ตัวนี้ถูกเทรนมาให้จัดการกับ Logic ยากๆ ได้ดีขึ้นมาก ฟีลคล้ายๆ กับพวกโมเดลตระกูล o1/Reasoning ของฝั่งตะวันตก",[38,2086,2087,2090],{},[14,2088,2089],{},"Coding เก่งขึ้น:"," สำหรับชาว Dev อย่างเรา นี่คือ Key Feature เลย GLM-4.7 เข้าใจ Context ของ Codebase และช่วย Debug หรือ Refactor ได้แม่นยำกว่ารุ่น 4.0 เดิมเยอะ",[38,2092,2093,2096],{},[14,2094,2095],{},"Universal Capability:"," ทำได้รอบด้านทั้ง Text, Code, Vision และ Function Calling ที่เสถียรขึ้นมาก เหมาะเอาไปต่อกับ Agent สุดๆ",[38,2098,2099,2102],{},[14,2100,2101],{},"Cost-effective:"," จุดขายของค่ายนี้คือความคุ้มค่า ประสิทธิภาพระดับ SOTA (State-of-the-Art) แต่ราคา API มักจะเป็นมิตรกว่าค่ายใหญ่ๆ ฝั่ง US",[30,2104,2105],{"id":2105},"ความรู้สึกส่วนตัว",[10,2107,2108],{},"ส่วนตัวผมเชียร์ค่าย GLM มาสักพักเพราะชอบความ \"Open\" และความเร็วในการตอบสนอง รอบนี้ถือว่าอัปเกรดมาน่ากลัวมาก ใครที่ทำพวก AI Agent หรือกำลังหา Model ทางเลือกที่ฉลาดแต่ประหยัด Token แนะนำให้ลองไปต่อ API เล่นดูครับ",[72,2110,2111],{},[10,2112,2113,79,2116],{},[14,2114,2115],{},"อ่านรายละเอียดเต็มๆ:",[81,2117,2120],{"href":2118,"rel":2119},"https://z.ai/blog/glm-4.7",[85],"Zhipu AI Blog - GLM-4.7",{"title":88,"searchDepth":89,"depth":89,"links":2122},[2123,2124],{"id":2075,"depth":92,"text":2076},{"id":2105,"depth":92,"text":2105},"2026-02-08T00:00:00.000Z","สรุปจุดเด่น GLM-4.7 โมเดลล่าสุดจาก Zhipu AI ที่ยกระดับ Reasoning และ Coding ไปอีกขั้นในราคาที่จับต้องได้",{},"GLM-4.7 Review","/blogs/2026-02-08-glm-4-7",{"title":2053,"description":2126},{"loc":2129},"blogs/2026-02-08-glm-4-7",[107],"AC_8BP-8hQk1KsEOi69ltCdyDb6tVVUEaAS1afAqrpQ",{"id":2136,"title":2137,"body":2138,"date":2125,"description":2225,"draft":96,"extension":97,"meta":2226,"navigation":99,"next":100,"ogTitle":2227,"path":2228,"pin":96,"prev":100,"recommends":100,"seo":2229,"sitemap":2230,"stem":2231,"tags":2232,"__hash__":2233},"content/blogs/2026-02-08-kimi-k2-5.md","Kimi k2.5 เปิดตัวแล้ว! โมเดลใหม่สาย Long Context ที่ฉลาดและเร็วกว่าเดิม",{"type":7,"value":2139,"toc":2221},[2140,2150,2153,2157,2183,2187,2206,2209],[10,2141,2142,2143,2146,2147,1091],{},"สาย AI จีนน่าจะคุ้นเคยกับ ",[14,2144,2145],{},"Kimi (Moonshot AI)"," กันดีในฐานะเจ้าพ่อ Long Context Window ที่ยัดไฟล์ PDF เป็นร้อยหน้าให้มันอ่านได้สบายๆ ล่าสุดเขาปล่อยของใหม่ออกมาเป็น ",[14,2148,2149],{},"Kimi k2.5",[10,2151,2152],{},"หลังจากลองไปอ่าน Blog และเล่นดูคร่าวๆ บอกเลยว่ารอบนี้ไม่ใช่แค่ Minor change แต่เป็นการจูนเครื่องให้ \"คิด\" ซับซ้อนได้ดีขึ้นแบบเห็นผล",[30,2154,2156],{"id":2155},"มีอะไรใหม่ใน-k25","มีอะไรใหม่ใน k2.5?",[35,2158,2159,2165,2171,2177],{},[38,2160,2161,2164],{},[14,2162,2163],{},"Enhanced Reasoning:"," การแก้โจทย์ Logic หรือ Math ที่ต้องคิดหลาย Step ทำได้เนียนตาขึ้นมาก ไม่ค่อยหลุดมั่วเหมือนรุ่นก่อน",[38,2166,2167,2170],{},[14,2168,2169],{},"Super Long Context (Updated):"," จุดขายเดิมคือ Context ยาว แต่รอบนี้ k2.5 จัดการ Information Retrieval ใน Context ยาวๆ ได้แม่นยำขึ้น (อาการ \"ลืม\" กลางทางน้อยลง)",[38,2172,2173,2176],{},[14,2174,2175],{},"Coding Performance:"," ลองให้เขียน Script Python ง่ายๆ หรือแก้บั๊ก Code ที่ซับซ้อน ถือว่าทำได้ดีขึ้นจนน่าตกใจ เอามาเป็น Pair Programmer ได้เลย",[38,2178,2179,2182],{},[14,2180,2181],{},"Speed & Efficiency:"," รู้สึกว่า Response Time ไวขึ้น ประมวลผลลื่นขึ้น",[30,2184,2186],{"id":2185},"เหมาะกับใคร","เหมาะกับใคร?",[35,2188,2189,2196,2199],{},[38,2190,2191,2192,2195],{},"คนที่ชอบโยน ",[14,2193,2194],{},"Document/Paper/Report"," ยาวๆ ให้ AI ช่วยสรุปหรือวิเคราะห์",[38,2197,2198],{},"Dev ที่อยากหา Model ทางเลือกนอกจาก GPT-4 หรือ Claude มาช่วยเขียน Code",[38,2200,2201,2202,2205],{},"สาย ",[14,2203,2204],{},"Data Analysis"," ที่ต้อง Process ข้อมูลดิบจำนวนมาก",[10,2207,2208],{},"ใครที่ใช้ Kimi เป็นตัวหลักในการอ่าน Doc อยู่แล้ว แนะนำให้สลับมาลอง k2.5 ดูครับ ชีวิตดีขึ้นเยอะ!",[72,2210,2211],{},[10,2212,2213,79,2216],{},[14,2214,2215],{},"อ่านเพิ่มเติม:",[81,2217,2220],{"href":2218,"rel":2219},"https://www.kimi.com/blog/kimi-k2-5.html",[85],"Kimi Blog - Kimi k2.5",{"title":88,"searchDepth":89,"depth":89,"links":2222},[2223,2224],{"id":2155,"depth":92,"text":2156},{"id":2185,"depth":92,"text":2186},"สรุปความโหดของ Kimi k2.5 โมเดลล่าสุดจาก Moonshot AI ที่อัปเกรดเรื่อง Reasoning และการจัดการ Context ยาวๆ ให้เสถียรขึ้น",{},"Kimi k2.5 Review","/blogs/2026-02-08-kimi-k2-5",{"title":2137,"description":2225},{"loc":2228},"blogs/2026-02-08-kimi-k2-5",[107],"mwVXzkJCEOBoxxqeCon5rhGQmhwl8RXHcd071Y6izKA",{"id":2235,"title":2236,"body":2237,"date":2125,"description":2354,"draft":96,"extension":97,"meta":2355,"navigation":99,"next":100,"ogTitle":2254,"path":2356,"pin":96,"prev":100,"recommends":100,"seo":2357,"sitemap":2358,"stem":2359,"tags":2360,"__hash__":2361},"content/blogs/2026-02-08-n8n-skills.md","เปลี่ยน Claude ให้เป็นเทพ n8n ด้วย n8n-skills",{"type":7,"value":2238,"toc":2349},[2239,2249,2256,2260,2297,2299,2320,2323,2334,2337],[10,2240,2241,2242,2245,2246,2248],{},"ปกติเวลาให้ AI ช่วยเขียน Script หรือออกแบบ Workflow ใน n8n ปัญหาที่เจอบ่อยคือ AI มักจะมั่ว Syntax (เช่นการใช้ ",[137,2243,2244],{},"{{$json}}"," หรือ ",[137,2247,1325],{}," แบบผิดๆ) หรือไม่รู้จัก Node ใหม่ๆ ทำให้เราต้องมานั่งแก้เองจนเหนื่อย",[10,2250,2251,2252,2255],{},"วันนี้ไปเจอของดีมาครับ ",[14,2253,2254],{},"n8n-skills"," จากคุณ czlonkowski เป็นโปรเจกต์ที่รวบรวม \"Skills\" หรือชุดความรู้เฉพาะทางของ n8n เอาไว้ให้เรา Feed เข้าไปใน Claude (ผ่าน Claude Code หรือ MCP Server) เพื่อให้มันกลายเป็นผู้เชี่ยวชาญ n8n แบบทันที",[30,2257,2259],{"id":2258},"features-หลักๆ-ที่น่าสนใจ","Features หลักๆ ที่น่าสนใจ",[35,2261,2262,2279,2285,2291],{},[38,2263,2264,2267,2268,2271,2272,2271,2275,2278],{},[14,2265,2266],{},"Expression Syntax Expert:"," สอนให้ AI เข้าใจโครงสร้างตัวแปรของ n8n จริงๆ (เช่น ",[137,2269,2270],{},"$node",", ",[137,2273,2274],{},"$env",[137,2276,2277],{},"$json.body",") ไม่เขียนมั่ว",[38,2280,2281,2284],{},[14,2282,2283],{},"Workflow Patterns:"," รวม Pattern ยอดฮิตกว่า 5 แบบ (Webhook, API Integration, Database Sync ฯลฯ) ให้ AI ดึงไปใช้ได้เลย",[38,2286,2287,2290],{},[14,2288,2289],{},"Validation:"," ช่วยตรวจสอบ Error และแนะนำวิธีแก้ปัญหาที่ตรงจุด ไม่ใช่แนะนำแบบกว้างๆ",[38,2292,2293,2296],{},[14,2294,2295],{},"Node Configuration:"," AI จะเข้าใจ Property ของ Node กว่า 500+ ตัว รู้ว่าช่องไหนต้องกรอกอะไร",[30,2298,2186],{"id":2185},[35,2300,2301,2307,2317],{},[38,2302,2201,2303,2306],{},[14,2304,2305],{},"Self-hosting"," ที่รัน n8n เอง แล้วอยากมี AI Assistant เก่งๆ มาช่วย Config",[38,2308,2309,2310,2245,2313,2316],{},"คนที่ใช้ ",[14,2311,2312],{},"Claude Code",[14,2314,2315],{},"Claude Desktop"," คู่กับ MCP (Model Context Protocol)",[38,2318,2319],{},"Dev ที่ขี้เกียจจำ Syntax ยิบย่อยของ n8n",[30,2321,2322],{"id":2322},"วิธีใช้คร่าวๆ",[10,2324,2325,2326,2329,2330,2333],{},"ถ้าใช้ Claude Code ก็แค่รันคำสั่งเพื่อ Install Plugin หรือถ้าใช้ผ่านหน้าเว็บ Claude.ai ก็สามารถ Download ไฟล์ ",[137,2327,2328],{},".md"," ในโฟลเดอร์ ",[137,2331,2332],{},"docs/skills"," ไปโยนให้มันอ่านเป็น Context ได้เลยครับ",[10,2335,2336],{},"ใครที่ใช้ n8n เป็น Core หลักในการทำ Automation อยู่แล้ว แนะนำให้ลองเอาไปเล่นดูครับ ช่วยลดเวลา Debug ไปได้เยอะมาก",[72,2338,2339],{},[10,2340,2341,79,2344],{},[14,2342,2343],{},"GitHub:",[81,2345,2348],{"href":2346,"rel":2347},"https://github.com/czlonkowski/n8n-skills",[85],"czlonkowski/n8n-skills",{"title":88,"searchDepth":89,"depth":89,"links":2350},[2351,2352,2353],{"id":2258,"depth":92,"text":2259},{"id":2185,"depth":92,"text":2186},{"id":2322,"depth":92,"text":2322},"ชุดคำสั่ง (Skills) สำหรับ Claude Code/MCP ที่จะช่วยให้ AI เข้าใจและเขียน n8n Workflow ได้แม่นยำขึ้นแบบก้าวกระโดด",{},"/blogs/2026-02-08-n8n-skills",{"title":2236,"description":2354},{"loc":2356},"blogs/2026-02-08-n8n-skills",[107],"NBX2c7UNr0Mfa0MT9JrwqLh1Y1E6lFnUosQkG2HIHM8",{"id":2363,"title":2364,"body":2365,"date":2125,"description":2472,"draft":96,"extension":97,"meta":2473,"navigation":99,"next":100,"ogTitle":2474,"path":2475,"pin":96,"prev":100,"recommends":100,"seo":2476,"sitemap":2477,"stem":2478,"tags":2479,"__hash__":2480},"content/blogs/2026-02-08-nanobot-ai-agent.md","ลองเล่น Nanobot - AI Agent ไซส์มินิ (Python 4,000 บรรทัด)",{"type":7,"value":2366,"toc":2467},[2367,2377,2381,2387,2415,2419,2429,2432,2452,2455,2458],[10,2368,2369,2370,1091],{},"ช่วงนี้กระแส AI Agent มาแรงมาก แต่หลายตัวมักจะมาพร้อมกับ Framework ที่ใหญ่เทอะทะ หรือ Setup ยุ่งยากจนท้อไปก่อน วันนี้เลยอยากมาป้ายยาโปรเจกต์หนึ่งที่ไปเจอมา ชื่อว่า ",[14,2371,2372],{},[81,2373,2376],{"href":2374,"rel":2375},"https://github.com/HKUDS/nanobot",[85],"HKUDS/nanobot",[30,2378,2380],{"id":2379},"ทำไมถึงน่าสนใจ","ทำไมถึงน่าสนใจ?",[10,2382,2383,2384,1091],{},"จุดขายหลักของเจ้า Nanobot คือความ ",[14,2385,2386],{},"\"Ultra-lightweight\"",[35,2388,2389,2399,2409],{},[38,2390,2391,2394,2395,2398],{},[14,2392,2393],{},"Codebase เล็กมาก:"," Core logic ทั้งหมดเขียนด้วย Python แค่ประมาณ ",[14,2396,2397],{},"4,000 บรรทัด"," เท่านั้น (เคลมว่าเล็กกว่าคู่แข่ง 99%) ซึ่งเหมาะมากสำหรับคนที่อยากแกะโค้ดมาศึกษา หรือเอาไปโมต่อเอง",[38,2400,2401,2404,2405,2408],{},[14,2402,2403],{},"Local First:"," สาย Self-host หรือคนใช้ Mac M1/M2 น่าจะชอบ เพราะมันรองรับ ",[14,2406,2407],{},"Ollama"," ในตัว ไม่ต้องต่อ API นอกเสมอไป รัน Model ในเครื่องได้เลยฟรีๆ",[38,2410,2411,2414],{},[14,2412,2413],{},"Extensible:"," โครงสร้างมันออกแบบมาให้เราเขียน Skill เพิ่มง่ายมาก อยากให้มันทำอะไรเฉพาะทางก็แค่เขียน Python Function แปะเข้าไป",[30,2416,2418],{"id":2417},"ลองเล่นแล้วเป็นไง","ลองเล่นแล้วเป็นไง?",[10,2420,2421,2422,2245,2425,2428],{},"ความรู้สึกแรกคือ \"คลีน\" ครับ ติดตั้งผ่าน ",[137,2423,2424],{},"pip",[137,2426,2427],{},"uv"," แป๊บเดียวเสร็จ สั่งงานผ่าน CLI ได้เลย หรือจะเชื่อมกับ Chat App อย่าง Telegram/Discord ก็ได้",[10,2430,2431],{},"Use case ที่น่าเอาไปทำต่อ:",[1060,2433,2434,2440,2446],{},[38,2435,2436,2439],{},[14,2437,2438],{},"Personal Assistant:"," ให้ช่วยสรุปข่าว หรือแจ้งเตือนสิ่งที่ต้องทำ",[38,2441,2442,2445],{},[14,2443,2444],{},"Coding Buddy:"," ให้ช่วยเจน Code เล็กๆ น้อยๆ หรือ Refactor code",[38,2447,2448,2451],{},[14,2449,2450],{},"Monitor Task:"," สั่งให้เฝ้ากราฟหุ้น/Crypto แล้วแจ้งเตือนเมื่อถึงราคาที่ตั้งไว้",[30,2453,2454],{"id":2454},"สรุป",[10,2456,2457],{},"ใครกำลังมองหา AI Agent Framework ที่ \"เบา\" และ \"คุมได้ 100%\" แนะนำให้ลอง clone มาเล่นดูครับ ถือว่าเป็นจุดเริ่มต้นที่ดีสำหรับคนที่อยากเข้าใจการทำงานของ Agentic Workflow แบบไม่ต้องปวดหัวกับ Library ที่ซับซ้อนเกินไป",[10,2459,2460,2461,79,2464],{},"👉 ",[14,2462,2463],{},"Repo:",[81,2465,2374],{"href":2374,"rel":2466},[85],{"title":88,"searchDepth":89,"depth":89,"links":2468},[2469,2470,2471],{"id":2379,"depth":92,"text":2380},{"id":2417,"depth":92,"text":2418},{"id":2454,"depth":92,"text":2454},"รีวิว Nanobot AI Agent ที่เคลมว่าเล็กพริกขี้หนู เขียนด้วย Python เพียวๆ ปรับแต่งง่าย",{},"Review HKUDS Nanobot","/blogs/2026-02-08-nanobot-ai-agent",{"title":2364,"description":2472},{"loc":2475},"blogs/2026-02-08-nanobot-ai-agent",[107],"V4i2BnAj07h2kp2WU0DdB9ZzlYWsTOMEOaou0uss3As",1774866660804]