Cách dùng Ollama với GUI (và điểm cuối dự phòng được lưu trữ)
Ollama chạy trong terminal, nhưng bất kỳ giao diện nào hỗ trợ định dạng OpenAI đều có thể đặt lên trên. Dưới đây là cách thiết lập và cách trỏ cùng giao diện đó vào một điểm cuối được lưu trữ.

Không cần thẻ. Sau khi đăng ký, nhận $0,50 tín dụng dùng thử miễn phí bằng một cú nhấp chuột (một lần mỗi người).
Lấy khóa APIĐiểm chính
- Ollama không có cửa sổ trò chuyện tích hợp; bạn thêm một giao diện như Open WebUI.
- Các giao diện giao tiếp với Ollama hoặc bất kỳ URL tương thích OpenAI nào, nên một GUI có thể duy trì cả hai kết nối.
- Với kết nối được lưu trữ, hãy dùng base URL https://api.ollamansfw.com/v1 và model ID uncensored.
- Truyền phát, gọi hàm và chế độ JSON đều hoạt động qua điểm cuối được lưu trữ với các cài đặt máy khách tiêu chuẩn.
Lý do Ollama cần GUI riêng
Nếu bạn muốn biết cách dùng Ollama với GUI, sự thật đầu tiên cần chấp nhận là dự án Ollama là một máy chủ và công cụ dòng lệnh. Nó tải mô hình và xử lý yêu cầu trên cổng cục bộ. Giao diện trò chuyện là việc của người khác, và có một vài công cụ tốt.
Cách tách này rất hữu ích. Vì Ollama cung cấp một API kiểu OpenAI trên máy của bạn (mặc định trên cổng 11434 dưới /v1), bất kỳ giao diện nào cho phép bạn đặt URL cơ sở OpenAI tùy chỉnh đều có thể sử dụng nó. Tính chất tương tự cũng có nghĩa là bạn có thể trỏ giao diện đó sang một nơi khác sau này. Bài viết này sẽ hướng dẫn thiết lập cục bộ trước, sau đó thêm một endpoint được lưu trữ làm kết nối thứ hai.
Chọn giao diện
Ba nhóm công cụ bao phủ phần lớn người dùng. Hãy kiểm tra tài liệu chính thức của từng dự án để biết các bước cài đặt hiện tại, vì chúng thay đổi thường xuyên.
- Open WebUI. Giao diện trình duyệt tự lưu trữ. Nó hỗ trợ trực tiếp Ollama và cũng chấp nhận bất kỳ kết nối tương thích OpenAI nào. Thường được cài đặt bằng Docker hoặc pip.
- Ứng dụng máy tính để bàn. Các ứng dụng gốc như Chatbox hoặc Msty cho phép bạn thêm máy chủ Ollama hoặc nhà cung cấp tương thích OpenAI thông qua màn hình cài đặt. Không cần chạy máy chủ.
- Giao diện đóng vai và viết lách. SillyTavern cho phép bạn thêm một điểm cuối tương thích OpenAI, và các công cụ tương tự cũng tồn tại cho tiểu thuyết dài và nhân vật đồng hành dành cho người lớn.
Nếu bạn không muốn một container Docker, ứng dụng máy khách là đường ngắn nhất. Nếu bạn muốn giao diện chia sẻ cho nhiều người trên một mạng, Open WebUI là lựa chọn thông thường.
Hướng dẫn từng bước với Open WebUI
- Cài đặt và khởi động Ollama, sau đó tải một mô hình bằng lệnh
ollama pull. Xác nhận nó phản hồi từ terminal trước khi tiếp tục. - Khởi động Open WebUI. Với Docker, mẫu thông thường là xuất bản một cổng và gắn một volume cho dữ liệu của nó.
- Mở trang web, tạo tài khoản cục bộ đầu tiên (nó sẽ trở thành quản trị viên) và tìm khu vực kết nối trong cài đặt quản trị.
- Kiểm tra xem URL Ollama trỏ đến máy mà Ollama chạy. Khi cả hai đều trên cùng một máy chủ, đây thường là địa chỉ cục bộ trên cổng 11434. Khi Open WebUI chạy trong container,
localhostcó nghĩa là chính container đó, đây là lý do phổ biến nhất khiến danh sách mô hình vẫn trống. - Tải lại, chọn mô hình từ menu thả xuống và gửi tin nhắn.
Đó là một giao diện người dùng cục bộ hoàn chỉnh. Không có dữ liệu nào rời khỏi máy tính của bạn và tốc độ phụ thuộc vào GPU hoặc CPU của bạn.
Thêm kết nối tương thích OpenAI lưu trữ
Bây giờ là phương án dự phòng. Giả sử mô hình bạn có thể chạy cục bộ quá nhỏ cho một cảnh dài, hoặc GPU của bạn đang bận hiển thị. Bạn có thể thêm một kết nối thứ hai vào cùng một giao diện người dùng. Để làm điều này, bạn cần một khóa API, mà bạn có thể nhận từ trang khóa API sau khi đăng ký bằng Google hoặc bằng email và mật khẩu. Tín dụng dùng thử một lần trị giá $0.50 có sẵn với một cú nhấp chuột, không cần thanh toán và có hiệu lực trong 7 ngày.
Trong Open WebUI, thêm kết nối OpenAI với các giá trị sau:
- URL cơ sở:
https://api.ollamansfw.com/v1 - Khóa API: khóa của bạn, được gửi dưới dạng
Authorization: Bearer - Mô hình:
uncensored
Nếu bạn thích sử dụng biến môi trường khi khởi chạy container, Open WebUI ghi lại OPENAI_API_BASE_URL và OPENAI_API_KEY cho mục đích này:
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
Sau khi tải lại, uncensored sẽ xuất hiện trong danh sách thả xuống của mô hình bên cạnh các mô hình cục bộ của bạn. Giao diện tìm thấy nó thông qua GET /v1/models. Bạn có thể chuyển đổi giữa một mô hình cục bộ và mô hình được lưu trữ trong cùng danh sách trò chuyện.
Kiểm tra endpoint ngoài GUI trước
Khi GUI hiển thị lỗi mơ hồ, cách nhanh nhất để biết vấn đề nằm ở khóa hay giao diện là một lệnh gọi trực tiếp. Dưới đây là một yêu cầu truyền phát với 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."}]
}'
Bạn sẽ thấy một chuỗi các dòng data: kết thúc bằng thông tin sử dụng. Nếu điều đó hoạt động, khóa và URL đều ổn và vấn đề nằm ở giao diện. trang khắc phục sự cố bao gồm các lỗi thường gặp như thiếu /v1 hoặc khoảng trắng thừa trong khóa.
Các cài đặt máy khách tương tự bạn dùng cho mô hình tại chỗ hầu như được chuyển tiếp. Nhiệt độ, top_p, chuỗi dừng, hạt giống và các hình phạt được truyền qua đến mô hình.
Sử dụng endpoint lưu trữ từ mã của bạn
GUI là một máy khách. Kịch bản và ứng dụng nhỏ là một máy khách khác và endpoint lưu trữ hoạt động với các SDK OpenAI tiêu chuẩn. Gọi hàm và chế độ JSON được hỗ trợ, điều này quan trọng nếu GUI hoặc agent của bạn sử dụng chúng.
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)
Trong Node, mẫu tương tự:
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 ?? "");
}
Hướng dẫn bắt đầu có nhiều ví dụ hơn, bao gồm gọi hàm với tool_choice.
Các vấn đề phổ biến và cách khắc phục
Hầu hết các lỗi trong thiết lập GUI đến từ một danh sách ngắn các nguyên nhân.
- Danh sách mô hình trống cho kết nối cục bộ. Phía máy khách không thể truy cập Ollama. Kiểm tra địa chỉ, và nhớ rằng một giao diện người dùng được đóng gói trong container không nhìn thấy máy chủ của bạn là
localhost. - Lỗi 401 từ endpoint được lưu trữ. Khóa bị thiếu hoặc sai. Dán lại khóa mà không có khoảng trắng, và đảm bảo giao diện gửi nó dưới dạng mã thông báo bearer.
- 404 trên mọi yêu cầu. base URL có thể thiếu
/v1, hoặc có nó hai lần. - Câu trả lời dừng lại hoặc giao diện người dùng bị treo. Một số giao diện người dùng đệm đầu ra truyền phát thông qua một proxy. Hãy thử kiểm tra curl trực tiếp ở trên, và nếu nó truyền phát, hãy kiểm tra cài đặt proxy phía trước giao diện người dùng của bạn.
- Câu trả lời cục bộ chậm. Mô hình quá lớn so với VRAM của bạn và đang tràn vào bộ nhớ hệ thống. Hãy chọn một lượng tử hóa nhỏ hơn, hoặc chuyển cuộc trò chuyện đó sang kết nối được lưu trữ.
Hãy nhớ một nguyên tắc cho các ứng dụng truyện và người bạn dành cho người lớn: mô hình được lưu trữ trả lời mà không từ chối nội dung cho việc sử dụng hợp pháp của người lớn, nhưng nội dung tình dục liên quan đến người chưa thành niên không bao giờ được phép, và dịch vụ thực hiện điều đó như một giới hạn cứng.
Các giới hạn và chi phí cần biết trong GUI
Các giao diện người dùng có thể gửi nhiều yêu cầu cùng một lúc, ví dụ khi chúng tạo tiêu đề trò chuyện trong nền trong khi câu trả lời chính đang được truyền phát. Khóa đầy đủ cho phép 8 yêu cầu đồng thời và 300 yêu cầu mỗi phút. Khóa dùng thử cho phép 2 yêu cầu đồng thời và 60 yêu cầu mỗi phút. Một yêu cầu truyền phát giữ vị trí của nó cho đến khi luồng kết thúc. Nếu bạn vượt quá giới hạn, bạn sẽ nhận được HTTP 429 với mã rate_limited hoặc concurrency, và khi quá tải tạm thời là 429 với Retry-After: 5. Tắt việc tạo tiêu đề nền trong giao diện người dùng là một cách sửa đơn giản cho khóa dùng thử.
Chi phí tính theo token: $0,15 cho mỗi 1M token đầu vào và $0,50 cho mỗi 1M token đầu ra. Một lượt trò chuyện với 2.000 token lịch sử và phản hồi 500 token tốn $0,0003 cộng $0,00025, tức là $0,00055. Các tiêu đề phản hồi bao gồm X-Balance-USD, để bạn có thể theo dõi tín dụng của mình giảm. Chi tiết về việc nạp tiền có trên trang giá. Trang web này chỉ chấp nhận tiền mã hóa: USDT trên TRC20 hoặc USDC trên Base, bất kỳ số nguyên nào từ $20 đến $500.
Cửa sổ ngữ cảnh là 100.000 token, vì vậy các cuộc trò chuyện rất dài sẽ tốn nhiều tiền hơn cho mỗi lượt khi lịch sử phát triển, vì toàn bộ lịch sử được gửi mỗi lần. Hầu hết các GUI có cài đặt để cắt ngắn hoặc tóm tắt các tin nhắn cũ.
Hướng dẫn khác
Hỏi đáp
Ollama có giao diện đồ họa riêng không?
Ollama chủ yếu là một công cụ dòng lệnh và máy chủ. Cửa sổ trò chuyện đến từ các dự án riêng biệt như Open WebUI hoặc các ứng dụng máy khách mà bạn kết nối với nó.
Một GUI có thể sử dụng mô hình cục bộ và mô hình được lưu trữ không?
Có, nếu giao diện người dùng đồ họa hỗ trợ nhiều kết nối. Thêm Ollama làm một kết nối và URL tương thích OpenAI làm kết nối kia, sau đó chọn mô hình cho mỗi cuộc trò chuyện.
Tại sao GUI của tôi hiển thị không có mô hình cho endpoint được lưu trữ?
Hãy kiểm tra xem base URL có kết thúc bằng /v1, khóa không có khoảng trắng thừa và GUI có được phép gọi GET /v1/models không. Nếu vẫn không hoạt động, hãy gõ thủ công model ID uncensored.
Tôi phải làm gì nếu gặp HTTP 429?
Bạn đã chạm đến giới hạn tốc độ hoặc giới hạn độ đồng thời. Giảm yêu cầu song song, đợi số giây trong Retry-After và thử lại.