วิธีใช้ Ollama พร้อม GUI (และตัวเลือกสำรองแบบโฮสต์)
Ollama ทำงานในเทอร์มินัล แต่หน้าเว็บแชทใดๆ ที่รองรับรูปแบบ OpenAI สามารถวางทับบนมันได้ นี่คือวิธีตั้งค่าหนึ่ง และวิธีชี้หน้าต่างเดียวกันไปยังเอนด์พอยต์แบบโฮสต์

ไม่ต้องใช้บัตร หลังสมัคร ให้รับเครดิตทดลองใช้ฟรี $0.50 ด้วยคลิกเดียว (หนึ่งครั้งต่อคน)
รับคีย์ APIประเด็นสำคัญ
- Ollama ไม่มี chat window ในตัว; คุณต้องเพิ่ม front end เช่น Open WebUI
- ส่วนหน้าสื่อสารกับ Ollama หรือกับ URL ที่เข้ากันได้กับ OpenAI ดังนั้น GUI เดียวสามารถรองรับการเชื่อมต่อทั้งสองได้
- สำหรับการเชื่อมต่อแบบโฮสต์ ให้ใช้ URL พื้นฐาน https://api.ollamansfw.com/v1 และรหัสโมเดล uncensored
- สตรีมมิง การเรียกใช้ฟังก์ชัน และโหมด JSON ทำงานทั้งหมดผ่านเอนด์พอยต์แบบโฮสต์ด้วยการตั้งค่าไคลเอนต์มาตรฐาน
ทำไม Ollama จึงต้องการ GUI แยก
หากคุณต้องการรู้ วิธีใช้ ollama กับ gui ข้อเท็จจริงแรกที่ต้องยอมรับคือ Ollama project เป็นเซิร์ฟเวอร์และเครื่องมือ command-line มันดึงโมเดลและตอบคำขอผ่านพอร์ตท้องถิ่น หน้าต่างแชทเป็นงานของผู้อื่น และมีตัวเลือกที่ดีหลายตัว
การแบ่งส่วนนี้มีประโยชน์ เพราะ Ollama เปิด API แบบ OpenAI บนเครื่องของคุณเอง (โดยปกติที่พอร์ต 11434 ภายใต้ /v1) หน้าเว็บใดๆ ที่ให้คุณตั้งค่า Base URL แบบ OpenAI ได้สามารถใช้งานได้ คุณสมบัติเดียวกันนี้หมายความว่าคุณสามารถชี้หน้าเว็บนั้นไปยังที่อื่นได้ในภายหลัง บทความนี้จะแนะนำการตั้งค่าท้องถิ่นก่อน แล้วจึงเพิ่มเอนด์พอยต์แบบโฮสต์เป็นการเชื่อมต่อที่สอง
เลือกส่วนติดต่อผู้ใช้
เครื่องมือสามกลุ่มครอบคลุมผู้ใช้ส่วนใหญ่ ตรวจสอบเอกสารการติดตั้งล่าสุดของโปรเจกต์แต่ละรายการ เนื่องจากขั้นตอนการติดตั้งมีการเปลี่ยนแปลงบ่อย
- Open WebUI. browser interface แบบ self-hosted รองรับ Ollama โดยตรงและยังรองรับการเชื่อมต่อที่เข้ากันได้กับ OpenAI โดยทั่วไปติดตั้งด้วย Docker หรือ pip
- Desktop clients. Native apps เช่น Chatbox หรือ Msty ช่วยให้คุณเพิ่ม Ollama server หรือผู้ให้บริการที่เข้ากันได้กับ OpenAI ผ่านหน้าจอ settings ไม่ต้องรัน server
- Roleplay และ writing front ends. SillyTavern ช่วยให้คุณเพิ่ม hosted endpoint ที่เข้ากันได้กับ OpenAI และมีเครื่องมือคล้ายกันสำหรับ long-form fiction และ companion characters สำหรับผู้ใหญ่
หากคุณไม่ต้องการคอนเทนเนอร์ Docker ไคลเอนต์เดสก์ท็อปเป็นเส้นทางที่สั้นที่สุด หากคุณต้องการอินเทอร์เฟซที่แชร์สำหรับผู้ใช้หลายคนบนเครือข่ายเดียวกัน Open WebUI เป็นตัวเลือกทั่วไป
ขั้นตอนทีละขั้นกับ Open WebUI
- ติดตั้งและเริ่ม Ollama จากนั้นดึงโมเดลด้วยคำสั่ง
ollama pullยืนยันว่ามันตอบสนองจากเทอร์มินัลก่อนดำเนินการต่อ - เริ่ม Open WebUI รูปแบบทั่วไปเมื่อใช้ Dockerคือการเผยแพร่พอร์ตและติดตั้งวอลุ่มสำหรับข้อมูลของมัน
- เปิดหน้าเว็บ สร้างบัญชีท้องถิ่นแรก (ซึ่งจะกลายเป็นผู้ดูแลระบบ) และค้นหาพื้นที่การตั้งค่าการเชื่อมต่อในการตั้งค่าผู้ดูแลระบบ
- ตรวจสอบว่า Ollama URL ชี้ไปที่เครื่องที่ Ollama ทำงาน เมื่อทั้งสองอยู่บน host เดียวกัน นี่มักจะเป็น local address บน port 11434 เมื่อ Open WebUI ทำงานภายใน container
localhostหมายถึง container เอง ซึ่งเป็นเหตุผลที่พบบ่อยที่สุดที่ทำให้ model list ว่างเปล่า - โหลดใหม่ เลือกโมเดลจากเมนูแบบเลื่อนลง และส่งข้อความ
นั่นคือ GUI ในเครื่องที่สมบูรณ์ ข้อมูลทั้งหมดไม่ออกจากคอมพิวเตอร์ของคุณ และความเร็วขึ้นอยู่กับ GPU หรือ CPU ของคุณ
เพิ่มการเชื่อมต่อแบบโฮสต์ที่เข้ากันได้กับ OpenAI
ตอนนี้คือ Fallback สมมติว่าโมเดลที่คุณรันในท้องถิ่นมีขนาดเล็กเกินไปสำหรับฉากยาว หรือ GPU ของคุณกำลังเรนเดอร์อยู่ คุณสามารถเพิ่มการเชื่อมต่อที่สองไปยัง GUI เดียวกัน สำหรับสิ่งนี้คุณต้องการ API key ซึ่งคุณสามารถรับได้จาก หน้าคีย์ API หลังจากเข้าสู่ระบบด้วย Google หรือด้วยอีเมลและรหัสผ่าน มีเครดิตทดลองใช้ $0.50 แบบครั้งเดียวพร้อมคลิกเดียว ไม่ต้องใช้การชำระเงิน และใช้งานได้ 7 วัน
ใน Open WebUI เพิ่มการเชื่อมต่อ OpenAI ด้วยค่าเหล่านี้:
- Base URL:
https://api.ollamansfw.com/v1 - คีย์ API: คีย์ของคุณ ส่งในรูปแบบ
Authorization: Bearer - โมเดล:
uncensored
หากคุณชอบใช้ตัวแปรสภาพแวดล้อมเมื่อเริ่มทำงานคอนเทนเนอร์ Open WebUI ได้บันทึกเอกสารเกี่ยวกับ OPENAI_API_BASE_URL และ OPENAI_API_KEY สำหรับวัตถุประสงค์นี้:
docker run -d -p 3000:8080 \
-e OPENAI_API_BASE_URL=https://api.ollamansfw.com/v1 \
-e OPENAI_API_KEY=YOUR_KEY \
-v open-webui:/app/backend/data \
--name open-webui ghcr.io/open-webui/open-webui:main
# model to pick in the UI: uncensored
หลังจากการโหลดใหม่ uncensored ควรปรากฏในเมนูแบบเลื่อนลงของโมเดลถัดจากโมเดลในเครื่องของคุณ ส่วนติดต่อผู้ใช้จะค้นพบโมเดลนี้ผ่าน GET /v1/models ตอนนี้คุณสามารถสลับระหว่างโมเดลในเครื่องและโมเดลแบบโฮสต์ภายในรายการการสนทนาเดียวกันได้
ทดสอบเอนด์พอยต์ภายนอก GUI ก่อน
เมื่อ GUI แสดงข้อผิดพลาดที่คลุมเครือ วิธีที่เร็วที่สุดในการบอกว่าเป็นปัญหาที่คีย์หรืออินเทอร์เฟซคือการเรียกโดยตรง นี่คือคำขอแบบสตรีมมิงด้วย curl:
curl -N https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"stream": true,
"messages": [{"role": "user", "content": "Write two sentences about a lighthouse keeper."}]
}'
คุณควรเห็นชุดของ data: บรรทัด ที่ลงท้ายด้วยข้อมูลการใช้งาน หากทำงานได้ คีย์และ URL ถูกต้อง และปัญหาอยู่ที่ส่วนหน้า หน้าการแก้ปัญหา ครอบคลุมข้อผิดพลาดทั่วไป เช่น การขาด /v1 หรือช่องว่างท้ายในคีย์
การตั้งค่าไคลเอนต์เดียวกันที่คุณใช้สำหรับโมเดลในเครื่องส่วนใหญ่สามารถนำไปใช้ได้ อุณหภูมิ top_p ลำดับหยุด ตัวแปรสุ่ม และค่าปรับจะถูกส่งผ่านไปยังโมเดล
การใช้เอนด์พอยต์ที่โฮสต์ไว้จากโค้ดของคุณเอง
GUI เป็นไคลเอนต์หนึ่ง สคริปต์และแอปขนาดเล็กเป็นอีกแบบหนึ่ง และเอนด์พอยต์ที่โฮสต์ไว้ทำงานกับ SDK มาตรฐานของ OpenAI ได้ การเรียกใช้ฟังก์ชันและโหมด JSON รองรับ ซึ่งสำคัญหาก GUI หรือเอเจนต์ของคุณใช้ฟีเจอร์เหล่านี้
from openai import OpenAI
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "Reply with a JSON object with keys title and summary."},
{"role": "user", "content": "A short story about a lighthouse keeper."},
],
)
print(resp.choices[0].message.content)
ใน Node รูปแบบเหมือนกัน:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.ollamansfw.com/v1",
apiKey: process.env.API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [{ role: "user", content: "Name three sailing knots." }],
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content ?? "");
}
การเริ่มต้นอย่างรวดเร็ว มีตัวอย่างเพิ่มเติม รวมถึงการเรียกใช้เครื่องมือด้วย tool_choice
ปัญหาที่พบบ่อยและการแก้ไข
ความล้มเหลวส่วนใหญ่ในการตั้งค่า GUI เกิดจากสาเหตุสั้นๆ รายการหนึ่ง
- รายการโมเดลว่างสำหรับการเชื่อมต่อแบบ local ส่วนหน้าไม่สามารถเข้าถึง Ollama ได้ ตรวจสอบ address และจำไว้ว่า GUI แบบ containerized ไม่เห็น host ของคุณเป็น
localhost - 401 จาก hosted endpoint Key หายหรือผิด Paste มันอีกครั้งโดยไม่ใส่ spaces และตรวจสอบให้แน่ใจว่า GUI ส่งมันเป็น bearer token
- 404 ในทุก request Base URL อาจขาด
/v1หรือมีมันสองครั้ง - Replies หยุดหรือ UI ล้ม Front ends บางตัว buffer streamed output ผ่าน proxy ลองทดสอบ curl โดยตรงด้านบน และหากมัน stream ให้ตรวจสอบ proxy settings หน้า GUI ของคุณ
- การตอบกลับแบบโลคอลช้า โมเดลมีขนาดใหญ่เกินไปสำหรับ VRAM ของคุณ จึงต้อง spill ไปยัง memory ของระบบ ให้เลือก quantization ที่เล็กลง หรือเปลี่ยนการสนทนานั้นเป็นการเชื่อมต่อแบบ hosted
จำกฎหนึ่งข้อสำหรับแอปนวนิยายและแอปคู่สนทนาสำหรับผู้ใหญ่: โมเดลที่โฮสต์ไว้จะตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย แต่เนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ไม่ได้รับอนุญาตเด็ดขาด และบริการบังคับใช้นี่เป็นขีดจำกัดที่เข้มงวด
ขีดจำกัดและค่าใช้จ่ายที่ต้องรู้ใน GUI
Front ends สามารถส่งคำขอหลายรายการพร้อมกันได้ เช่น เมื่อสร้างชื่อแชทในพื้นหลังขณะการตอบกลับหลักกำลังสตรีม คีย์แบบเต็มอนุญาตให้ทำคำขอพร้อมกัน 8 รายการ และ 300 รายการต่อนาที คีย์แบบทดลองอนุญาตให้ทำคำขอพร้อมกัน 2 รายการ และ 60 รายการต่อนาที คำขอแบบสตรีมจะถือ slot ไว้จนกว่าสตรีมจะสิ้นสุด หากคุณเกินขีดจำกัด คุณจะได้รับ HTTP 429 พร้อมโค้ด rate_limited หรือ concurrency และเมื่อ overload ชั่วคราวจะได้รับ 429 พร้อม Retry-After: 5 การปิดการสร้างชื่อแชทในพื้นหลังของ GUI เป็นการแก้ไขง่ายๆ สำหรับคีย์แบบทดลอง
ราคาต่อโทเคน: $0.15 ต่อ 1M input และ $0.50 ต่อ 1M output การสนทนา 1 รอบที่มี history ยาว 2,000 โทเคนและการตอบกลับยาว 500 โทเคน มีค่าใช้จ่าย $0.0003 บวก $0.00025 ซึ่งรวมเป็น $0.00055 ส่วนหัวของการตอบกลับมี X-Balance-USD เพื่อให้คุณสามารถติดตามเครดิตที่ลดลงได้ รายละเอียดการเติมเงินอยู่ที่ หน้าราคา เว็บไซต์นี้รับเฉพาะคริปโต: USDT บน TRC20 หรือ USDC บน Base จำนวนเต็มตั้งแต่ $20 ถึง $500
หน้าต่างบริบทมีขนาด 100,000 โทเคน ดังนั้นการสนทนาที่ยาวมากจะมีค่าใช้จ่ายต่อรอบมากขึ้นเมื่อ history ยาวขึ้น เพราะ history ทั้งหมดจะถูกส่งทุกครั้ง GUI ส่วนใหญ่มีการตั้งค่าเพื่อตัดหรือสรุปข้อความเก่า
คู่มือเพิ่มเติม
ถาม-ตอบ
Ollama มีอินเทอร์เฟซกราฟิกเป็นของตัวเองหรือไม่?
Ollama เป็นเซิร์ฟเวอร์และเครื่องมือบรรทัดคำสั่งเป็นหลัก หน้าต่างแชทมาจากโครงการแยกต่างหากเช่น Open WebUI หรือไคลเอนต์เดสก์ท็อปที่คุณเชื่อมต่อเข้ากับมัน
GUI หนึ่งตัวสามารถใช้โมเดลในเครื่องและโมเดลที่โฮสต์ไว้ได้หรือไม่?
ใช่ หากหน้าเว็บรองรับการเชื่อมต่อหลายรายการ เพิ่ม Ollama เป็นหนึ่งรายการและ URL ที่เข้ากันได้กับ OpenAI เป็นอีกรายการหนึ่ง จากนั้นเลือกโมเดลต่อการสนทนา?
ทำไม GUI ถึงไม่แสดงโมเดลสำหรับเอนด์พอยต์แบบโฮสต์
ตรวจสอบว่า base URL ลงท้ายด้วย /v1 คีย์ไม่มีช่องว่างแปลกๆ และ GUI ได้รับอนุญาตให้เรียก GET /v1/models ได้ หากยังล้มเหลว ให้พิมพ์ model ID uncensored ด้วยตนเอง
ฉันควรทำอย่างไรถ้าเจอ HTTP 429?
คุณชนขีดจำกัดอัตราหรือขีดจำกัดความพร้อมใช้งานพร้อมกัน ลดคำขอพร้อมกัน รอจำนวนวินาทีใน Retry-After แล้วลองใหม่