Prompt Engineering là gì? Vì sao Prompt Engineering lại quan trọng trong thời đại AI? Cùng tìm hiểu về Prompt Engineering và nghề Prompt Engineer nhé!
Cùng với sự phát triển của AI, cụ thể là các mô hình ngôn ngữ lớn như GPT-3 và GPT-4, thuật ngữ Prompt Engineering và vị trí Prompt Engineer ra đời. Vậy Prompt Engineering là gì? Làm thế nào để trở thành Prompt Engineer?
Bài viết này sẽ giúp bạn trả lời các câu hỏi trên thông qua việc tìm hiểu khái niệm của Prompt Engineering và Prompt Engineer, phân tích vai trò của Prompt Engineering trong hệ sinh thái AI và những ví dụ thực tiễn nhất khi ứng dụng.
Disclaimer: tất cả ví dụ trong bài đều tập trung vào phân tích dữ liệu văn bản vì ChatGPT chỉ có thể tạo phản hồi bằng văn bản.
1. Prompt Engineering là gì?
1.1. Prompt Engineering là gì?
Prompt Engineering (còn được gọi là prompt design) là quá trình thiết kế đầu vào (thường được gọi là prompt) để mô hình generative AI (AI phái sinh) có thể hiểu và diễn giải, nhằm tạo ra kết quả mong muốn.
Generative AI (AI phái sinh) là một loại AI có khả năng tự tạo ra văn bản, hình ảnh, âm thanh hoặc dữ liệu tổng hợp sử dụng các mô hình tổng quát thay vì phân tích các dữ liệu hiện có.
1.2. Prompt là gì?
Prompt là văn bản ngôn ngữ tự nhiên (natural language) mô tả nhiệm vụ mà AI sẽ thực thi. Ngôn ngữ tự nhiên hiểu đơn giản là ngôn ngữ mà con người chúng ta sử dụng để giao tiếp hàng ngày.
Prompt có thể là một từ, một cụm từ hay cả một đoạn văn bản.
Prompt đóng vai trò là input (đầu vào) hoặc query (truy vấn) mà người dùng cung cấp để gợi ra các phản hồi cụ thể từ một mô hình AI.
Tôi có ví dụ về một prompt như sau:
1.3. Có bao nhiêu loại promt? Phân loại prompt
Prompt có thể phân loại dựa trên cấu trúc, mục đích và cấp độ hướng dẫn mà chúng cung cấp cho mô hình AI. Việc hiểu các loại prompt khác nhau có thể giúp chúng ta tạo ra các prompt hiệu quả.
Có 3 loại prompt phổ biến là explicit prompt (prompt rõ ràng), implicit prompt (prompt ẩn ý) và creative prompt (prompt sáng tạo).
1.3.1. Explicit prompt - Prompt rõ ràng
Explicit prompt (Prompt rõ ràng) cung cấp hướng dẫn cụ thể và trực tiếp tới mô hình AI, chỉ định rõ định dạng hoặc thông tin yêu cầu đối với đầu ra. Các prompt này thường bao gồm từ khoá, cụm từ hướng dẫn mô hình hướng tới một phản hồi cụ thể.
Ví dụ:
Những chỉ dẫn cụ thể này giúp các mô hình AI diễn giải hiệu quả và tạo ra kết quả chính xác và có liên quan. Tuy nhiên, chúng gặp phải giới hạn vì thiếu tính sáng tạo.
1.3.2. Implicit prompt - Prompt ẩn ý
Implicit prompt (Prompt ẩn ý) cung cấp hướng dẫn ít cụ thể, cho phép mô hình AI tự do diễn giải kết quả mong muốn. Những prompt này dựa vào sự hiểu biết của mô hình về bối cảnh, mối quan hệ hoặc quy ước để tạo ra phản hồi thích hợp.
Ví dụ:
Prompt ẩn ý khuyến khích mô hình AI suy nghĩ sáng tạo và tạo ra đầu ra đa dạng. Tuy nhiên, chúng cũng có thể làm tăng nguy cơ tạo ra những phản hồi mơ hồ hoặc lạc đề.
1.3.3. Creative prompt - Prompt sáng tạo
Creative prompt (Prompt sáng tạo) được thiết kế để khuyến khích mô hình AI tạo ra các kết quả mới lạ, giàu trí tưởng tượng hoặc độc đáo. Những prompt này thường bao gồm các câu hỏi mở, ngữ cảnh hoặc thử thách đòi hỏi mô hình phải nghĩ vượt ra lượng dữ liệu đào tạo của nó và khám phá những ý tưởng hoặc quan điểm mới.
Ví dụ:
Prompt sáng tạo có thể giúp chúng ta khi thác toàn bộ tiềm năng của AI, cho phép chúng ta tạo ra nội dung độc lập và hấp dẫn. Tuy nhiên, chúng cũng đòi hỏi tinh chỉnh nhiều hơn để đạt được kết quả mong muốn.
2. Vai trò của Prompt Engineering trong mô hình AI
Prompt Engineering đóng một vai trò quan trọng cho phép các mô hình AI tạo ra đầu ra mong muốn.
Một prompt được thiết kể tốt có thể cải thiện đáng kể chất lượng của phản hồi trong các mô hình AI, trong khi prompt được thiết kế chưa tốt có thể dẫn tới phản hồi không đạt yêu cầu, không liên quan hoặc sai sót.
Chúng ta cùng xét ví dụ sau về 2 prompt và phản hồi tương ứng của ChatGPT.
Prompt 1
Prompt 2
- Haiku là một thể loại thơ ngắn có nguồn gốc từ Nhật Bản.
Chúng ta dễ dàng thấy rằng prompt 1 viết chung chung dẫn tới một phản hồi dài dòng trong khi prompt 2 nhận về phản hồi ngắn gọn, cụ thể và có liên quan tới nội dung cần tìm hơn bằng cách xác định rõ thể loại thơ và chủ đề.
Ví dụ này chứng tỏ tầm quan trọng của tính rõ ràng và tính cụ thể của prompt trong prompt engineering.
3. Prompt Engineering hoạt động như thế nào?
Prompt Engineering bao gồm 5 bước chính như sau:
- Bước 1: Định nghĩa nhiệm vụ
Bước đầu tiên là xác định nhiệm vụ mà mô hình AI sẽ thực hiện. Đây có thể là bất cứ điều gì từ dịch ngôn ngữ đến nhận dạng hình ảnh.
- Bước 2: Tạo dataset
Khi nhiệm vụ được xác định, một tập dữ liệu sẽ được tạo bao gồm các ví dụ về đầu vào và đầu ra cho nhiệm vụ đó. Bộ dữ liệu này được sử dụng để đào tạo mô hình AI.
- Bước 3: Thiết kế prompt
Bước tiếp theo là thiết kế prompt dựa trên nhiệm vụ và tập dataset. Điều này liên quan đến việc chọn đúng từ và cấu trúc cho văn bản đầu vào. Mục đích là làm cho prompt rõ ràng và cụ thể nhất có thể để mô hình biết chính xác những gì đang được yêu cầu.
Ví dụ, thay vì hỏi chung chung "giải thích cho tôi về ChatGPT", bạn nên hỏi "ChatGPT là gì? ChatGPT hoạt động như thế nào? ChatGPT ứng dụng làm gì? ChatGPT có ưu/nhược điểm gì?" Prompt càng cụ thể thì mô hình càng dự đoán tốt hơn về phản hồi được mong được.
- Bước 4: Tinh chỉnh mô hình (Fine-tuning the model)
Fine-tuning là quá trình tiếp tục đào tạo một mô hình đã được đào tạo trước (pre-trained) trên một tập dữ liệu mới hoặc một tác vụ mới.
Ví dụ, một mô hình được đào tạo trước để nhận dạng hình ảnh có thể được "fine-tuned" trên một tập dữ liệu cụ thể, như nhận dạng các loại cây cỏ.
Quá trình này thường giúp cải thiện hiệu suất của mô hình trên tác vụ mới mà không cần phải đào tạo lại toàn bộ mô hình từ đầu.
- Bước 5: Kiểm thử và cải thiện (Testing and refining)
Cuối cùng, mô hình được kiểm tra để đảm bảo rằng nó tạo ra kết quả đầu ra chính xác và phù hợp. Prompt và model có thể được tinh chỉnh lại khi cần thiết cho đến khi tạo ra kết quả mong muốn.
4. Prompt Engineering Best Practices - Các Ứng Dụng Thực Tế Của Prompt Engineering
Đây là 5 nguyên tắc của prompting trích trong cuốn Prompt Engineering for Generative AI của hai tác giả James Phonenix và Mike Taylor:
- Đưa ra định hướng: Mô tả những gì bạn đang tưởng tượng để có được kết quả phù hợp với tầm nhìn của bạn.
- Xác định định dạng: Xác định phản hồi bạn muốn và giảm thiểu thời gian sửa lỗi định dạng.
- Cung cấp ví dụ: Thêm ví dụ vào trong prompt để cải thiện độ tin cậy của phản hồi.
- Đánh giá chất lượng: Xác định lỗi và đánh giá phản hồi, kiểm tra điều gì thúc đẩy hiệu suất.
- Phân chia lao động: Chia nhiệm vụ phức tạp thành nhiều prompt, kết hợp chúng lại với nhau để đạt được các mục tiêu ban đầu.
Theo các tác giả, 5 nguyên tắc trên không phụ thuộc vào mô hình cho nên chúng sẽ có tác dụng cải thiện prompt của bạn cho dù bạn đang sử dụng bất kỳ mô hình AI phái sinh nào.
4.1. Đưa ra định hướng
Khi làm việc với các chatbot AI ứng dụng mô hình ngôn ngữ lớn như ChatGPT, chúng ta cần đưa ra định hướng cụ thể và rõ ràng để mô hình tập trung vào một khía cạnh cụ thể.
Để hiểu hơn về quy tắc này, chúng ta cùng nhau xem xét 2 ví dụ sau.
Tôi muốn ChatGPT cung cấp thông tin về recursion.
Prompt 1
Ở prompt 1, tôi hỏi một câu chung chung rằng "Giải thích khái niệm recursion trong khoa học máy tính" nhưng không nêu rõ tôi muốn biết phần nào về recursion nên tôi nhận được phản hồi về khái niệm, cơ chế hoạt động và ví dụ cơ bản bằng Python.
Lúc này, tôi nhận ra phản hồi này là chưa đủ vì tôi cần thêm thông tin về cả ứng dụng thực tế cũng như ưu/nhược điểm của recursion. Cộng thêm, tôi muốn ví dụ bằng Go chứ không phải bằng Python. Thế là tôi cần thêm tối thiểu 1 prompt nữa để nhận về toàn bộ phản hồi mong muốn.
Prompt 2
Ở prompt 2, tôi thêm vào những yêu cầu cụ thể hơn như tôi muốn biết về khái niệm, cơ chế hoạt động, ưu/nhược điểm, ứng dụng thực tế và nêu ví dụ bằng Go. Và thế là tôi tiết kiệm được công sức vì nhận luôn được phản hồi mong muốn chỉ dùng 1 prompt.
Prompt 3
As a Senior SE, rewrite these sentences to use in a resume
- Implemented new features and fixed bugs.
- Designed APIs.
Ở prompt 3, bằng cách cấp cho ChatGPT một vai trò, tôi tự động thêm ngữ cảnh "ChatGPT vào vai một Senior SE" vào bất kỳ prompt nào được tạo trong tương lai.
4.2. Xác định định dạng
Khi làm việc với các mô hình AI, chúng ta nên cung cấp một chỉ dẫn rõ ràng về cấu trúc của đầu ra mong muốn như tổ chức nội dung, biểu diễn dữ liệu, độ dài của phản hồi, loại ngôn ngữ hoặc bất kỳ khía cạnh nào khác ảnh hưởng tới việc trình bày thông tin.
Điều này đảm bảo các phản hồi duy trì sự nhất quán, tăng khả năng đọc hiểu và đáp ứng các yêu cầu cụ thể khác. Trong nhiều trường hợp, phản hồi của mô hình AI sẽ được xử lý thêm bới một hệ thống phân tích dữ liệu khác yêu cầu đầu vào có định dạng cụ thể như JSON, YAML, ...
Sau một thời gian sử dụng, tôi nhận ra chatGPT có thể tạo ra phản hồi ở các định dạng khác nhau cho cùng một câu hỏi. Ví dụ, một danh sách đánh số thay vì gạch đầu dòng hoặc danh sách được liệt kê cách nhau bởi dấu phẩy.
Ở ví dụ dưới, với cùng nội dung là nhược điểm của recursion, tôi nhận được 2 phản hồi với 2 định dạng khác nhau.
Quay trởi lại ví dụ trước, nếu tôi muốn tạo gạch đầu dòng nhưng chatGPT lại cho phản hồi dưới dạng danh sách đánh số thì tôi sẽ có 2 hướng xử lý tiếp.
- Tự sửa lại
- Nhờ chatGPT sửa hộ bằng việc nhập vào tiếp 1 prompt mới "Định dạng lại mục X sử dụng gạch đầu dòng thay vì danh sách đánh số"
Thay vì sử dụng nhiều prompt với mục đích sửa lại định dạng thì tôi chỉ cần thêm vào prompt ban đầu yêu cầu về định dạng.
Ví dụ:
4.3. Cung cấp ví dụ
Làm việc với mô hình AI giống như làm việc với đồng nghiệp trên một nhiệm vụ mới, bạn phải cung cấp ví dụ về một nhiệm vụ tương tự từng hoàn thành tốt hoặc kỳ vọng của bạn về đầu ra để mô hình có thể hiểu và học từ ngữ cảnh đó.
Ví dụ 1: Cung cấp phản ví dụ
Tôi có một prompt cơ bản như sau yêu cầu ChatGPT viết email thông báo khách hàng non-tech về cách sử dụng Postman API.
Tôi có thể tạo một prompt tốt hơn bằng cách đưa phản ví dụ vào.
Ví dụ 2: Cung cấp tài liệu tham khảo
Tôi có thể cung cấp cho mô hình AI thông tin đáng tin cậy liên quan tới câu hỏi, từ đó, hướng dẫn mô hình sử dụng thông tin đó để tạo phản hồi.
Ví dụ 3: ChatGPT sẽ tạo tên sản phẩm từ mô tả sản phẩm và seed words dựa trên 2 ví dụ tôi đưa ra ở prompt.
Cung cấp ví dụ có thể dẫn tới phản hồi thiếu sáng tạo hoặc có định kiến. Trong ví dụ trên, nếu tôi đổi tất cả tên sản phẩm mẫu thành từ có chứa tên động vật, thì phản hồi của ChatGPT sẽ toàn từ có chứa tên động vật.
4.4. Đánh giá chất lượng
Cho tới thời điểm hiện tại, ngoài việc thử và sai khi chạy prompt và xem xét kết quả thì chưa hề có feedback loop nào để đánh giá chất lượng của phản hồi từ các mô hình AI.
Điều này không có gì bất ổn nếu bạn chỉ dùng cho những nhiệm vụ đơn lẻ và hiếm khi sử dụng lại prompt. Tuy nhiên, nếu bạn phải sử dụng lại prompt nhiều lần hoặc phải xây dựng một ứng dụng dựa trên prompt thì bạn cần khắt khe hơn trong việc đo lường kết quả.
OpenAI đã phát triển một framework có tên là Evals để benchmark hiệu suất của LLMs (các mô hình ngôn ngữ lớn) và khuyến khích cộng đồng đóng góp những mẫu đánh giá bổ sung.
Trong một số trường hợp, các nhà nghiên cứu đã chuyển sang sử dụng các mô hình chất lượng hơn như GPT-4 để đánh giá phản hồi từ các mô hình tương đương khác như Vicuna-13B, một mô hình được tinh chỉnh dựa trên mô hình mã nguồn mở LLaMA của Meta.
ChatGPT cho phép người dùng sử dụng thumb up/thumb down như một cách để đánh giá chất lượng của mô hình. Sau đây là một vài tiêu chí tham khảo để đánh giá prompt:
- Quality (Chất lượng): Đánh giá chủ quan của con người hoặc mô hình AI cấp trên về mức độ hoàn thành nhiệm vụ.
- Performance (Hiệu suất): Triển khai một số dạng hệ thống phản hồi bên ngoài, ví dụ như động cơ vật lý hoặc mô hình khác để dự đoán kết quả trong thế giới thực.
- Classification (Phân loại): Xác định tần suất prompt gắn nhãn chính xác cho văn bản đã cho.
- Reasoning (Lý luận): Tìm ra trường hợp nào AI không áp dụng được lý luận logic hoặc tính toán sai.
- Hallucinations (Ảo giác): Xem tần suất bạn gặp hiện tượng hallucination (ảo giác) và thử nghiệm các chiến lược phủ định. Hallucination là hiện tượng mô hình AI phản hồi kết quả sai nhưng trông rất có lý.
- Safety (An toàn): Gắn cờ mọi tình huống mà hệ thống có thể trả về kết quả không an toàn hoặc không mong muốn.
- Refusals (Từ chối): Tìm hiểu tần suất hệ thống từ chối thực hiện sai yêu cầu hợp lý của người dùng.
- Adversarial (Đối thủ): Làm cho prompt trở nên mạnh mẽ trước các cuộc tấn công prompt injection, điều này có thể khiến mô hình chạy các prompt không mong muốn thay vì những gì bạn đã lập trình.
4.5. Phân chia lao động
Tương tự như phân chia một hệ thống phức tạp thành một tập hợp các components, các nhiệm vụ phức tạp nên được chia ra thành các prompt đơn giản để giảm tỷ lệ lỗi của mô hình.
Ví dụ: Tôi có một prompt yêu cầu viết một bài báo tiêu đề "RabbitMQ là gì?" có nội dung về ưu/nhược điểm, ứng dụng thực tế và các thành phần chính trong RabbitMQ và tối thiểu 2000 từ.
write an article with title "What is rabbitMQ?". Explain in detail pros and cons, use cases, main components in rabbitMQ with minimum of 2000 words.
Tôi nhận được phản hồi rất sơ sài và sai sót do ChatGPT giới hạn số token và nội dung tôi yêu cầu quá nhiều. Do đó, để đạt hiệu quả, thay vì hỏi hết tất cả trong một prompt thì tôi sẽ tách ra thành 4 prompt hỏi tuần tự như sau:
1. What is definition of RabbitMQ?
2. Explain in detail pros and cons of RabbitMQ.
3. List Rabbitmq use cases and give examples for each.
4. What are main components of RabbitMQ?
5. Prompt Engineer là gì? Làm thế nào để trở thành Prompt Engineer
Prompt Engineer là kỹ sư đảm nhiệm công việc chế tác và tinh chỉnh prompt để gợi ra kết quả đầu ra hoặc hành vi mong muốn từ các mô hình ngôn ngữ. Công việc của họ đảm bảo rằng người dùng nhận được phản hồi chính xác và phù hợp nhất với ngữ cảnh.
Sự nổi lên của các công cụ AI có tính sáng tạo như ChatGPT đang tạo ra cơ hội nghề nghiệp lớn cho vị trí prompt engineer. Anthropic, một công ty nghiên cứu AI, hiện đang tuyển dụng vị trí prompt engineering với mức lương từ 280.000 USD đến 375.000 USD/năm (tương đương 6,7 - 8,5 tỷ VND/năm), theo báo cáo đầu tiên của Bloomberg. (Nguồn: Insider)
5.1. Trách nhiệm chính của Prompt Engineer
- Hiểu mô hình: Các prompt engineer cần hiểu rõ về mô hình mình đang làm việc cùng.
- Tạo prompt: Chế tác và tinh chỉnh prompt để hướng dẫn mô hình tạo ra kết quả mong muốn.
- Iterative testing: Liên tục thử nghiệm và tinh chỉnh prompt để cải thiện độ chính xác và mức độ liên quan của phản hồi.
- Feedback loop: Hợp tác chặt chẽ với các thành viên trong nhóm để cung cấp phản hồi có thể được sử dụng để cải thiện mô hình.
- Tài liệu hoá: Ghi chép các prompt hoạt động hiệu quả và chưa hiệu quả, nhằm tìm ra chiến lược hợp lý để đào tạo mô hình sau này.
5.3. Kỹ năng cần có của Prompt Engineer
- Kỹ năng phân tích: Các kỹ sư cần có khả năng phân tích để hiểu các yêu cầu được giao cũng như các hành vi phức tạp của mô hình và hành vi của người sử dụng mô hình AI.
- Khả năng sáng tạo: Các kỹ sư cần có suy nghĩ sáng tạo để tạo ra các prompts hướng dẫn mô hình theo hướng đúng đắn.
- Kiên nhẫn: Làm việc với mô hình AI có tính chất lặp đi lặp lại và yêu cầu nhiều lần thử và sai đòi hỏi các kỹ sư phải có tính kiên nhẫn để không bỏ cuộc giữa chừng.
- Năng lực kỹ thuật: Mặc dù không phải là một trí thuần kỹ thuật nhưng hiểu biết về lập trình giúp ích rất nhiều để các kỹ sư hiểu được sự hoạt động bên dưới của các mô hình AI.
Bằng cách nắm vững các kỹ năng trên, tôi hi vọng bạn có thể trở thành một prompt engineer thành công và đóng góp vào việc nâng cao hiệu suất của các mô hình AI, giúp cải thiện cuộc sống con người.
6. Tổng kết về Prompt Engineering
Vận dụng Prompt Engineering hiệu quả đóng vai trò quan trọng trong việc nâng cao hiệu suất của các mô hình chatbot AI như ChatGPT trên nhiều lĩnh vực khác nhau như chatbot hỗ trợ khách hàng, sáng tạo nội dung, ứng dụng trong lập trình, dịch thuật,...
Prompt Engineering không chỉ đơn giản là việc tạo ra các mô hình máy học để sinh ra văn bản, mà nó còn đòi hỏi hiểu biết sâu về cách thiết kế câu hỏi hoặc yêu cầu một cách tối ưu để đạt được kết quả mong muốn. Điều này bao gồm việc xác định cấu trúc của câu hỏi, chọn từ ngữ phù hợp, và định rõ ngữ cảnh để mô hình có thể tạo ra đầu ra phù hợp và chính xác.
Tìm hiểu về Prompt Engineer đồng nghĩa với việc khám phá cách mà con người có thể tương tác một cách sáng tạo với công nghệ và máy móc thông qua việc đặt câu hỏi hoặc yêu cầu đúng cách. Nó mang lại hiểu biết sâu hơn về cách tận dụng tối đa sức mạnh của AI và NLP để đáp ứng nhu cầu ngày càng đa dạng và phức tạp của xã hội hiện đại.
Bằng cách tạo ra prompt chính xác và toàn diện, các kỹ sư, đặc biệt là Prompt Engineer, có thể huấn luyện các mô hình AI để chúng hiểu rõ hơn về nhiệm vụ đang thực hiện và tạo ra các phản hồi hữu ích hơn cho con người.
Tài liệu tham khảo:
- Prompt Engineering for Generative AI
- Mastering Generative AI and Prompt Engineering: A Practical Guide for Data Scientists
- Prompt Engineering For ChatGPT: A Quick Guide To Techniques, Tips, And Best Practices
- GPT best practices - Open AI
- Prompt Engineering - Wikipedia
- What is Prompt Engineering? Understanding the Magic Behind Conversational AI
Hi vọng bài viết này giúp bạn hiểu về Prompt Engineering cũng như vị trí Promp Engineer. Hãy thường xuyên theo dõi các bài viết hay về Lập Trình & Dữ Liệu trên 200Lab Blog nhé. Cũng đừng bỏ qua những khoá học Lập Trình tuyệt vời trên 200Lab nè.
Happy Prompt Engineering nhé!
Một bài bài viết mới bạn sẽ thích:
- Jira là gì? Giải mã phần mềm đa năng Jira Software
- Internet of Things (IoT) là gì? Khám phá thế giới kết nối thông tin với IoT
- Học Data Analyst ở đâu? Có gì trong Khoá học Đào tạo Phân tích Dữ liệu tại 200Lab
- Kỹ năng hợp tác - làm việc nhóm trong lập trình
- Tổng quan về Agile và Scrum
- Git là gì? Tổng quan về Git cơ bản cho lập trình viên
Bài viết liên quan
Hướng dẫn Khởi tạo dự án Typescript với VSCode
Sep 25, 2024 • 7 min read
Lập trình C cơ bản - Ứng dụng của ngôn ngữ C
May 02, 2024 • 17 min read
C++ là gì? Giới thiệu ngôn ngữ lập trình C++
Oct 07, 2023 • 35 min read
Java Core là gì? So sánh Java Core và Java
Oct 02, 2023 • 12 min read
Clean code là gì ? Nguyên tắc viết clean code trong Lập Trình
Sep 28, 2023 • 27 min read
Bài toán tháp Hà Nội và cách giải sử dụng Đệ Quy
Sep 28, 2023 • 13 min read