Local LLM - Cai nghiện OpenAI (Chạy Jarvis Offline với Ollama)

AI Hunter

Member
Từ đầu series đến giờ, "bộ não" của Jarvis vẫn đang nằm trên máy chủ của OpenAI ở tận Mỹ.
  • Ưu điểm: Thông minh, không tốn RAM máy mình.
  • Nhược điểm: Tốn tiền, chậm (do độ trễ mạng), mất mạng là "tắt điện", và quan trọng nhất là Dữ liệu riêng tư bị gửi đi xa.

Hôm nay, chúng ta sẽ bưng bộ não đó về đặt ngay trên bàn làm việc của bạn bằng Ollama.

10
Local LLM - Cai nghiện OpenAI (Chạy Jarvis Offline với Ollama).jpg

1. Tại sao lại là Ollama?​


Trước đây chạy LLM offline rất cực (cài Cuda, PyTorch, môi trường venv...).
Với Ollama, bạn chỉ cần tải về, chạy file cài đặt, xong! Nó biến máy bạn thành một Server AI y hệt OpenAI, nhưng chạy Local.

2. Bước 1: Cài đặt và Tải Model​


1. Cài đặt Ollama:
Truy cập https://ollama.com tải bản cài đặt cho Windows, Mac hoặc Linux.

2. Tải Model về máy:
Mở Terminal (CMD/PowerShell) và gõ lệnh để tải "bộ não" về.
Tùy cấu hình máy mà chọn model phù hợp:

  • Máy yếu (RAM 8GB, không GPU rời): Dùng model nhẹ.
    Mã:
    ollama run llama3.2
    (Bản 3B parameters, cực nhẹ, nhanh).
  • Máy tầm trung (RAM 16GB, GPU 4GB-6GB): Dùng model chuẩn.
    Mã:
    ollama run llama3.1
    (Bản 8B, thông minh ngang ngửa GPT-3.5).
  • Máy mạnh (RAM 32GB, GPU 12GB+): Dùng hàng khủng.
    Mã:
    ollama run qwen2.5:14b
    (Thông minh vượt trội, code Python cực đỉnh).

Sau khi chạy lệnh xong và thấy dấu nhắc chat xuất hiện, tức là Server Ollama đang chạy ngầm ở cổng 11434.

3. Bước 2: Chuyển "Hộ khẩu" cho Jarvis (Backend)​


Cái hay của Ollama là nó hỗ trợ chuẩn API giống hệt OpenAI. Chúng ta hầu như không phải sửa code logic, chỉ cần đổi địa chỉ kết nối.

Mở file server.py và sửa đoạn khởi tạo Client:

Python:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from openai import OpenAI # Vẫn dùng thư viện OpenAI nhé!

app = FastAPI()

# --- CẤU HÌNH CŨ (CLOUD) ---
# client = OpenAI(api_key="sk-proj-xxxx")

# --- CẤU HÌNH MỚI (LOCAL - OLLAMA) ---
client = OpenAI(
    base_url="http://localhost:11434/v1", # Trỏ về máy mình
    api_key="ollama" # Key gì cũng được, Ollama không check
)

# Tên model bạn đã pull về (llama3.1, qwen2.5, gemma2...)
LOCAL_MODEL = "llama3.1"

class ChatRequest(BaseModel):
    message: str

@app.post("/chat")
async def chat_endpoint(req: ChatRequest):
    try:
        print(f"🤖 Đang suy nghĩ bằng model {LOCAL_MODEL}...")
       
        # Code gọi API y hệt như cũ
        response = client.chat.completions.create(
            model=LOCAL_MODEL,
            messages=[
                {"role": "system", "content": "Bạn là Jarvis, trợ lý AI hữu ích."},
                {"role": "user", "content": req.message}
            ],
            temperature=0.7
        )
       
        return {"answer": response.choices[0].message.content}

    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Lỗi Brain Local: {str(e)}")

4. Bước 3: Local Vision & Tools (Nâng cao)​


Với Vision (Xử lý ảnh):
Nếu bạn muốn dùng Vision Offline, hãy tải model llava:
Mã:
ollama pull llava
Sau đó trong code, khi nào có ảnh thì đổi model="llava".

Với Tool Calling (Smart Home):
Các model nhỏ (như Llama 3.1 8B) hỗ trợ Function Calling khá ổn, nhưng không "nhạy" bằng GPT-4o.
Lời khuyên: Nếu cần xử lý logic phức tạp (LangGraph, Function Calling), hãy dùng model Qwen 2.5 (model của Alibaba, hiện đang trùm về Coding và Tool use trong mảng Open Source).
Mã:
ollama pull qwen2.5

5. So sánh Thực tế​


Tiêu chíOpenAI (GPT-4o)Local (Llama 3.1)
Chi phíTốn tiền ($$$)Miễn phí (0đ)
Tốc độPhụ thuộc mạng internetPhụ thuộc GPU máy bạn
Riêng tưDữ liệu gửi lên Cloud100% Offline
Thông minh10/107.5/10 (Đủ dùng cho chat)

Tổng kết​


Bây giờ bạn rút dây mạng ra, Jarvis vẫn hoạt động bình thường! (Trừ tính năng Search Google là cần mạng thôi).

Hệ thống của chúng ta giờ đã khá cồng kềnh:
  • Backend: FastAPI.
  • Frontend: Chainlit.
  • Brain: Ollama Service.
  • Database: Qdrant.

Để chạy hết đống này lên, bạn phải mở 4 cái cửa sổ Terminal. Rất phiền phức.
 
Back
Top