Bỏ qua tới nội dung chính
Development

macOS 27 chứa một LLM ẩn bên trong

Phạm Đăng Sa 12 phút đọc
macOS 27 chứa một LLM ẩn bên trong

Nó hoàn toàn miễn phí, chạy trực tiếp trên máy Mac của bạn và xuất hiện trong Terminal kể từ ngày bạn cập nhật.

macOS 27 chứa một LLM ẩn bên trong - 10 điều (tuyệt vời) có thể thực hiện với nó

Hoàn toàn miễn phí, chạy trực tiếp trên máy Mac của bạn và xuất hiện trong Terminal kể từ ngày bạn cập nhật.

Trước hết: chúng ta cùng tìm hiểu về các yếu tố sau:

Đằng sau câu lệnh nhỏ đó là hai mô hình:

  • system - model chạy ngay trên thiết bị của Apple. Nó hoạt động trên máy Mac của bạn, không cần kết nối mạng và hoàn toàn miễn phí. Đây là tùy chọn mặc định, cũng là trọng tâm của phần lớn nội dung trong bài viết này.
  • pcc - cũng dựa trên nguyên lý tương tự nhưng với quy mô lớn hơn, chạy trong các trung tâm dữ liệu Private Cloud Compute của Apple. Mô hình này vừa mạnh mẽ, vừa đảm bảo tính riêng tư tuyệt đối.

Khi chạy lệnh `fm --help`, chúng ta sẽ có phát hiện mới:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 1.

Điều mà macOS 27 mới bổ sung chính là thứ quan trọng đối với các developer: một CLI đơn thuần cho phép có thể kết hợp qua pipe, viết script và tích hợp vào bất kỳ quy trình nào. (Phần sử dụng Shortcuts sẽ được đề cập sau.)

#1. Hỏi bất cứ điều gì, chỉ trong một dòng

Hãy bắt đầu với cách đơn giản nhất. Nhập `fm respond` kèm theo câu hỏi đặt trong dấu ngoặc kép:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 2.

Câu trả lời đó được tạo ngay trên máy Mac của bạn. Không cần mạng, không cần đăng nhập, không có giới hạn sử dụng miễn phí.


Model chạy dưới dạng một dịch vụ hệ thống và chỉ được tải khi cần. Vì vậy, sau lần khởi động đầu tiên (warm-up), các câu trả lời chỉ mất khoảng một đến hai giây.


Mặc định, hệ thống sử dụng model chạy trực tiếp trên thiết bị của Apple - lệnh gọi model này đơn giản là system. Ngoài ra còn có một model lớn hơn (pcc - Private Cloud Compute), nhưng chúng ta sẽ tìm hiểu về nó ở phần #10.

#2. Pipe bất kỳ dữ liệu nào trên Mac vào công cụ

fm đọc dữ liệu từ standard input (stdin), cho phép bạn truyền dữ liệu vào bằng pipe - giống như cách bạn kết nối các lệnh trong shell:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 3.

Tuy nhiên, cần lưu ý:


Cụ thể, phần đầu của kết quả lại viết: “Logo Apple được hiển thị trên màn hình, đây là một foundation model do Apple phát triển…”, rồi mới liệt kê các thao tác Copy, Paste và Undo.


Các phím tắt thì chính xác, nhưng câu mở đầu thì vô nghĩa và được model tự bịa ra.


Đây là một model nhỏ. Hãy tin tưởng nó về cấu trúc và tốc độ, chứ đừng xem mọi thứ nó nói là chân lý.


Điều đó có nghĩa là bạn có thể:

cat notes.txt | fm respond - tóm tắt một tệp.

pbpaste | fm respond - xử lý nội dung trong clipboard.

Truyền một tệp log vào bằng pipe rồi hỏi: “Lỗi nằm ở đâu?”


Đây là một bước xử lý AI riêng, chạy trên máy cá nhân, có thể dễ dàng tích hợp vào bất kỳ script hoặc tác vụ Automator nào.

#3. Trò chuyện sâu hơn và tiếp tục cuộc hội thoại cho lần sau

