[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-golang-the-series-ep146-prompt-engineering-for-gophers-all--*":3,"academy-blog-translations-k7elykum3z2xaw7":79},{"data":4,"page":65,"perPage":65,"totalItems":65,"totalPages":65},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":73,"keywords":74,"locale":47,"published_at":75,"scheduled_at":13,"school_blog":69,"short_description":76,"status":67,"title":77,"updated":78,"updated_by":13,"slug":70,"views":72},"เทคนิคการเขียน Prompt Engineering ภายในโค้ดภาษา Go สำหรับนักพัฒนา Backend","sclblg987654321","school_blog_translations","\u003Cp>ยินดีต้อนรับเข้าสู่ EP.146 ครับ หลังจากที่เราลองรันโมเดลทั้งบน Cloud และ Local LLM กันไปแล้ว หลายคนน่าจะเจอปัญหาชวนปวดหัวเหมือนกันคือ \"ทำไม AI ตอบไม่ตรงบรีฟ?\" หรือ \"จะเอา Output ไป Parse ลงโค้ด Go ทำไมมันยากจัง?\"\u003C\u002Fp>\u003Cp>วันนี้เราจะมาคุยเรื่อง \u003Cstrong>Prompt Engineering\u003C\u002Fstrong> กันครับ แต่เราจะไม่คุยในมุมของ User ที่พิมพ์แชทเล่นไปวันๆ เราจะคุยกันในฐานะ \u003Cstrong>Gopher\u003C\u002Fstrong> ที่ต้องเขียน Prompt ฝังลงใน Source Code เพื่อควบคุม AI ให้ทำงานร่วมกับระบบ Backend ของเราได้อย่างแม่นยำและไร้รอยต่อครับ\u003C\u002Fp>\u003Ch2>Structure is Everything: การใช้ Constant และ Template\u003C\u002Fh2>\u003Cp>การเขียน Prompt ยาวๆ ลงในฟังก์ชันโดยตรง (Hardcoding) นอกจากจะทำให้โค้ดดูรกแล้ว ยังทำให้การแก้ไขหรือทำ A\u002FB Testing กับ Prompt ทำได้ยากมากครับ เทคนิคที่ Gopher มือโปรใช้กันคือการจัดการ Prompt ให้เป็นสัดส่วน\u003C\u002Fp>\u003Ch3>A. ใช้ Constants (สำหรับ Static Prompt)\u003C\u002Fh3>\u003Cp>หาก Prompt ของคุณตายตัว ไม่มีการเปลี่ยนตาม Variable แนะนำให้ใช้ \u003Cstrong>Raw String Literals (backticks)\u003C\u002Fstrong> เก็บไว้ใน Constant นอกฟังก์ชันครับ\u003C\u002Fp>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>const SystemRolePrompt = `คุณคือผู้ช่วยอธิบายโค้ดภาษา Go \nจงตอบคำถามให้กระชับและเน้นตัวอย่างโค้ดที่เป็นไปตาม Go Best Practices`\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>B. ใช้ text\u002Ftemplate (สำหรับ Dynamic Prompt)\u003C\u002Fh2>\u003Cp>ในกรณีที่ต้องมีการฉีดข้อมูล (Data Injection) เช่น ใส่ชื่อผู้ใช้ หรือเนื้อหาบทความลงไปใน Prompt การใช้ \u003Ccode>fmt.Sprintf\u003C\u002Fcode> อาจจะดูยุ่งเหยิงเมื่อ Prompt มีขนาดใหญ่ การใช้ Package \u003Ccode>text\u002Ftemplate\u003C\u002Fcode> จะช่วยให้โค้ดดูสะอาดและจัดการโครงสร้างได้ดีกว่ามากครับ\u003C\u002Fp>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>const SummaryTemplate = `จงสรุปเนื้อหาบทความเรื่อง \"{{.Title}}\" \nโดยเน้นประเด็นสำคัญไม่เกิน 3 ข้อ ดังนี้: {{.Content}}`\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>💡 Tips จากประสบการณ์:\u003C\u002Fh3>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>แยกไฟล์:\u003C\u002Fstrong> หากโปรเจกต์เริ่มใหญ่ แนะนำให้แยกไฟล์ \u003Ccode>prompts.go\u003C\u002Fcode> ออกมาโดยเฉพาะ เพื่อให้ง่ายต่อการที่ทีม (หรือแม้แต่คนทำ Prompt Engineer) จะมาช่วยเกลาข้อความโดยไม่ต้องไล่หาใน Logic ของโปรแกรมครับ\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Version Control:\u003C\u002Fstrong> การแยก Constant ช่วยให้เราเห็นความเปลี่ยนแปลงของ Prompt ผ่าน Git Diff ได้ชัดเจนขึ้นมาก\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Output Formatting: บังคับ AI ให้ตอบเป็น JSON\u003C\u002Fh2>\u003Cp>ปัญหาที่น่าปวดหัวที่สุดของ Developer คือ AI มักจะ \"ใจดีเกินไป\" แถมนบทนำและบทสรุปมาให้ด้วย (เช่น \"ได้ค่ะ นี่คือ JSON ที่คุณต้องการ...\") ซึ่งประโยคเหล่านี้จะทำให้ฟังก์ชัน \u003Ccode>json.Unmarshal\u003C\u002Fcode> ของ Go พ่น Error ออกมาทันที\u003C\u002Fp>\u003Ch3>เทคนิคการคุม Output ให้แม่นยำ:\u003C\u002Fh3>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>กำชับด้วย Negative Prompt:\u003C\u002Fstrong> นอกจากบอกว่าให้ตอบเป็น JSON ต้องกำชับด้วยว่า \u003Cstrong>\"No prose, no explanations, just raw JSON\"\u003C\u002Fstrong> เพื่อตัดส่วนเกินออก\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>ส่ง JSON Schema เป็นตัวอย่าง:\u003C\u002Fstrong> AI จะทำงานได้ดีขึ้นมากถ้าเห็นโครงสร้าง (Structure) ที่เราต้องการ\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>เปิดใช้ JSON Mode:\u003C\u002Fstrong> หากคุณใช้ OpenAI หรือ Ollama รุ่นใหม่ๆ ให้ตั้งค่าใน API Request เป็น \u003Ccode>response_format: { \"type\": \"json_object\" }\u003C\u002Fcode> ซึ่งจะเป็นการบังคับที่ระดับ Engine ให้ตอบกลับมาเป็น JSON ที่ถูกต้องทางไวยากรณ์ (Valid JSON) เท่านั้น\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch3>ตัวอย่างการวางโครงสร้างใน Go:\u003C\u002Fh3>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>const JSONPrompt = `จงสรุปเนื้อหาบทความนี้ให้อยู่ในรูปแบบ JSON เท่านั้น\nกฎ: ห้ามมีคำนำหรือคำบรรยายอื่นใดนอกจาก JSON\nSchema: {\n  \"title\": \"string\",\n  \"summary\": \"string\", \n  \"tags\": [\"string\", \"string\"]\n}`\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>⚠️ ข้อควรระวัง (Pro Tip for Gophers):\u003C\u002Fh3>\u003Cp>แม้เราจะสั่ง \"ตอบเฉพาะ JSON\" แต่บางครั้ง AI ก็ยังแถม \u003Cstrong>Markdown Backticks\u003C\u002Fstrong> (เช่น \u003Ccode>json ... \u003C\u002Fcode>) มาให้ในคำตอบ\u003C\u002Fp>\u003Cp>\u003Cstrong>วิธีแก้:\u003C\u002Fstrong> ในโค้ด Go ของคุณ ควรมีฟังก์ชันเล็กๆ สำหรับการ \u003Cstrong>Trim\u003C\u002Fstrong> หรือลบ \u003Ccode>```json\u003C\u002Fcode> และ \u003Ccode>```\u003C\u002Fcode> ออกจาก String ก่อนจะนำไป Unmarshal เพื่อให้ระบบของคุณ Robust หรือ \"อึด\" ต่อความผิดพลาดของ AI มากที่สุดครับ\u003C\u002Fp>\u003Ch2>Few-Shot Prompting: สอน AI ด้วยตัวอย่าง (Examples)\u003C\u002Fh2>\u003Cp>บางครั้งการอธิบายด้วยคำพูด (Instruction) อย่างเดียวอาจจะไม่เห็นภาพเท่ากับการ \u003Cstrong>\"ทำให้ดู\"\u003C\u002Fstrong> ครับ \u003Cstrong>Few-Shot Prompting\u003C\u002Fstrong> คือการส่งตัวอย่างชุดข้อมูล (Input\u002FOutput) ให้ AI เห็นเป็นแนวทางก่อนที่จะให้มันตอบคำถามจริง\u003C\u002Fp>\u003Ch3>ทำไมต้องทำแบบนี้?\u003C\u002Fh3>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>คุมสไตล์การตอบ:\u003C\u002Fstrong> เช่น อยากให้ตอบสั้นๆ หรือตอบแบบกวนๆ\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>คุม Format ที่ซับซ้อน:\u003C\u002Fstrong> ช่วยให้ AI เข้าใจโครงสร้างข้อมูลที่อธิบายยากๆ ได้ดีขึ้น\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>ลด Error:\u003C\u002Fstrong> เมื่อ AI เห็นตัวอย่างที่ถูกต้อง มันจะเลียนแบบตามแนวทางนั้นทันที\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch3>ตัวอย่างการวางโครงสร้างใน Go:\u003C\u002Fh3>\u003Cp>เราจะใช้การเรียง \u003Ccode>Messages\u003C\u002Fcode> ใน Slice โดยจำลองสถานการณ์การคุยกันที่ผ่านมา (Chat History) ครับ\u003C\u002Fp>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>messages := []openai.ChatCompletionMessage{\n    \u002F\u002F ตัวอย่างที่ 1\n    {Role: \"user\", Content: \"Go คืออะไร?\"},\n    {Role: \"assistant\", Content: \"Go คือภาษาโปรแกรมที่เน้นความเรียบง่ายและประสิทธิภาพ\"},\n    \n    \u002F\u002F ตัวอย่างที่ 2\n    {Role: \"user\", Content: \"แล้ว Docker คืออะไร?\"},\n    {Role: \"assistant\", Content: \"Docker คือแพลตฟอร์มที่ใช้จัดการ Container เพื่อให้รันแอปได้ทุกที่\"},\n    \n    \u002F\u002F คำถามจริง\n    {Role: \"user\", Content: \"Kubernetes คืออะไร?\"}, \n    \u002F\u002F AI จะตอบกลับมาด้วยสไตล์ \"นิยามสั้นๆ\" เหมือนตัวอย่างด้านบนเป๊ะ!\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>💡 Tips สำหรับ Gopher:\u003C\u002Fh3>\u003Cp>ในงานจริง คุณสามารถเก็บชุดตัวอย่างเหล่านี้ไว้ในไฟล์ JSON หรือ Database แล้วโหลดขึ้นมาฉีดใส่ \u003Ccode>[]openai.ChatCompletionMessage\u003C\u002Fcode> ก่อนส่งไปที่ API วิธีนี้จะช่วยให้เราสามารถปรับเปลี่ยนพฤติกรรม AI ได้โดยไม่ต้อง Compile โค้ดใหม่ทุกครั้งครับ\u003C\u002Fp>\u003Ch2>Chain of Thought: สั่งให้ AI คิดก่อนตอบ\u003C\u002Fh2>\u003Cp>เคยไหมครับ? สั่งให้ AI เขียนอัลกอริทึมยากๆ แล้วมันดันเขียนโค้ดที่รันไม่ได้ หรือ Logic ผิดแบบงงๆ นั่นเป็นเพราะ AI พยายามเดาคำตอบถัดไป (Next Token Prediction) โดยที่ยังไม่ได้วางแผนแก้ปัญหาในหัวครับ\u003C\u002Fp>\u003Cp>\u003Cstrong>Chain of Thought (CoT)\u003C\u002Fstrong> คือเทคนิคการสั่งให้ AI \"แจกแจงตรรกะ\" ออกมาก่อนจะสรุปคำตอบ ซึ่งจะช่วยเพิ่มความแม่นยำได้มหาศาล\u003C\u002Fp>\u003Ch3>เทคนิคการเขียนใน Prompt:\u003C\u002Fh3>\u003Cul>\u003Cli>\u003Cp>เพิ่มประโยคทองคำอย่าง \u003Cstrong>\"Let’s think step by step\"\u003C\u002Fstrong> หรือ \u003Cstrong>\"จงคิดทีละขั้นตอนอย่างเป็นเหตุเป็นผล\"\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>หากต้องการผลลัพธ์ที่เป็น JSON แต่ยังอยากให้มันคิดก่อน คุณสามารถสั่งให้ AI แบ่งโครงสร้างคำตอบเป็น 2 ส่วน คือ \u003Ccode>thoughts\u003C\u002Fcode> (สำหรับแสดงวิธีคิด) และ \u003Ccode>result\u003C\u002Fcode> (สำหรับคำตอบจริง)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch3>ตัวอย่างการใช้ในงาน Go:\u003C\u002Fh3>\u003Cp>Go\u003C\u002Fp>\u003Cpre>\u003Ccode>const ComplexLogicPrompt = `จงเขียนฟังก์ชันสำหรับคำนวณภาษีแบบขั้นบันไดในภาษา Go \nโดยให้คุณ \"คิดทีละขั้นตอน\" ดังนี้:\n1. วิเคราะห์เงื่อนไขภาษีแต่ละขั้น\n2. วางโครงสร้างตัวแปรที่จำเป็น\n3. เขียน Logic การคำนวณ\n4. ตรวจสอบความถูกต้อง (Edge Cases)\n5. สรุปเป็นโค้ด Go ที่ใช้งานได้จริง`\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>💡 ทำไม Gopher ถึงควรใช้ CoT?\u003C\u002Fh3>\u003Cp>ในงาน Backend บางครั้งเราต้องการให้ AI ช่วย Review โค้ดหรือหาจุด Bug การสั่งให้มัน \"แจกแจงสาเหตุ\" ก่อนบอกวิธีแก้ จะทำให้เราตรวจสอบได้ง่ายขึ้นว่า AI เข้าใจ Logic ของเราถูกต้องจริงๆ หรือไม่ ไม่ใช่แค่แก้สุ่มๆ ให้รันผ่านครับ\u003C\u002Fp>\u003Ch2>🎯 ท้าให้ลอง (Daily Mission)\u003C\u002Fh2>\u003Cp>เพื่อให้ทุกคนเห็นพลังของ Prompt Engineering ผมอยากให้ลองสร้างฟังก์ชันใน Go ที่รับ \"บทความดิบ\" เข้าไป แล้วเขียน Prompt บังคับให้ AI สรุปบทความออกมาเป็น \u003Cstrong>JSON Struct\u003C\u002Fstrong> ที่ประกอบด้วย:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode>title\u003C\u002Fcode> (ชื่อเรื่อง)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode>abstract\u003C\u002Fcode> (บทคัดย่อสั้นๆ)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode>category\u003C\u002Fcode> (หมวดหมู่)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch3>โจทย์การบ้าน\u003C\u002Fh3>\u003Cp>ลองปรับแก้ Prompt ของคุณจนกว่า AI จะตอบกลับมาเป็น JSON ที่สะอาดพอจะใช้ \u003Ccode>json.Unmarshal\u003C\u002Fcode> ลงใน Struct ของ Go ได้ \u003Cstrong>100% โดยไม่มี Error\u003C\u002Fstrong> แม้แต่ครั้งเดียว!\u003C\u002Fp>\u003Cdiv data-type=\"horizontalRule\">\u003Chr>\u003C\u002Fdiv>\u003Ch2>บทสรุป: จากแค่การสั่งเป็นการควบคุม\u003C\u002Fh2>\u003Cp>การทำ \u003Cstrong>Prompt Engineering\u003C\u002Fstrong> สำหรับ Gopher ไม่ใช่งานสายศิลปะที่ต้องใช้คำสวยหรูครับ แต่มันคือการออกแบบ Interface ของข้อมูล เพื่อให้ AI คุยกับโปรแกรมของเราได้รู้เรื่องที่สุด\u003C\u002Fp>\u003Cp>จำไว้ว่า Prompt ที่ดีใน Source Code ต้อง อ่านง่าย (Structure), แม่นยำ (JSON), มีตัวอย่าง (Few-Shot) และ มีเหตุผล (CoT) เมื่อคุณคุมปัจจัยเหล่านี้ได้ AI จะไม่ได้เป็นแค่แชทบอทอีกต่อไป แต่จะเป็นโมดูลอัจฉริยะโมดูลหนึ่งในระบบ Backend ของคุณอย่างแท้จริงครับ\u003C\u002Fp>\u003Ch3>ตอนต่อไป | EP.147: Structured Output — บังคับ AI ตอบกลับเป็น JSON ให้ Go Parse ได้แม่นยำ 100%\u003C\u002Fh3>\u003Cp>ในตอนนี้เราเรียนรู้เทคนิคการเขียน Prompt ไปแล้ว แต่ในโลกความเป็นจริง AI ก็ยังมีโอกาสนอกลู่นอกทางหรือคืนค่า JSON ที่มี Format แปลกๆ มาทำให้โค้ด Go ของเรา Panic ได้!\u003C\u002Fp>\u003Cp>ถ้าคุณอยากสร้างระบบที่ไม่มีวันพังเพราะ AI ตอบเพี้ยน ห้ามพลาด EP.147 ครับ!\u003C\u002Fp>\u003Cp>\u003Cstrong>ฝากกดติดตามพวกเราได้ที่ Superdev Academy\u003C\u002Fstrong> ในทุกช่องทางนะครับ!\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>🔵 Facebook: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.facebook.com\u002Fsuperdev.academy.th\">\u003Cstrong>Superdev Academy Thailand\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(อัปเดตข่าวสารและบทความใหม่)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🎬 YouTube: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.youtube.com\u002F@SuperdevAcademy\">\u003Cstrong>Superdev Academy Channel\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(ติวเข้มแบบวิดีโอ)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>📸 Instagram: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.instagram.com\u002Fsuperdevacademy\u002F\">\u003Cstrong>@superdevacademy\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(เกร็ดความรู้สั้นๆ และเบื้องหลังการทำงาน)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🎬 TikTok: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener\" class=\"ng-star-inserted\" href=\"https:\u002F\u002Fwww.tiktok.com\u002F@superdevacademy?lang=th-TH\">\u003Cstrong>@superdevacademy\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(Tips &amp; Tricks ฉบับย่อยง่าย)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>🌐 Website: \u003C\u002Fstrong>\u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"http:\u002F\u002Fsuperdevacademy.com\">\u003Cstrong>superdevacademy.com\u003C\u002Fstrong>\u003C\u002Fa>\u003Cstrong> \u003C\u002Fstrong>(คลังบทความและคอร์สเรียนฉบับเต็ม)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003C\u002Fp>","11d9427ih6kd_1mhu54xuvp.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fdymbp36ef2o2e38\u002F11d9427ih6kd_1mhu54xuvp.png","2026-05-19 08:10:32.971Z","",{"keywords":15,"locale":41,"school_blog":51},[16,23,28,32,37],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:44:51.471Z","hlato0hav8vo8wm","Golang The Series","2026-04-10 16:12:50.850Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":29,"updated_by":13},"2026-05-19 08:10:08.033Z","b5bcgkramrz2ogu","Prompt Engineering",{"collectionId":17,"collectionName":18,"created":33,"created_by":13,"id":34,"name":35,"updated":36,"updated_by":13},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":17,"collectionName":18,"created":38,"created_by":13,"id":39,"name":40,"updated":38,"updated_by":13},"2026-05-19 08:10:19.398Z","6gd8t3k2sfam302","JSON Output",{"code":42,"collectionId":43,"collectionName":44,"created":45,"flag":46,"id":47,"is_default":48,"label":49,"updated":50},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":52,"collectionId":53,"collectionName":54,"created":55,"expand":56,"id":69,"slug":70,"updated":71,"views":72},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs","2026-05-19 08:10:32.555Z",{"category":57},{"blogIds":58,"collectionId":59,"collectionName":60,"created":61,"created_by":13,"id":52,"image":62,"image_alt":13,"image_path":63,"label":64,"name":21,"priority":65,"publish_at":66,"scheduled_at":13,"status":67,"updated":68,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":21,"th":21},1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","k7elykum3z2xaw7","golang-the-series-ep146-prompt-engineering-for-gophers","2026-05-25 10:35:19.633Z",114,"dymbp36ef2o2e38",[20,25,30,34,39],"2026-05-25 09:00:00.000Z","ยกระดับการใช้ AI จากแค่แชทให้กลายเป็นการควบคุม ด้วยเทคนิค Prompt Engineering ในโค้ด Go สอนวิธีบังคับ JSON, การทำ Few-Shot และสั่ง AI ให้คิดทีละขั้นตอนเพื่อ Output ที่แม่นยำ 100%","Golang The Series EP.146: Prompt Engineering for Gophers สั่ง AI ให้ Go ทำงานง่าย","2026-05-25 09:00:00.084Z",{"th":70,"en":70}]