สร้าง Spring Boot REST API เชื่อมต่อ Ollama AI
บทนำ: Spring AI + Ollama คืออะไร
- Spring AI → เป็น framework เสริมของ Spring Boot ที่ช่วยเชื่อมระบบ AI (LLM) เช่น OpenAI, Anthropic, Ollama ฯลฯ ได้ง่ายโดยไม่ต้องเขียน HTTP request เอง
- Ollama → คือ local LLM server ที่คุณสามารถรันโมเดลอย่าง
llama2
,mistral
,phi3
,gemma
ได้ ออฟไลน์ 100%
ตัวอย่างนี้จะทำให้ Spring Boot ของคุณสามารถ “คุยกับโมเดล Ollama” ได้เหมือนกับที่คุยกับ ChatGPT แต่รันในเครื่องเราเอง!
ทำความเข้าใจแนวคิดก่อนเริ่ม
ก่อนลงมือโค้ด มาดูแนวคิดของระบบนี้ก่อนครับ
โครงสร้างโดยรวม
เราจะสร้าง Spring Boot Application ที่ทำหน้าที่เป็น “ตัวกลาง (middleware)” ระหว่าง
- ผู้ใช้ (หรือ frontend)
- และโมเดล Ollama (LLM) ที่รันอยู่ในเครื่องเรา
1 | User → Spring Boot API → Spring AI → Ollama Model (local) |
เป้าหมายคือ:
- เราส่งข้อความ (prompt) ไปหา Ollama
- Ollama คิดและตอบกลับข้อความ (response)
- Spring Boot ส่งคำตอบนั้นกลับให้ client ผ่าน REST API
ติดตั้ง Ollama (AI Engine ในเครื่องเรา)
ทำไมต้องติดตั้งก่อน?
เพราะ Ollama ทำหน้าที่เป็น “สมอง” ของระบบ
Spring AI จะเพียงส่งข้อความไปให้ Ollama คิด → แล้วรับคำตอบกลับมา
วิธีติดตั้ง
- เข้าเว็บ https://ollama.com/download
- ติดตั้งตามระบบปฏิบัติการ (Windows / macOS / Linux)
- เปิด Terminal แล้วลองโหลดโมเดลตัวแรก เช่น:
ollama pull llama3
หมายถึง “โหลดโมเดลชื่อ llama3 มาติดตั้งไว้ในเครื่อง” - ทดสอบรันโมเดล:
ollama run llama3
ถ้าได้ prompt ให้พิมพ์ถาม เช่น>>> Hello
และมันตอบกลับมาได้ — แสดงว่า Ollama พร้อมใช้งานแล้ว
Ollama เปิด API อยู่ที่
http://localhost:11434
โดยอัตโนมัติ
สร้างโปรเจกต์ Spring Boot
ทำไมต้อง Spring Boot?
เพราะมันช่วยจัดการ lifecycle, dependency, configuration ต่าง ๆ ให้เราง่ายมาก
และเราจะได้ REST API ที่สามารถติดต่อกับ Ollama ได้ทันที
วิธีสร้าง
ไปที่ https://start.spring.io
เลือก:
- Project: Maven
- Language: Java
- Spring Boot: 3.3.0+
- Dependencies:
Spring Web
(สำหรับสร้าง REST API)Spring AI Ollama Spring Boot Starter
(สำหรับเชื่อม Ollama)
จากนั้นกด “Generate Project” แล้ว unzip มาลงในเครื่อง
เปิดด้วย IntelliJ / VS Code ก็ได้ครับ
ตั้งค่าเชื่อมกับ Ollama ใน application.properties
เปิดไฟล์ src/main/resources/application.properties
แล้วใส่:
1 2 3 4 5 | # URL ของ Ollama server (ค่า default คือ localhost:11434) spring.ai.ollama.base-url=http://localhost:11434 # โมเดลที่ต้องการใช้ (เช่น llama3, mistral, phi3) spring.ai.ollama.chat.options.model=llama3 |
ทำเพื่อให้ Spring AI รู้ว่าจะส่งข้อความไปที่ไหน และใช้โมเดลตัวไหนตอบกลับ
Spring Boot จะ auto-configure ตัวOllamaChatModel
ให้เราเอง (ไม่ต้อง new object เองเลย)
ทำไมต้องมี Controller?
เพราะมันคือ “API Endpoint” ที่ให้ client ภายนอกเรียกเข้ามาได้ เช่น Postman, browser, หรือ frontend
เขียน Controller — จุดรับคำสั่งจากผู้ใช้
สร้างไฟล์ใหม่ชื่อ ChatController.java
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import org.springframework.web.bind.annotation.*; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.ollama.OllamaChatModel; @RestController @RequestMapping("/api/prompt") public class PromptController { private final OllamaChatModel ollamaChatModel; public PromptController(OllamaChatModel ollamaChatModel) { this.ollamaChatModel = ollamaChatModel; } @GetMapping public String get(@RequestParam String message) { Prompt prompt = new Prompt(message); ChatResponse response = ollamaChatModel.call(prompt); return response.getResult().getOutput().getText(); } } |
อธิบายโค้ดทีละส่วน
ส่วน | ทำเพื่ออะไร |
---|---|
@RestController | ทำให้ class นี้เป็น REST API ที่สามารถรับ request ได้ |
@RequestMapping("/api/prompt") | กำหนด base path ของ API |
OllamaChatModel | เป็น object ที่ Spring AI สร้างไว้ให้เพื่อคุยกับ Ollama |
Prompt prompt = new Prompt(message) | สร้าง prompt เพื่อส่งข้อความนั้นไปให้โมเดล |
ollamaChatModel.call(prompt) | เรียกโมเดลให้ประมวลผลและตอบกลับ |
@GetMapping | ใช้เรียกดูบทสนทนาในรูปแบบ List ผ่าน browser |
รันโปรเจกต์และทดสอบ
เปิด Terminal แล้วพิมพ์:
1 | mvn spring-boot:run |
GET: ดูประวัติการคุย
เปิด browser แล้วเข้า:
สรุปแนวคิด
ขั้นตอน | ทำเพื่ออะไร |
---|---|
ติดตั้ง Ollama | สร้าง LLM ที่รันบนเครื่องเรา |
ตั้งค่า base-url + model | บอก Spring ว่าจะเชื่อมกับ Ollama instance ไหน |
สร้าง Controller | สร้าง REST API สำหรับรับส่งข้อความ |
ใช้ OllamaChatModel | ใช้งาน abstraction ของ Spring AI แทน HTTP Request |
เพิ่ม method GET | เพื่อให้เรา test ได้ง่าย |
ความคิดเห็น
แสดงความคิดเห็น