`fm respond` sẽ kết thúc ngay khi đưa ra câu trả lời, nhưng `fm chat` thì không:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 4.

Điểm hay là mọi phiên trò chuyện đều được lưu lại tại thư mục `~/.fm/sessions/`. Khi bạn dùng lệnh `/exit`, chương trình sẽ hiển thị một lệnh "resume", cho phép bạn quay lại đúng cuộc trò chuyện đó vào ngày hôm sau:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 5.

Sau khi kiểm tra bạn sẽ thấy phiên trò chuyện thực sự nằm trong `~/.fm/sessions/` dưới dạng các JSON transcript. Đó chính là lịch sử trò chuyện của bạn, được lưu trên ổ đĩa của chính bạn và bạn có thể xóa bất cứ lúc nào.

#4. Cho tool xem ảnh snapshot

Model này có khả năng “nhìn” được ảnh. Bạn có thể sử dụng tham số `--image` để trỏ đến một file và đặt câu hỏi về nó:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 6.

Trong hình một ảnh chụp thanh menu, và tool đã mô tả lại hoàn toàn chính xác. Đáng chú ý là nó thực hiện được điều này ngay cả trên một chiếc máy M1 với RAM 8GB.


Tất nhiên, tool không thể giải quyết các bảng tính phức tạp từ một bức ảnh, nhưng với những câu hỏi kiểu “trong ảnh này có gì?” hoặc các tác vụ nhận dạng ký tự (OCR) ở mức cơ bản, thì nó hoàn toàn đáp ứng tốt… mà không cần kết nối internet.


#5. Yêu cầu trả về format JSON chuẩn

Đây cũng là một điểm ”ăn điểm” của công cụ. Bạn có thể ép model đưa ra câu trả lời theo cấu trúc JSON nghiêm ngặt - không lan man, không định dạng markdown, chỉ thuần túy là dữ liệu mà các script của bạn có thể xử lý trực tiếp.


Hơn thế nữa, công cụ này còn có thể tự xây dựng schema cho bạn:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 7.

Đây thực sự là một machine local, free và bảo mật, giúp “chuyển đổi văn bản lộn xộn thành dữ liệu có cấu trúc”.


Bạn có thể trích xuất thông tin liên hệ từ email, lấy các mục chi tiết từ biên lai, gắn tag cho một thư mục chứa các ghi chú, và luôn nhận lại kết quả dưới dạng JSON. Nó thậm chí còn hỗ trợ cả các nested objects và array nếu bạn cần. Đây chính là tính năng mà bạn có thể dùng làm nền tảng để xây dựng một quy trình làm việc thực tế.

#6. Auto-tag và phân loại text

Có một chế độ tích hợp được thiết lập chuyên biệt cho tác vụ này. Khi sử dụng tùy chọn `--use-case content-tagging`, hệ thống sẽ trả về các từ khóa thay vì những đoạn văn bản thông thường.

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 8.

Bạn có thể feed cho công cụ các chú thích ảnh, bookmark hoặc phiếu yêu cầu hỗ trợ (support ticket) - và nhận lại các tag để phục vụ việc lưu trữ hoặc tìm kiếm. Đây chính là kiểu công cụ hỗ trợ tuy đơn giản, nhàm chán nhưng lại vô cùng hữu ích - loại dịch vụ mà thông thường bạn sẽ phải trả phí để sử dụng thông qua các API chuyên dụng.

#7. Đếm số token của bạn - và lưu ý giới hạn 4.096 token

Model chạy trên thiết bị có bộ nhớ hạn chế: tổng cộng chỉ 4.096 token cho tất cả các thành phần - bao gồm các hướng dẫn, prompt và phản hồi từ model. Con số này tương đương với khoảng 3.000 từ. Nếu vượt quá giới hạn đó, model sẽ dừng hoạt động.


Vì vậy, bạn nên sử dụng công cụ đo số lượng token trước khi gửi yêu cầu. Vậy điều gì sẽ xảy ra nếu bạn vượt quá con số 4.096? Thực hiện 1 thử nghiệm và đây là kết quả:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 9.

