การดู : 107

25/05/2026 03:18น.

วิธีติดตั้ง Ollama และการเขียนโค้ดภาษา Go เพื่อรันโมเดล Llama 3 ในเครื่องตัวเอง

Golang The Series EP.145: วิธีติดตั้ง Ollama รัน Llama 3 ในเครื่องตัวเองด้วย Go

#Ollama

#Local LLM

#Llama 3

#Golang

#Go

#AI Privacy

ในตอนที่แล้ว เราได้เรียนรู้วิธีเชื่อมต่อ GPT-4o ผ่าน Cloud API กันไปแล้ว แต่สำหรับโปรเจกต์ที่ต้องการความเป็นส่วนตัวสูงหรือต้องการควบคุมค่าใช้จ่ายในระยะยาว Local LLM คือทางเลือกที่ตอบโจทย์ครับ วันนี้เราจะมาเปลี่ยนเครื่องคอมพิวเตอร์ของคุณให้เป็นเซิร์ฟเวอร์ AI ด้วย Ollama ซึ่งมีจุดเด่นคือรันฟรี ข้อมูลไม่รั่วไหล และทำงานได้แม้ไม่มีอินเทอร์เน็ต

วิธีติดตั้ง Ollama บน Windows/Mac เพื่อรันโมเดล AI ในเครื่องตัวเอง

Ollama คือเครื่องมือที่ช่วยจัดการเรื่องการดาวน์โหลดและรันโมเดลภาษา (LLMs) เช่น Llama 3, Mistral, หรือ Phi-3 ให้เป็นเรื่องง่ายที่สุดในปัจจุบัน โดยมันจะจัดการเรื่องความซับซ้อนของ Library ต่างๆ เบื้องหลังให้เราทั้งหมดครับ

ขั้นตอนการติดตั้ง:

  1. Download: เข้าไปที่ ollama.com เพื่อดาวน์โหลดตัวติดตั้ง (รองรับทั้ง macOS, Linux และ Windows)

  2. Install: ติดตั้งตามขั้นตอนปกติเหมือนแอปพลิเคชันทั่วไป

  3. Run Model: เปิด Terminal ของคุณขึ้นมา แล้วพิมพ์คำสั่งเพื่อดาวน์โหลดและรันโมเดลที่ต้องการ:

Bash

ollama run llama3

หมายเหตุ: ครั้งแรกที่รัน ระบบจะทำการดาวน์โหลดตัวโมเดลลงมาเก็บไว้ในเครื่อง (ขนาดประมาณ 4.7GB สำหรับ Llama 3 8B) เมื่อดาวน์โหลดเสร็จแล้ว คุณสามารถพิมพ์คุยกับ AI ได้โดยตรงผ่าน Terminal ทันทีครับ

เชื่อมต่อ Ollama ด้วย Go: สั่งการ AI ผ่านโค้ด

เมื่อเราติดตั้ง Ollama เสร็จแล้ว ตัวโปรแกรมจะรัน API Server ให้เราโดยอัตโนมัติที่พอร์ต 11434 (localhost:11434) ทำให้เราสามารถเขียนโปรแกรมภาษา Go เข้าไปสั่งการโมเดลได้ทันทีครับ

แม้ว่าเราจะเขียนโค้ดเพื่อยิง net/http ไปที่ API โดยตรงได้ แต่เพื่อความรวดเร็วและเป็นระเบียบ เราจะใช้ Library อย่างเป็นทางการของ Ollama เพื่อให้โค้ดของเราดูเป็น Gopher มากขึ้นครับ

การติดตั้ง Library

ใช้คำสั่งนี้ใน Terminal เพื่อติดตั้ง SDK หลักของ Ollama:

Bash

go get github.com/ollama/ollama

ตัวอย่างโค้ด: สั่งให้โมเดลตอบคำถาม (Streaming)

หัวใจสำคัญของ Ollama SDK ในภาษา Go คือการใช้ฟังก์ชัน Generate ร่วมกับ Callback Function เพื่อรับข้อมูลแบบ Real-time ครับ

Go

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/ollama/ollama/api"
)

