Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
Điểm AI 47/100

Hướng dẫn

Xây dựng Jev: Mô hình phân loại xác suất chạy cục bộ chỉ với 25 dòng Python

(giờ Việt Nam)

Tóm tắt AI

Hướng dẫn cách sử dụng mô hình Qwen3-0.6B-GGUF để tạo bộ phân loại xác suất siêu nhẹ, cho phép chạy cục bộ hoàn toàn mà không cần gửi dữ liệu ra ngoài.

Chính văn · Bản dịch AI

Jev in 25 lines of Python

Ai ai cũng đang bàn tán về Jev. Jev thế này, Jev thế kia. Mọi người trên Twitter đều phát cuồng vì Jev, cho rằng đó là biên giới tiếp theo của các mô hình ngôn ngữ lớn và mô hình AI. Chúng tôi thì không nghĩ vậy. Vì thế, đây là Jev trong 25 dòng mã Python.

Tải mô hình.

# /// script
# requires-python = ">=3.12"
# dependencies = ["huggingface-hub", "llama-cpp-python", "numpy"]
# ///

import numpy
from llama_cpp import Llama

# Really, you can use any GGUF model from https://huggingface.co/models?library=gguf

model = Llama.from_pretrained(
    repo_id="Qwen/Qwen3-0.6B-GGUF",
    filename="Qwen3-0.6B-Q8_0.gguf",
    n_ctx=512,
    logits_all=True,
    verbose=False,
)

Tải prompt và xác định các lựa chọn của bạn.

labels = ["A", "B", "C"]
choices = ["Legitimate", "Spam", "Phishing"]
email = "Payroll asks for your password on a non-company sign-in page."
options = "\n".join(
    f"{label}. {choice}" for label, choice in zip(labels, choices, strict=True)
)
prompt = f"""<|im_start|>system
Choose one option.<|im_end|>
<|im_start|>user
Email: {email}\n\n{options}<|im_end|>
<|im_start|>assistant
<think>\n\n</think>\n\n"""
model.eval(tokens=model.tokenize(text=prompt.encode(), add_bos=False, special=True))

Chuyển đổi các logit thành xác suất.

logits = model.scores[model.n_tokens - 1]
token_ids = [model.tokenize(text=label.encode(), add_bos=False)[0] for label in labels]
choice_logits = numpy.asarray([logits[token_id] for token_id in token_ids])
logprobs = choice_logits - numpy.logaddexp.reduce(choice_logits)
probabilities = numpy.exp(logprobs)

for name, scores in (
    ("Logits", choice_logits),
    ("Log probabilities", logprobs),
    ("Probabilities", probabilities),
):
    values = numpy.round(scores.astype(float), 3).tolist()
    print(f"{name}:", dict(zip(choices, values, strict=True)))

# Logits: {'Legitimate': 26.254, 'Spam': 27.262, 'Phishing': 29.614}
# Log probabilities: {'Legitimate': -3.482, 'Spam': -2.474, 'Phishing': -0.122}
# Probabilities: {'Legitimate': 0.031, 'Spam': 0.084, 'Phishing': 0.885}

Xong. Đó chính là Jev.

Nhưng không, bạn không hiểu Jev rồi!

Vâng, chúng tôi biết.

Nhưng đúng vậy. Đây chính là Jev.

  • Nó thực hiện phân loại: nhận một prompt kèm các lựa chọn và xuất ra xác suất.
  • Nó rất nhanh.
  • Nó chạy cục bộ.
  • Bạn không gửi dữ liệu của mình đi đâu cả.

Và chúng tôi thích việc không gửi dữ liệu của bạn đi đâu cả. Hãy xem qua NobodyWho.

(lưu ý: đây là một bài blog châm biếm, hãy xem các liên kết này để biết các triển khai mở tốt hơn/hoàn thiện hơn của Jev: OpenJev, openjev-sglang, và OpenJev trên DiffusionGemma.)

Mọi thứ NobodyWho làm đều là mã nguồn mở, vui lòng để lại một sao trên Github để ủng hộ chúng tôi ❤️

Đăng ngày 22 tháng 9 năm 2026 bởi Duarte O.Carmo

Kỹ thuật

PythonQwen3AI cục bộPhân loại dữ liệuLập trình AI

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.

Xây dựng Jev: Mô hình phân loại xác suất chạy cục bộ chỉ với 25 dòng Python | AIHOT.vn