Chào mừng bạn quay trở lại với series “AI Engineer Roadmap“! Sau khi cùng nhau tìm hiểu về Kỹ sư AI là gì, phân biệt AI và ML Engineer, khám phá sự khác biệt giữa AI và AGI, cũng như vai trò và trách nhiệm cốt lõi của một kỹ sư AI hiện đại, chúng ta đã bắt đầu đi sâu vào các công cụ làm việc. Chúng ta đã tìm hiểu lý do nên bắt đầu với các mô hình AI được huấn luyện trước, nhận thức được những hạn chế của chúng, và so sánh các mô hình AI hàng đầu cũng như nắm vững độ dài ngữ cảnh của chúng. Gần đây nhất, chúng ta đã bắt tay vào thực hành với các mô hình trên Hugging Face và OpenAI Chat Completions API.
Bạn đã có trong tay những công cụ mạnh mẽ. Nhưng làm thế nào để sử dụng chúng một cách hiệu quả nhất? Đây chính là lúc chúng ta nói về “nghệ thuật” giao tiếp với AI: Prompt Engineering (Kỹ thuật Viết Prompt).
Đối với một kỹ sư AI, đặc biệt là những người mới bắt đầu làm việc với các mô hình ngôn ngữ lớn (Large Language Models – LLMs), khả năng viết prompt tốt không chỉ là một kỹ năng bổ sung mà là một yếu tố cốt lõi quyết định sự thành công của ứng dụng bạn xây dựng. Một prompt tốt có thể biến mô hình từ chỗ đưa ra câu trả lời chung chung thành một công cụ chuyên biệt, chính xác và đáng tin cậy.
Trong bài viết này, chúng ta sẽ cùng nhau khám phá những nguyên tắc cơ bản và kỹ thuật quan trọng để viết nên những prompt “chất lượng”, giúp bạn khai thác tối đa sức mạnh của các mô hình AI mà chúng ta đã tìm hiểu.
Mục lục
Prompt Engineering là gì? Tại sao nó lại Quan trọng đến vậy?
Về cơ bản, một “prompt” chỉ đơn giản là đoạn văn bản hoặc dữ liệu đầu vào bạn cung cấp cho mô hình AI để nó xử lý và tạo ra đầu ra mong muốn. Prompt Engineering là quá trình thiết kế và tinh chỉnh các prompt này để đạt được kết quả tốt nhất từ mô hình.
Tại sao nó lại quan trọng? Hãy tưởng tượng bạn có một cỗ máy cực kỳ thông minh nhưng nó chỉ hiểu bạn qua hướng dẫn bằng văn bản. Nếu bạn nói mơ hồ, nó sẽ đoán mò và kết quả có thể không như ý. Nếu bạn đưa ra hướng dẫn rõ ràng, chi tiết và có cấu trúc, nó sẽ hiểu và thực hiện đúng yêu cầu của bạn.
Trong bối cảnh phát triển phần mềm sử dụng AI, prompt engineering giúp chúng ta:
- Tăng chất lượng đầu ra: Prompt tốt giúp mô hình hiểu rõ nhiệm vụ, ngữ cảnh và định dạng mong muốn, từ đó đưa ra kết quả chính xác và phù hợp hơn.
- Giảm thiểu lỗi sai và “ảo giác” (hallucinations): Bằng cách cung cấp thông tin rõ ràng và các ràng buộc, chúng ta có thể giảm khả năng mô hình đưa ra thông tin sai lệch hoặc không liên quan. (Nhắc lại bài về những hạn chế của mô hình AI).
- Kiểm soát đầu ra: Bạn có thể định hướng mô hình về giọng điệu, phong cách, độ dài, và cấu trúc của câu trả lời.
- Tăng hiệu quả phát triển: Thay vì phải tinh chỉnh (fine-tune) mô hình cho mọi tác vụ nhỏ, kỹ thuật prompt engineering cho phép bạn “hướng dẫn” mô hình đã được huấn luyện trước để thực hiện nhiều loại công việc khác nhau.
Nói cách khác, prompt engineering chính là cầu nối giúp bạn giao tiếp hiệu quả với “trí tuệ” của mô hình AI, biến nó thành một công cụ linh hoạt và mạnh mẽ trong dự án của bạn.
Nguyên tắc Cốt lõi để Viết Prompt Hiệu quả
Giống như viết code, viết prompt cũng có những nguyên tắc cơ bản. Nắm vững chúng sẽ giúp bạn đi đúng hướng ngay từ đầu.
Rõ ràng và Cụ thể (Clarity and Specificity)
Đây là nguyên tắc quan trọng nhất. Mô hình AI không thể đọc được suy nghĩ của bạn. Bạn cần diễn đạt yêu cầu một cách rõ ràng, không mơ hồ và càng cụ thể càng tốt.
Ví dụ:
- Prompt tệ: “Viết về chó.” (Quá chung chung, mô hình không biết viết về khía cạnh nào của chó).
- Prompt tốt: “Viết một đoạn văn ngắn (khoảng 150 từ) mô tả những phẩm chất khiến chó trở thành người bạn tốt của con người, tập trung vào sự trung thành và tình cảm.”
Hãy sử dụng ngôn ngữ chính xác, tránh các thuật ngữ đa nghĩa trừ khi bạn cung cấp ngữ cảnh đầy đủ. Sử dụng các động từ chỉ mệnh lệnh rõ ràng (ví dụ: “Viết”, “Tóm tắt”, “Liệt kê”, “Trích xuất”, “Phân loại”).
Cung cấp Đầy đủ Ngữ cảnh (Provide Sufficient Context)
Mô hình cần biết “bối cảnh” của yêu cầu để đưa ra phản hồi phù hợp. Ngữ cảnh có thể là vai trò của mô hình, thông tin nền về chủ đề, mục đích sử dụng đầu ra, hoặc thông tin về người dùng.
Ví dụ:
- Prompt tệ: “Giải thích về blockchain.” (Mô hình sẽ đưa ra giải thích chung chung).
- Prompt tốt: “Tôi là sinh viên năm nhất chuyên ngành IT, chưa biết gì về blockchain. Hãy giải thích blockchain là gì một cách dễ hiểu, sử dụng các ví dụ đơn giản liên quan đến tiền điện tử. Giải thích cho tôi biết tại sao nó lại được coi là an toàn.”
Việc cung cấp ngữ cảnh giống như việc bạn giới thiệu cho mô hình về “thế giới” xung quanh yêu cầu của bạn.
Chỉ định Định dạng Đầu ra (Specify Output Format)
Nếu bạn cần đầu ra có cấu trúc nhất định (danh sách gạch đầu dòng, bảng, JSON, code, email, v.v.), hãy nói rõ điều đó trong prompt. Điều này giúp bạn dễ dàng xử lý và tích hợp đầu ra của mô hình vào ứng dụng của mình.
Ví dụ:
- Prompt tệ: “Liệt kê các thủ đô của châu Âu.” (Mô hình có thể viết thành đoạn văn hoặc danh sách ngẫu nhiên).
- Prompt tốt: “Liệt kê 5 thủ đô lớn nhất ở châu Âu theo dân số hiện tại. Trả lời dưới dạng danh sách gạch đầu dòng, mỗi mục ghi ‘Thành phố: [tên thành phố], Quốc gia: [tên quốc gia], Dân số ước tính: [số liệu]’. Chỉ liệt kê 5 thành phố.”
Việc này đặc biệt quan trọng khi làm việc với API như OpenAI Chat Completions API, nơi bạn thường cần đầu ra có cấu trúc để xử lý tự động.
Lặp lại và Tinh chỉnh (Iterate and Refine)
Hiếm khi bạn có thể viết được prompt hoàn hảo ngay từ lần đầu tiên. Prompt engineering là một quá trình lặp đi lặp lại. Hãy bắt đầu với một prompt cơ bản, xem kết quả, và sau đó tinh chỉnh prompt dựa trên những gì bạn quan sát được.
Nếu đầu ra không như ý, hãy tự hỏi:
- Mình đã đủ rõ ràng chưa?
- Mình đã cung cấp đủ ngữ cảnh chưa?
- Mình có cần chỉ định định dạng tốt hơn không?
- Mình có cần thêm ví dụ không?
- Có bất kỳ điều gì mình nên nói mô hình không làm không?
Quá trình này đòi hỏi sự kiên nhẫn và tư duy phân tích, giống như việc debug code vậy.
Các Kỹ thuật Viết Prompt Cơ bản cho Người mới bắt đầu
Ngoài các nguyên tắc cốt lõi, có một số kỹ thuật cụ thể mà bạn có thể áp dụng ngay để cải thiện prompt của mình.
Đóng vai (Role-Playing)
Yêu cầu mô hình đóng một vai trò cụ thể. Điều này giúp định hướng giọng điệu, phong cách và phạm vi kiến thức mà mô hình nên sử dụng trong phản hồi.
Cấu trúc: “Bạn là [Vai trò]. [Yêu cầu].”
Ví dụ:
"Bạn là một chuyên gia dinh dưỡng. Hãy đưa ra lời khuyên về cách ăn uống lành mạnh cho người làm việc văn phòng."
"Hãy tưởng tượng bạn là một nhà sử học thế kỷ 18. Mô tả cuộc sống hàng ngày ở London lúc bấy giờ."
Cung cấp Ví dụ (Few-Shot Learning)
Đây là một kỹ thuật cực kỳ hiệu quả, đặc biệt khi bạn cần mô hình tuân thủ một mẫu cụ thể hoặc thực hiện một tác vụ mà việc mô tả bằng lời khó khăn. Bạn cung cấp cho mô hình một hoặc vài cặp input-output mẫu để nó hiểu rõ hơn yêu cầu.
Cấu trúc:
`Input: [Ví dụ Input 1]`
`Output: [Ví dụ Output 1]`
`Input: [Ví dụ Input 2]`
`Output: [Ví dụ Output 2]`
`…`
`Input: [Input thực tế]`
`Output:`
Ví dụ (trích xuất thông tin):
"Trích xuất tên sản phẩm và giá từ đoạn văn sau. Trả lời dưới dạng JSON. Input: Tôi vừa mua chiếc laptop Xịn Xò Model ABC với giá 25,000,000 VNĐ. Output: {"product_name": "Laptop Xịn Xò Model ABC", "price": "25,000,000", "currency": "VNĐ"} Input: Tôi đang xem xét mua điện thoại Thông Minh GenZ mới, giá 15 triệu đồng. Output: {"product_name": "Điện thoại Thông Minh GenZ", "price": "15,000,000", "currency": "VNĐ"} Input: Bộ bàn phím cơ Gõ Sướng Pro được bán với giá chỉ 3,500,000 VNĐ. Output:
Trong ví dụ này, mô hình sẽ học được mẫu trích xuất và định dạng JSON mong muốn chỉ từ hai ví dụ.
Suy nghĩ Từng bước (Chain-of-Thought)
Đối với các tác vụ đòi hỏi suy luận hoặc giải quyết vấn đề phức tạp, hãy yêu cầu mô hình “suy nghĩ từng bước” hoặc “lập luận từng bước”. Điều này thường dẫn đến kết quả chính xác hơn vì mô hình buộc phải xử lý thông tin theo một trình tự logic.
Cấu trúc: Thêm các cụm từ như “Hãy suy nghĩ từng bước”, “Giải thích cách bạn đưa ra câu trả lời”, “Lập luận chi tiết các bước”.
Ví dụ:
"Nếu hôm nay là thứ Ba, thì ngày mốt của ngày kia là thứ mấy? Hãy suy nghĩ từng bước."
"Cho bài toán: Một cửa hàng bán áo với giá 200,000 VNĐ/áo. Nếu mua 3 áo trở lên được giảm 10% tổng hóa đơn. Nếu mua 5 áo trở lên được giảm 15% tổng hóa đơn. An mua 4 áo, Bình mua 6 áo. Hỏi tổng số tiền cả hai phải trả là bao nhiêu? Hãy giải từng bước chi tiết."
Đặt ràng buộc (Setting Constraints)
Chỉ định những gì mô hình nên hoặc không nên làm.
- Ràng buộc tích cực: “Hãy đảm bảo bao gồm…”, “Phải sử dụng các thuật ngữ…”, “Giới hạn câu trả lời trong X từ/câu.”
- Ràng buộc tiêu cực: “Không sử dụng các thuật ngữ chuyên ngành”, “Tránh nhắc đến…”, “Không vượt quá Y đoạn.”
Ví dụ:
"Viết đoạn giới thiệu về công ty công nghệ mới. Đoạn văn không được dài quá 100 từ và phải sử dụng các từ khóa 'đổi mới', 'bền vững', 'tương lai'."
Ví dụ Thực tế trong Phát triển Phần mềm
Là kỹ sư AI, bạn sẽ sử dụng prompt engineering để xây dựng các tính năng hoặc ứng dụng thực tế. Dưới đây là một vài ví dụ phổ biến:
- Tóm tắt văn bản: Tạo tính năng tóm tắt bài viết, báo cáo.
"Bạn là trợ lý tóm tắt. Hãy tóm tắt bài viết sau thành 3-4 gạch đầu dòng, tập trung vào những ý chính. [Nội dung bài viết] "
"Phân loại đoạn đánh giá sản phẩm sau vào một trong các danh mục: Tích cực, Trung lập, Tiêu cực. Chỉ trả lời tên danh mục. Đánh giá: 'Sản phẩm dùng rất tốt, hiệu năng vượt mong đợi!' Phân loại: Tích cực Đánh giá: 'Giao hàng hơi lâu, nhưng sản phẩm thì tạm được.' Phân loại: Trung lập Đánh giá: 'Thật vọng, sản phẩm không hoạt động đúng quảng cáo.' Phân loại: Tiêu cực Đánh giá: 'Tôi rất hài lòng với chất lượng và dịch vụ.' Phân loại: "
"Bạn là chuyên gia viết email marketing. Hãy viết một email ngắn (không quá 150 từ) giới thiệu sản phẩm mới 'Smart Coffee Mug' cho khách hàng thân thiết. Nội dung email cần hấp dẫn, nêu bật tính năng giữ nhiệt thông minh và khả năng sạc không dây. Kết thúc bằng lời kêu gọi hành động truy cập trang sản phẩm."
"Trích xuất các thông tin sau từ hóa đơn này và trả về dưới dạng JSON: Tên công ty, Số hóa đơn, Ngày, Tổng tiền. [Nội dung hóa đơn] Ví dụ JSON: { "ten_cong_ty": "ABC Company", "so_hoa_don": "INV-12345", "ngay": "2023-10-27", "tong_tien": "1,500,000 VNĐ" } JSON trích xuất: "
Sai lầm Thường gặp khi Viết Prompt (Và cách khắc phục)
Ngay cả những kỹ sư kinh nghiệm cũng có thể mắc sai lầm khi viết prompt. Dưới đây là một số lỗi phổ biến:
- Prompt quá chung chung: “Viết code”. Khắc phục: Hãy nói rõ ngôn ngữ, chức năng, input/output mong muốn, và bất kỳ ràng buộc nào khác.
- Không cung cấp đủ ngữ cảnh: “Hãy viết email”. Khắc phục: Email về chủ đề gì? Gửi cho ai? Mục đích là gì? Giọng điệu ra sao?
- Không chỉ định định dạng: “Liệt kê các lợi ích”. Khắc phục: Liệt kê dưới dạng gạch đầu dòng? Đoạn văn? Bảng?
- Yêu cầu quá nhiều thứ cùng lúc: Một prompt dài dòng, phức tạp với nhiều yêu cầu chồng chéo có thể khiến mô hình bối rối. Khắc phục: Chia nhỏ yêu cầu thành các prompt riêng biệt nếu cần, hoặc sử dụng kỹ thuật chain-of-thought.
- Giả định mô hình biết mọi thứ: Mô hình được huấn luyện trên lượng lớn dữ liệu, nhưng nó không có thông tin thời gian thực hoặc kiến thức chuyên sâu về mọi ngóc ngách. Khắc phục: Cung cấp thông tin cần thiết trong prompt (in-context learning) hoặc sử dụng các kỹ thuật truy xuất thông tin (retrieval-augmented generation – một chủ đề nâng cao hơn).
- Không lặp lại và tinh chỉnh: Chỉ thử một lần và bỏ cuộc khi kết quả không tốt. Khắc phục: Coi prompt engineering là một quá trình lặp. Thử nghiệm, quan sát, điều chỉnh.
Bảng Tổng kết các Kỹ thuật Prompt Cơ bản
Để dễ hình dung và ghi nhớ, đây là bảng tổng kết các kỹ thuật cơ bản:
Kỹ thuật Viết Prompt | Mục đích/Lợi ích | Ví dụ Đơn giản |
---|---|---|
Rõ ràng & Cụ thể | Giúp mô hình hiểu chính xác yêu cầu, giảm mơ hồ. | “Viết bài thơ 4 câu về mùa xuân có vần AABB” thay vì “Viết bài thơ”. |
Cung cấp Ngữ cảnh | Đặt mô hình vào tình huống phù hợp, định hướng phản hồi. | “Tôi đang viết blog về AI cho người mới bắt đầu. Hãy giải thích khái niệm X theo cách dễ hiểu nhất.” |
Chỉ định Định dạng | Đảm bảo đầu ra có cấu trúc mong muốn (JSON, list, table, code, etc.). | “Trả lời dưới dạng JSON”, “Dùng dấu gạch đầu dòng”, “Viết code Python”. |
Đóng vai (Role-Playing) | Định hình giọng điệu, phong cách và phạm vi kiến thức của mô hình. | “Bạn là chuyên gia marketing. Hãy viết lời quảng cáo cho sản phẩm Y.” |
Ví dụ (Few-Shot) | Minh họa mẫu input/output mong muốn cho mô hình học theo. | Cung cấp 1-2 cặp ví dụ Input/Output mong muốn trước khi đưa Input thực tế. |
Suy nghĩ Từng bước (Chain-of-Thought) | Cải thiện khả năng suy luận cho các tác vụ phức tạp bằng cách yêu cầu mô hình hiển thị các bước trung gian. | “Hãy giải thích tại sao A lại dẫn đến B. Suy nghĩ từng bước.” |
Đặt ràng buộc (Constraints) | Kiểm soát nội dung bằng cách chỉ định những gì nên/không nên bao gồm. | “Bao gồm ít nhất 3 lợi ích.”, “Không sử dụng tiếng lóng.” |
Nghệ thuật và Khoa học của Prompting
Prompt engineering vừa là khoa học vừa là nghệ thuật. Khoa học ở chỗ có những nguyên tắc và kỹ thuật đã được chứng minh là hiệu quả. Nghệ thuật ở chỗ đôi khi bạn cần sự sáng tạo, trực giác và kinh nghiệm để tìm ra prompt “đúng” cho một tác vụ cụ thể hoặc để đạt được phong cách phản hồi mong muốn.
Khi bạn làm việc nhiều hơn với các mô hình khác nhau (OpenAI, Claude, Gemini, các mô hình trên Hugging Face…), bạn sẽ nhận ra rằng mỗi mô hình có thể phản ứng hơi khác nhau với cùng một prompt. Khả năng điều chỉnh prompt cho phù hợp với đặc điểm của mô hình là một kỹ năng quan trọng mà bạn sẽ rèn luyện theo thời gian.
Prompt Engineering trong Lộ trình Kỹ sư AI
Vậy kỹ năng viết prompt nằm ở đâu trong lộ trình học Kỹ sư AI của bạn? Nó là một kỹ năng nền tảng, gắn liền với việc sử dụng các mô hình AI được huấn luyện trước thông qua API (như OpenAI Chat Completions API). Khi bạn tiến xa hơn, bạn sẽ học cách tích hợp các prompt này vào luồng làm việc phức tạp hơn, sử dụng các framework như LangChain hoặc LlamaIndex để tạo ra các ứng dụng AI thông minh và linh hoạt hơn.
Việc nắm vững cách viết prompt hiệu quả ngay từ bây giờ sẽ tạo tiền đề vững chắc cho bạn khám phá các chủ đề nâng cao hơn sau này.
Lời kết
Viết prompt hiệu quả là một kỹ năng cần thiết cho bất kỳ ai muốn làm việc với các mô hình AI tạo sinh, đặc biệt là trên con đường trở thành một Kỹ sư AI. Nó không phải là thứ bạn học thuộc lòng, mà là thứ bạn rèn luyện thông qua thực hành.
Hãy bắt đầu ngay bây giờ! Mở các công cụ AI mà bạn đã làm quen (ChatGPT, giao diện playground của OpenAI/Google AI, hoặc sử dụng API trong code) và thử nghiệm. Áp dụng các nguyên tắc và kỹ thuật mà chúng ta đã thảo luận. Đừng ngại thử những cách khác nhau, quan sát kết quả và học hỏi.
Chúc mừng bạn đã hoàn thành một bước quan trọng nữa trên con đường AI Engineer Roadmap. Ở các bài viết tiếp theo, chúng ta sẽ đi sâu hơn vào cách tích hợp các mô hình này vào các ứng dụng thực tế, quản lý prompt phức tạp hơn, và khám phá các khái niệm nâng cao khác.
Hãy tiếp tục theo dõi series để không bỏ lỡ những kiến thức bổ ích tiếp theo nhé!