func main() {
	// 1. สร้าง Client เพื่อเชื่อมต่อกับ Ollama (ดึงค่าจาก Environment อัตโนมัติ)
	client, err := api.ClientFromEnvironment()
	if err != nil {
		log.Fatal("ไม่สามารถเชื่อมต่อ Ollama ได้:", err)
	}

	ctx := context.Background()

	// 2. กำหนดรายละเอียดคำสั่ง (Request)
	req := &api.GenerateRequest{
		Model:  "llama3", // ระบุชื่อโมเดลที่โหลดไว้ในเครื่อง
		Prompt: "Docker สำคัญกับงานสาย AI อย่างไร? สรุปสั้นๆ",
	}

	// 3. ฟังก์ชันสำหรับจัดการคำตอบที่ส่งมาแบบ Streaming
	respFunc := func(resp api.GenerateResponse) error {
		// พิมพ์คำตอบออกมาทีละส่วน (Chunk) ทันทีที่ข้อมูลมาถึง
		fmt.Print(resp.Response)
		return nil
	}

	// 4. ส่งคำสั่งไปยังโมเดล
	err = client.Generate(ctx, req, respFunc)
	if err != nil {
		fmt.Println("\nเกิดข้อผิดพลาด:", err)
	}
}

ทำไมต้องเขียนแบบนี้?

  • api.ClientFromEnvironment(): สะดวกมากเพราะมันจะหาทางเชื่อมต่อกับ Ollama ที่รันอยู่ในเครื่องเราให้เองโดยไม่ต้องระบุ IP/Port ให้วุ่นวาย

  • respFunc: ตัว SDK ของ Ollama ถูกออกแบบมาให้รับข้อมูลแบบ Streaming เป็นค่าเริ่มต้น การใช้ฟังก์ชันรับค่าแบบนี้จะทำให้โปรแกรมของเราดู "ลื่นไหล" ไม่ต้องรอ AI คิดจนจบแล้วค่อยแสดงผลทีเดียวครับ

Local vs Cloud: เปรียบเทียบจุดเด่น Ollama และ OpenAI เลือกใช้ตัวไหนดี?

การตัดสินใจว่าจะรันโมเดลเองในเครื่อง (Ollama) หรือจะใช้บริการภายนอก (OpenAI) ไม่มีคำตอบที่ถูกที่สุดครับ แต่ขึ้นอยู่กับ "โจทย์ของโปรเจกต์" ที่คุณกำลังทำอยู่ นี่คือตารางสรุปแบบหมัดต่อหมัดเพื่อช่วยให้คุณตัดสินใจได้ง่ายขึ้นครับ

หัวข้อเปรียบเทียบ

Local LLM (Ollama)

Cloud API (OpenAI)

ค่าใช้จ่าย (Cost)

ฟรี (ไม่มีค่า Subscription/Token)

จ่ายตามจริงตามปริมาณ Token

ความเป็นส่วนตัว (Privacy)

สูงสุด ข้อมูลวนอยู่แค่ในเครื่อง 100%

ข้อมูลถูกส่งไปประมวลผลบน Cloud

อินเทอร์เน็ต (Network)

ไม่ต้องใช้ ทำงานแบบ Offline ได้

จำเป็นต้องเสถียรตลอดเวลา

ความเร็ว (Performance)

ขึ้นอยู่กับความแรงของ GPU/RAM

ขึ้นอยู่กับเน็ตและความหนาแน่นของ Server

ความฉลาด (Intelligence)

ปานกลาง (ตามขนาดโมเดลที่เครื่องไหว)

สูงมาก (ใช้โมเดลขนาดใหญ่พิเศษ)

ความง่ายในการ Scale

ยาก (ต้องอัปเกรดเครื่องหรือเพิ่ม Server)

ง่ายมาก แค่จ่ายเงินเพิ่มเพื่อขอโควต้า