Tool vẫn ghi nhớ lịch sử nhưng sẽ dừng hoạt động ngay tại đó. Trong phạm vi context đó, nó ghi nhớ mọi điều bạn đã cung cấp - nếu vượt quá giới hạn này, bạn buộc phải bắt đầu một phiên làm việc mới.


Vì vậy, hãy cân nhắc độ dài dữ liệu đầu vào trước khi gửi. Đây là lý do tại sao model này cực kỳ hiệu quả với các yêu cầu kiểu như “tóm tắt đoạn văn này”, nhưng lại hoàn toàn vô dụng khi bạn muốn nó “đọc cả cuốn tiểu thuyết”. (Trong khi đó, pcc sở hữu phạm vị ngữ cảnh rộng rãi hơn nhiều - khoảng 32.000 token - dành cho những trường hợp bạn thực sự cần đến dung lượng lớn hơn).

#8. Thiết lập tính cách hoặc giúp kết quả nhất quán hơn

Một số tùy chọn cấu hình có thể cần biết:

  • --instructions 'You are a blunt code reviewer' - thiết lập system prompt để định hướng giọng điệu cho toàn bộ phiên làm việc.
  • --greedy - giúp câu trả lời có tính xác định cao hơn (deterministic), tức cùng prompt sẽ cho kết quả gần giống nhau hơn. Hữu ích khi viết script. Khi tôi yêu cầu đặt tên cho một hòn đá làm thú cưng, kết quả luôn ổn định là “Rocky Buddy”.
  • --set-default-model - lưu lựa chọn model mặc định: system hoặc model chạy trên cloud.
  • --guardrails permissive-content-transformations - nới lỏng bộ lọc an toàn cho các tác vụ text-transformation (ví dụ edit truyện fiction) khi thiết lập mặc định quá khắt khe.
  • --save-transcript name / --load-transcript file - lưu lại một cuộc hội thoại và dùng nó làm ngữ cảnh khởi đầu cho phiên sau.

Không tùy chọn nào trong số này tự nó là thiết yếu. Nhưng kết hợp --instructions với --greedy sẽ giúp fm đủ đáng tin cậy để tích hợp vào các script thực tế.

#9. Biến Mac thành một “ChatGPT server” riêng tư

Đây là tính năng tiềm năng nhất. Lệnh fm serve khởi chạy một web server cục bộ tương thích với OpenAI API, sử dụng cùng định dạng API như ChatGPT:

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 10.

Port mặc định là 1976 - năm Apple được thành lập.


Nhờ đó, bất kỳ công cụ nào hỗ trợ OpenAI API, như Python script, tiện ích mở rộng VS Code hay ứng dụng chat, đều có thể kết nối đến Mac và sử dụng model cục bộ mà không cần API key hay trả phí API.

macOS 27 chứa một LLM ẩn bên trong  - Ảnh 11.

Kết quả được tạo trực tiếp trên máy. Chỉ với một lệnh, Mac trở thành một endpoint tương thích OpenAI, hoạt động ngoại tuyến. Tên model cần truyền là system hoặc pcc. Ngoài ra, tùy chọn --socket cho phép kết nối qua Unix socket thay vì cổng mạng, thuận tiện hơn khi dùng Python cục bộ.

Mở rộng hơn: một chiếc Mac mạnh phục vụ nhiều thành viên hơn

Khi làm thử nghiệm có thể thấy server chuyển từ 127.0.0.1:1976 (chỉ máy cục bộ truy cập được) sang *:1976 (các thiết bị có thể kết nối đến Mac qua mạng).


Một điểm đáng chú ý khác là model chạy trên thiết bị có thể lớn hơn và cho kết quả tốt hơn trên máy Mac mạnh hơn:


M1/M2: chạy model nhỏ khoảng 3 tỷ tham số (~3B).


Mac M3/M4 có RAM từ 12 GB: theo tác giả, có thể chạy model lớn hơn khoảng 20 tỷ tham số (~20B), chẳng hạn Mac mini M4 bản cơ bản hoặc Mac Studio.


Cùng một lệnh nhưng có thể cho câu trả lời tốt hơn rõ rệt. Vì vậy, một chiếc Mac đủ mạnh kết nối với router có thể cung cấp AI cho điện thoại và laptop trong nhà, trong khi các thiết bị còn lại chỉ đóng vai trò thin client.


