Kỹ sư ML · Bước 7/8 · 8 phút
Làm việc với LLM
Bạn xây được một tính năng nhỏ trên API của mô hình ngôn ngữ, neo nó vào tài liệu bằng truy xuất, và đo được nó có hoạt động hay không.
Dùng model có sẵn trước khi tự huấn luyện
Với nhiều việc liên quan đến văn bản, như tóm tắt, phân loại ticket hỗ trợ hay trích xuất thông tin từ tài liệu, bạn không còn phải tự huấn luyện model. Bạn gọi model của OpenAI, Anthropic, Google, hoặc một model open-weight (công khai trọng số) như Llama, Qwen hay Mistral, và viết một prompt rõ ràng.
Công việc của bạn thay đổi. Thay vì tạo feature, bạn thiết kế prompt, chọn kích cỡ model phù hợp, định dạng đầu ra (ví dụ JSON) và xử lý khi nó trả lời hỏng. Thói quen kỹ thuật vẫn vậy: quản lý phiên bản, kiểm thử, giám sát.
RAG: đưa dữ kiện của bạn cho model
Model chỉ biết những gì có trong dữ liệu huấn luyện. Để trả lời dựa trên tài liệu của công ty, bạn dùng RAG (retrieval-augmented generation, sinh văn bản có truy xuất). Bạn chia tài liệu thành các đoạn nhỏ, biến mỗi đoạn thành một embedding (dãy số thể hiện ý nghĩa), và lưu chúng vào một vector database.
Khi có câu hỏi, bạn tìm các đoạn giống nhất và dán vào prompt. Model trả lời dựa trên các nguồn đó và có thể trích dẫn chúng. Phần lớn lỗi của RAG là lỗi truy xuất: đoạn đúng chưa bao giờ được tìm thấy.
Eval: bài kiểm tra cho đầu ra mơ hồ
Bạn không thể kiểm tra đầu ra của LLM bằng một phép so sánh bằng nhau. Vì vậy bạn xây một bộ eval (bộ đánh giá): 50 đến 200 câu hỏi thật kèm câu trả lời tốt hoặc tiêu chí rõ ràng. Mỗi lần đổi prompt hay đổi model, bạn chạy lại bộ này và so sánh.
Có những kiểm tra viết bằng code, như 'có phải JSON hợp lệ không?' hay 'có trích nguồn không?'. Số khác dùng một model thứ hai làm giám khảo, chấm theo một bảng tiêu chí viết sẵn. Hãy đối chiếu giám khảo đó với chính đánh giá của bạn trên một mẫu nhỏ trước khi tin nó.
Chi phí, tốc độ và giới hạn
Bạn trả tiền theo token, cả đầu vào lẫn đầu ra. Prompt dài và model lớn cộng dồn rất nhanh khi chạy ở quy mô lớn. Hãy thử model nhỏ nhất vượt qua được bộ eval, cache các prompt lặp lại, và giới hạn độ dài đầu ra. Đo cả độ trễ: người dùng nhận ra ngay câu trả lời chậm.
Hãy coi đầu ra của model là không đáng tin. Nó có thể sai, hoặc bị điều khiển bởi đoạn chữ giấu trong tài liệu, gọi là prompt injection. Đừng bao giờ cho nó tự thực hiện hành động hay truy cập dữ liệu riêng tư mà không có bước kiểm soát.
Thử ngay
Xây một bộ eval tí hon
- 1.Chọn một việc, ví dụ phân loại tin nhắn khách hàng thành 'thanh toán', 'lỗi' hoặc 'khác'.
- 2.Viết mười tin nhắn mẫu kèm nhãn đúng cho từng tin.
- 3.Chạy prompt bên dưới trên hai chatbot khác nhau và đếm mỗi bên đúng bao nhiêu. Con số đó là bộ eval đầu tiên của bạn.
Phân loại mỗi tin nhắn khách hàng vào đúng một nhóm: thanh toán, lỗi, hoặc khác. Chỉ trả lời bằng một danh sách JSON dạng [{"id": 1, "label": "thanh toán"}]. Các tin nhắn: [dán mười tin nhắn đã đánh số]