💡 สรุปสั้นๆ ให้เลือกง่ายขึ้น:

  • เลือก Local (Ollama) เมื่อ: คุณทำโปรเจกต์ที่ซีเรียสเรื่องความลับข้อมูลมาก (เช่น ข้อมูลลูกค้า, บัญชีบริษัท) หรือต้องการประหยัดงบในระยะยาว และมีเครื่องสเปกแรงพอสมควร (เน้นการมี GPU ที่ดี)

  • เลือก Cloud (OpenAI) เมื่อ: คุณต้องการความฉลาดสูงสุดของโมเดล (Reasoning สูงๆ) ไม่อยากกังวลเรื่องการ Setup ระบบเอง หรือกำลังทำแอปที่มีผู้ใช้งานจำนวนมากพร้อมกัน (High Scalability)

🎯 ท้าให้ลอง (Daily Mission)

เพื่อให้เห็นภาพการทำงานจริง ผมอยากให้ทุกคนลองติดตั้ง Ollama และดาวน์โหลดโมเดลขนาดเล็ก (Small Language Models) ที่ไม่กินสเปกเครื่องมากอย่าง phi3 หรือ gemma:2b มาทดสอบดูครับ

โจทย์การบ้าน

ลองนำโค้ด Go จากหัวข้อที่แล้วมาดัดแปลงให้รับอินพุตผ่าน Command Line โดยใช้ os.Args เพื่อให้เราสามารถพิมพ์คำถามต่อท้ายคำสั่งรันโปรแกรมได้ทันที

  • เป้าหมาย: สามารถรันคำสั่งแบบนี้ได้ => go run main.go "สรุปจุดเด่นของ Go ใน 3 ข้อ"

  • คำแนะนำ: อย่าลืมเช็คจำนวน Argument เพื่อป้องกันโปรแกรมพัง (Panic) หากผู้ใช้ลืมพิมพ์คำถามมาด้วยนะครับ


บทสรุป: ก้าวสำคัญสู่การสร้าง AI ที่เป็นอิสระ

การเลือกใช้ Ollama ร่วมกับภาษา Go ไม่ใช่แค่เรื่องของการประหยัดค่าใช้จ่าย แต่มันคือการเปิดประตูสู่การสร้างแอปพลิเคชันที่ทำงานได้ทุกที่และปลอดภัยแบบ 100% แม้ในวันที่โลกไม่มีอินเทอร์เน็ต แอปของคุณก็ยังคงความฉลาดและพร้อมรับใช้ผู้ใช้งานอยู่เสมอ

อย่างไรก็ตาม การเลือกใช้ Local หรือ Cloud ไม่มีทางเลือกไหนที่สมบูรณ์แบบที่สุดครับ หน้าที่ของโปรแกรมเมอร์อย่างเราคือการเลือกเครื่องมือให้เหมาะสมกับโจทย์ และดึงประสิทธิภาพของมันออกมาให้ได้มากที่สุดนั่นเองครับ

ตอนต่อไป | EP.146: Prompt Engineering for Gophers เทคนิคสั่งงาน AI ให้คมกริบ

ไม่ว่าคุณจะเลือกใช้โมเดลระดับโลกอย่าง GPT-4o หรือโมเดลในเครื่องผ่าน Ollama สิ่งหนึ่งที่เป็นตัวตัดสินว่า AI จะทำงานได้คุ้มค่าตัวหรือไม่ก็คือคำสั่ง (Prompt) ครับ ในตอนหน้า เราจะขยับจากการแค่เชื่อมต่อได้ไปสู่การสั่งให้เป็น ด้วยเทคนิคการเขียน Prompt ภายใน Code เพื่อคุม Output ให้แม่นยำและรีดประสิทธิภาพของ AI ออกมาให้ถึงขีดสุด!

ฝากกดติดตามพวกเราได้ที่ Superdev Academy ในทุกช่องทางนะครับ!

  • 🔵 Facebook: Superdev Academy Thailand (อัปเดตข่าวสารและบทความใหม่)

  • 🎬 YouTube: Superdev Academy Channel (ติวเข้มแบบวิดีโอ)

  • 📸 Instagram: @superdevacademy (เกร็ดความรู้สั้นๆ และเบื้องหลังการทำงาน)

  • 🎬 TikTok: @superdevacademy (Tips & Tricks ฉบับย่อยง่าย)

  • 🌐 Website: superdevacademy.com (คลังบทความและคอร์สเรียนฉบับเต็ม)