- 3
- เมษายน
Ollama Series EP.5 — จาก EP.4 ที่เราสร้าง RAG ให้ AI ตอบจากเอกสารองค์กร ตอนนี้ถึงเวลาเชื่อมต่อ Ollama กับแอปพลิเคชันจริง! Ollama มี REST API ในตัวที่ทำงานบน Port 11434 — คุณสามารถเรียกใช้จาก Python, JavaScript, cURL หรือภาษาอะไรก็ได้ที่ส่ง HTTP Request ได้ บทความนี้จะพาคุณรู้จัก API Endpoints ทุกตัว พร้อม Code ตัวอย่างที่ทำตามได้ทันที ทั้ง Chatbot, ระบบสรุปเอกสาร, Automation Workflow และ Structured Output (JSON Mode)
สรุปสั้น — Ollama API ทำอะไรได้?
- REST API ทำงานบน
http://localhost:11434— เรียกใช้จากภาษาใดก็ได้ - /api/generate — สร้างข้อความจาก Prompt (Single-turn)
- /api/chat — แชทแบบมีบทสนทนา (Multi-turn)
- /api/embeddings — แปลงข้อความเป็น Vector (สำหรับ RAG)
- Structured Output — บังคับให้ AI ตอบเป็น JSON ตาม Schema ที่กำหนด
- Streaming — รับคำตอบทีละคำ แบบ Real-time (เหมือน ChatGPT)
- Compatible กับ OpenAI API — ใช้แทน OpenAI ในแอปที่มีอยู่ได้เลย
Ollama API — ภาพรวม Endpoints
Ollama Server ทำงานบน http://localhost:11434 โดยอัตโนมัติ (เริ่มทำงานเมื่อ ติดตั้ง Ollama แล้ว) มี Endpoints หลักดังนี้:
| Endpoint | Method | ทำอะไร | ใช้เมื่อ |
|---|---|---|---|
/api/generate |
POST | สร้างข้อความจาก Prompt | คำถามเดี่ยว, สรุปข้อความ, แปลภาษา |
/api/chat |
POST | แชทแบบมีประวัติบทสนทนา | Chatbot, ผู้ช่วย AI ที่จำบทสนทนาได้ |
/api/embeddings |
POST | แปลงข้อความเป็น Vector | RAG, Semantic Search, จัดหมวดหมู่เอกสาร |
/api/tags |
GET | ดูรายชื่อ Model ที่มี | แสดง Dropdown เลือก Model ในแอป |
/api/show |
POST | ดูข้อมูล Model (ขนาด, Parameters) | แสดง Model Info ในแอป |
/api/pull |
POST | ดาวน์โหลด Model | จัดการ Model ผ่าน API |
/api/delete |
DELETE | ลบ Model | จัดการพื้นที่เก็บข้อมูล |
/v1/chat/completions |
POST | OpenAI-compatible API | ใช้แทน OpenAI API ในแอปที่มีอยู่ |
/api/generate — สร้างข้อความจาก Prompt
Endpoint พื้นฐานที่สุด — ส่ง Prompt ไป ได้คำตอบกลับมา:
cURL
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5",
"prompt": "อธิบาย ERP คืออะไร ภายใน 3 ประโยค",
"stream": false
}'
Python
import requests
response = requests.post("http://localhost:11434/api/generate", json={
"model": "qwen2.5",
"prompt": "อธิบาย ERP คืออะไร ภายใน 3 ประโยค",
"stream": False
})
print(response.json()["response"])
JavaScript (Node.js / Fetch)
const response = await fetch("http://localhost:11434/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "qwen2.5",
prompt: "Explain what ERP is in 3 sentences",
stream: false
})
});
const data = await response.json();
console.log(data.response);
/api/chat — แชทแบบมีประวัติบทสนทนา
Endpoint นี้สำคัญที่สุดสำหรับการสร้าง Chatbot — เพราะ AI จะ "จำ" บทสนทนาก่อนหน้าได้:
import requests
messages = [
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญด้านระบบ ERP ตอบเป็นภาษาไทย กระชับ"},
{"role": "user", "content": "ERP คืออะไร?"},
]
# Turn 1
response = requests.post("http://localhost:11434/api/chat", json={
"model": "qwen2.5",
"messages": messages,
"stream": False
})
assistant_reply = response.json()["message"]["content"]
print("AI:", assistant_reply)
# Turn 2 - AI จำบทสนทนาก่อนหน้าได้
messages.append({"role": "assistant", "content": assistant_reply})
messages.append({"role": "user", "content": "แล้วเหมาะกับองค์กรขนาดไหน?"})
response = requests.post("http://localhost:11434/api/chat", json={
"model": "qwen2.5",
"messages": messages,
"stream": False
})
print("AI:", response.json()["message"]["content"])
Structured Output — บังคับให้ AI ตอบเป็น JSON
หนึ่งในฟีเจอร์ที่ทรงพลังที่สุดของ Ollama API — สามารถ บังคับให้ AI ตอบเป็น JSON ตาม Schema ที่คุณกำหนด ทำให้นำผลลัพธ์ไปใช้ในแอปได้ทันทีโดยไม่ต้อง Parse ข้อความ:
import requests, json
response = requests.post("http://localhost:11434/api/generate", json={
"model": "qwen2.5",
"prompt": "วิเคราะห์อีเมลนี้: 'ขอเลื่อนประชุมจากวันจันทร์เป็นวันพุธ เวลา 14:00 ห้อง A301'",
"stream": False,
"format": {
"type": "object",
"properties": {
"action": {"type": "string"},
"original_date": {"type": "string"},
"new_date": {"type": "string"},
"time": {"type": "string"},
"room": {"type": "string"},
"urgency": {"type": "string", "enum": ["low", "medium", "high"]}
},
"required": ["action", "new_date", "time"]
}
})
result = json.loads(response.json()["response"])
print(json.dumps(result, ensure_ascii=False, indent=2))
# Output:
# {
# "action": "reschedule_meeting",
# "original_date": "Monday",
# "new_date": "Wednesday",
# "time": "14:00",
# "room": "A301",
# "urgency": "medium"
# }
Structured Output ใช้ทำอะไรได้?
- สกัดข้อมูลจากอีเมล: ดึงวันที่ เวลา สถานที่ ผู้ติดต่อ อัตโนมัติ
- จัดหมวดหมู่เอกสาร: AI อ่านเอกสารแล้วตอบเป็น JSON ว่าเป็นหมวดอะไร ระดับความสำคัญเท่าไหร่
- สร้างข้อมูลให้ระบบ: ให้ AI สร้าง ใบสั่งซื้อ เป็น JSON แล้วส่งเข้าระบบ ERP โดยตรง
- วิเคราะห์ งบประมาณ: AI อ่านรายงานแล้วตอบเป็น JSON ว่ารายการไหนเกินงบ เท่าไหร่
Streaming — รับคำตอบ Real-time
โดยค่าเริ่มต้น Ollama API จะ Stream คำตอบทีละ Token — เหมือนที่เห็นใน ChatGPT ที่ข้อความขึ้นทีละคำ ทำให้ผู้ใช้ไม่ต้องรอจนกว่า AI จะตอบเสร็จทั้งหมด:
import requests, json
# Streaming mode (default)
response = requests.post("http://localhost:11434/api/generate", json={
"model": "qwen2.5",
"prompt": "อธิบาย PDPA คืออะไร",
"stream": True # default
}, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data["response"], end="", flush=True)
if data.get("done"):
print() # ขึ้นบรรทัดใหม่เมื่อเสร็จ
OpenAI-Compatible API — ใช้แทน OpenAI ได้เลย
Ollama รองรับ OpenAI-compatible API ที่ /v1/chat/completions — หมายความว่าแอปที่เขียนไว้ใช้กับ OpenAI API สามารถเปลี่ยนมาใช้ Ollama ได้ โดยแก้แค่ URL ไม่ต้องแก้โค้ดส่วนอื่น:
# ใช้ OpenAI Python SDK กับ Ollama
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1", # เปลี่ยนแค่ URL
api_key="ollama" # ใส่อะไรก็ได้ (Ollama ไม่ต้อง API Key)
)
response = client.chat.completions.create(
model="qwen2.5",
messages=[
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญ ERP"},
{"role": "user", "content": "วิธีเลือก ERP ให้เหมาะกับองค์กร?"}
]
)
print(response.choices[0].message.content)
ทำไมต้อง OpenAI-Compatible?
- แอปที่ใช้ OpenAI API อยู่แล้ว (เช่น MCP, LangChain, AutoGen) เปลี่ยนมาใช้ Ollama ได้ทันที
- ไม่ต้อง API Key — ประหยัดค่าใช้จ่าย ไม่ต้องจ่ายรายเดือน
- ข้อมูลอยู่ในเครื่อง — เปลี่ยนจากส่งไป OpenAI เป็นประมวลผลในเครื่อง
ตัวอย่างจริง — สร้าง Chatbot บนเว็บ
ตัวอย่างนี้สร้าง Chatbot ง่ายๆ ด้วย Python + Flask ที่เชื่อมกับ Ollama:
# file: chatbot.py
from flask import Flask, request, jsonify, render_template_string
import requests
app = Flask(__name__)
HTML = """
<!DOCTYPE html>
<html>
<head><title>ERP AI Assistant</title></head>
<body>
<h2>ERP AI Assistant (Powered by Ollama)</h2>
<div id="chat" style="height:400px;overflow-y:auto;border:1px solid #ccc;padding:10px;"></div>
<input id="msg" style="width:80%" placeholder="ถามคำถามเกี่ยวกับ ERP...">
<button onclick="send()">ส่ง</button>
<script>
async function send() {
const msg = document.getElementById('msg').value;
document.getElementById('chat').innerHTML += '<p><b>คุณ:</b> ' + msg + '</p>';
document.getElementById('msg').value = '';
const res = await fetch('/chat', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: msg})
});
const data = await res.json();
document.getElementById('chat').innerHTML += '<p><b>AI:</b> ' + data.reply + '</p>';
}
</script>
</body>
</html>
"""
@app.route("/")
def index():
return render_template_string(HTML)
@app.route("/chat", methods=["POST"])
def chat():
user_message = request.json["message"]
response = requests.post("http://localhost:11434/api/generate", json={
"model": "qwen2.5",
"prompt": user_message,
"system": "คุณเป็นผู้เชี่ยวชาญระบบ ERP ตอบเป็นภาษาไทย กระชับ",
"stream": False
})
return jsonify({"reply": response.json()["response"]})
if __name__ == "__main__":
app.run(port=5000)
# รัน
pip install flask requests
python chatbot.py
# เปิด http://localhost:5000
เชื่อมกับ Automation — n8n / Make
Ollama API ใช้ร่วมกับเครื่องมือ Automation ได้ง่ายมาก — เพราะเป็น REST API ปกติ เครื่องมืออย่าง n8n (Self-hosted) หรือ Make (Cloud) สามารถเรียก Ollama API ได้ผ่าน HTTP Request Node:
| Workflow | ขั้นตอน | ประโยชน์ |
|---|---|---|
| สรุปอีเมล | รับอีเมล → ส่งเนื้อหาให้ Ollama สรุป → ส่ง LINE แจ้งเตือน | ผู้บริหารอ่านสรุปแทนอีเมลยาว |
| จัดหมวดเอกสาร | อัปโหลดไฟล์ → Ollama จัดหมวด → บันทึกลง Database | ลดงาน Manual จัดเอกสาร |
| แปลเอกสาร | รับเอกสาร TH → Ollama แปล EN → ส่งกลับผ่าน Webhook | แปลฟรี ไม่ต้องจ่าย Translation API |
| ตรวจจับ Anomaly | ดึงข้อมูลจาก ERP → Ollama วิเคราะห์ → แจ้งเตือนถ้าผิดปกติ | บริหารความเสี่ยง แบบ Proactive |
ข้อควรระวังเรื่อง ความปลอดภัย:
- อย่าเปิด Ollama API สู่ Internet โดยตรง — ค่าเริ่มต้น Ollama ฟัง localhost เท่านั้น (ปลอดภัย) ถ้าต้องเปิดให้เครื่องอื่นเข้าถึง ให้ใช้ Reverse Proxy (nginx/Caddy) + Authentication
- ไม่มี Authentication ในตัว: Ollama API ไม่มี API Key/Token — ถ้าเปิดให้เครื่องอื่นเข้า ต้องเพิ่ม Auth Layer เอง
- Rate Limiting: ถ้าให้หลายคนใช้พร้อมกัน ควรตั้ง Rate Limit เพื่อไม่ให้ Server ล่ม
- รายละเอียดเรื่อง Security อ่านต่อได้ที่ EP.6: Self-Host AI อย่างปลอดภัย
Saeree ERP + Ollama API:
ด้วย Ollama API องค์กรสามารถเชื่อม AI เข้ากับระบบ ERP ได้โดยตรง — ให้ AI สรุปรายงาน วิเคราะห์ ต้นทุนการผลิต หรือช่วยเตรียมข้อมูล งบประมาณ ทั้งหมดนี้ข้อมูลอยู่ในเครือข่ายองค์กร สนใจ ปรึกษาทีมงานฟรี
Ollama Series — อ่านต่อ
Ollama Series — 6 ตอนครบจบ Local AI:
- EP.1: Ollama คืออะไร? — รัน AI บนเครื่องตัวเอง
- EP.2: ติดตั้ง Ollama ทุก OS — macOS / Windows / Linux
- EP.3: ใช้งาน Ollama จริงจัง — เลือก Model, เขียน Prompt และสร้าง Modelfile
- EP.4: Ollama + RAG — สร้าง AI ที่ตอบจากเอกสารองค์กร
- EP.5: Ollama API — เชื่อมต่อ AI กับแอปและระบบขององค์กร (บทความนี้)
- EP.6: Self-Host AI อย่างปลอดภัย — Security & Best Practices
"Ollama API เปลี่ยน AI จากเครื่องมือที่ใช้คนเดียวใน Terminal เป็นบริการที่ทั้งองค์กรเข้าถึงได้ — แค่ HTTP Request เดียว"
- ทีมงาน Saeree ERP




