TH ▾
รับคีย์ API

วิธีใช้ 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

  1. ติดตั้งและเริ่ม Ollama จากนั้นดึงโมเดลด้วยคำสั่ง ollama pull ยืนยันว่ามันตอบสนองจากเทอร์มินัลก่อนดำเนินการต่อ
  2. เริ่ม Open WebUI รูปแบบทั่วไปเมื่อใช้ Dockerคือการเผยแพร่พอร์ตและติดตั้งวอลุ่มสำหรับข้อมูลของมัน
  3. เปิดหน้าเว็บ สร้างบัญชีท้องถิ่นแรก (ซึ่งจะกลายเป็นผู้ดูแลระบบ) และค้นหาพื้นที่การตั้งค่าการเชื่อมต่อในการตั้งค่าผู้ดูแลระบบ
  4. ตรวจสอบว่า Ollama URL ชี้ไปที่เครื่องที่ Ollama ทำงาน เมื่อทั้งสองอยู่บน host เดียวกัน นี่มักจะเป็น local address บน port 11434 เมื่อ Open WebUI ทำงานภายใน container localhost หมายถึง container เอง ซึ่งเป็นเหตุผลที่พบบ่อยที่สุดที่ทำให้ model list ว่างเปล่า
  5. โหลดใหม่ เลือกโมเดลจากเมนูแบบเลื่อนลง และส่งข้อความ

นั่นคือ 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 แล้วลองใหม่