iPhone không chạy trực tiếp được fm vì iOS không có Terminal như macOS. Tuy nhiên, bạn có thể tạo Shortcut gửi yêu cầu POST đến địa chỉ Mac, không cần cài thêm ứng dụng. Hoặc sử dụng ứng dụng chat tương thích OpenAI API và cấu hình địa chỉ server của Mac.


SHORTCUTS PROMPT

1. Ask for Input → Input Type: Text, Prompt: "Ask fm". (This is what you type each time.)

2. Get Contents of URL

• URL: http://192.168.1.30:1976/v1/chat/completions

• Method: POST

• Headers: add Content-Type = application/json

• Request Body: JSON

• model (Text): system

• stream (Boolean): False

• messages (Array): Dictionary

• role (Text): user

• context (Text): insert the Provided Input variable from step 1

3. Get Dictionary Value -> Get Value for "choices" in Contents of URL

4. Get Item from List -> First Item

5. Get Dictionary Value -> Get Value for "message"

6. Get Dictionary Value -> Get Value for "content"

7. Show Result (or Speak Text / Quick Look) with that final value


Lưu ý bảo mật: fm serve không có mật khẩu. Bất kỳ ai truy cập được cổng server đều có thể sử dụng nó. Vì vậy, chỉ nên giới hạn trong mạng Wi-Fi gia đình, không nên mở trực tiếp ra Internet công cộng.


Nếu cần truy cập từ bên ngoài, hãy dùng mạng riêng dạng mesh thay vì công khai port mạng. Hãy xem server này như một cánh cửa vào mạng của bạn và bảo vệ nó tương ứng.


#10. Sử dụng model mạnh hơn: Private Cloud Compute

Khi model nhỏ không đáp ứng đủ nhu cầu, fm cho phép chuyển sang model chạy trên máy chủ của Apple bằng tùy chọn --model pcc, gửi prompt đến Private Cloud Compute (PCC).


PCC là giải pháp của Apple dành cho những người muốn sử dụng model lớn hơn nhưng không muốn giao dữ liệu cá nhân cho các công ty chatbot.


PCC hoạt động theo cơ chế stateless: yêu cầu được xử lý để tạo câu trả lời rồi không được lưu trữ, thậm chí Apple cũng không thể xem nội dung đó. Apple công khai mã nguồn phía máy chủ và các bằng chứng mật mã để các nhà nghiên cứu độc lập có thể kiểm chứng những cam kết này.


Với người không muốn đưa văn bản nhạy cảm vào ChatGPT, PCC cung cấp model lớn hơn với cơ chế bảo vệ quyền riêng tư có thể kiểm chứng, không cần cài đặt hay tạo tài khoản riêng. Chỉ cần thêm một tùy chọn --flag.


PCC có hai ưu điểm chính so với model chạy trên thiết bị:


Không phụ thuộc vào cấu hình Mac: Vì chạy trên cloud, mọi máy Mac đều sử dụng cùng model PCC, bất kể chip hay dung lượng RAM.


Context window lớn hơn: PCC hỗ trợ tối đa 32.768 token, gấp 8 lần giới hạn 4.096 token của model trên thiết bị. Nhờ đó, PCC có thể xử lý những đầu vào quá dài đối với model nhỏ. Trong fm chat, bạn có thể chuyển model bằng lệnh /model pcc; dòng trạng thái sẽ hiển thị giới hạn 32.768 token thay vì 4.096.


Tuy nhiên, PCC không có dung lượng sử dụng vô hạn. Mỗi người dùng có hạn mức hằng ngày gắn với Apple Account, có thể kiểm tra bằng lệnh fm quota-usage.


Apple đề xuất iCloud+ như một cách để tăng hạn mức này. Vì vậy, PCC không đồng nghĩa với việc được sử dụng AI tiên tiến không giới hạn, miễn phí mãi mãi - nếu nhu cầu sử dụng cao, bạn có thể phải trả thêm chi phí.

Chia sẻ:
Liên hệ