Prompt Engineering for GPT #1: Prompt Engineering là gì?
date
Sep 1, 2023
slug
blog-prompt1
status
Published
tags
Blog
summary
Prompt engineering là một phương pháp đem lại sự hiệu quả tốt nhất khi giao tiếp với các mô hình ngôn ngữ lớn (LLMs).
type
Post
Introduction.
OpenAI ChatGPT hay Google Bard là những mô hình ngôn ngữ lớn (LLMs) đã và đang được sử dụng rất nhiều trong cuộc sống của con người hiện nay. Tuy nhiên, phần lớn người dùng chỉ sử dụng các mô hình này ở một mức độ rất cơ bản, như sử dụng để trả lời các câu hỏi hay hỗ trợ trong việc viết văn… 🥹
Một sự thật là LLMs có thể làm hơn thế, chúng ta có thể sử dụng chúng để giải quyết các bài toán cụ thể trong lĩnh vực Machine Learning hay NLP một cách dễ dàng. Để làm được điều này, chúng ta cần phải xây dựng một phương pháp để tương tác với mô hình LLM và cách làm đó được gọi là Prompt engineering.
Trước tiên, để tối ưu được sức mạnh của Prompt Engineering, bạn cần biết đến việc sử dụng API của OpenAI hoặc Google. Tuy nhiên, bạn vẫn có thể sử dụng ChatGPT hoặc Bard để thử nghiệm độ hiệu quả của phương pháp này 🥳.
Basic prompt.
Như chúng ta đã biết 😊, LLM có thể dễ dàng trả lời hoặc hoàn thành các câu hỏi mà bạn đưa ra.
- Ví dụ:
Đây là điển hình của việc tương tác với các mô hình LLMs. Cú pháp của chúng ta sẽ là:
- Yêu cầu, mong muốn của chúng ta (Instructions)
- Câu hỏi dành cho mô hình. (Questions)
Từ đó chúng ta có rút ra được một cú phát tương tác đầu tiên như sau:
Cách tương tác với dạng này được gọi là Zero-shot, tức là người dùng chỉ hỏi đơn thuần và không có bất kỳ ví dụ hoặc minh họa nào về nhiệm vụ bạn muốn nó đạt được. Với cách làm này, mô hình đôi khi không thể hiểu được hết yêu cầu của bạn.
Few-shot prompting
Để khắc phục điều đó, chúng ta có thể thêm các ví dụ về câu trả lời để mô hình có thể theo dõi và trả lời tương tự. Với cách làm này, bạn hãy thêm các cặp “câu hỏi” - ”câu trả lời” cho mô hình.
- Ví dụ:
Thật tuyệt đúng không, câu trả lời đã khác so với ban đầu. Mô hình đã mô tả màu sắc của bầu trời cùng với bối cảnh của không gian, tương tự như những câu mà chúng ta cho làm ví dụ.
Cú phát của Few-shot prompting như sau:
Hãy thử dùng các phương pháp này để giải quyết các bài toàn đặc biệt hơn xem sao?
- Ví dụ: Text Classification
Kết quả nhìn chung là đúng yêu cầu, tuy nhiên đây là bài toán phân lớp và để tránh khó khăn trong việc xử lý kết quả, liệu có cách nào để mô hình trả lại kết quả là một chữ “chó” hoặc “gà” không?
- Hãy thử phương pháp few-shot xem sao
Kết quả vẫn không như mong đợi nhỉ?
- Vậy liệu chúng ta có thể đề xuất cấu trúc của output hay không?
Great 🥳 🥳. Đã đúng như mong đợi rồi nhỉ.
Overall of prompting.
Các ví dụ trên chỉ là những ví dụ tôi đặc ra để các bạn có góc nhìn khách quan hơn về sức mạnh cũng như cách tương tác với các mô hình LLM.
Qua quá trình thực nghiệm, là ứng dụng vào thực tế. Các kỹ sư đã đề xuất một cấu trúc rất cụ thể cho toàn bộ quá trình tương tác với mô hình LLM.
Cấu trúc của một câu prompt tốt sẽ có các thành phần như sau:
- Instruction - một nhiệm vụ hoặc hướng dẫn cụ thể mà bạn muốn mô hình thực hiện
- Context - thông tin bên ngoài hoặc bối cảnh bổ sung có thể giúp mô hình phản hồi tốt hơn
- Input Data - thông tin đầu vào hoặc câu hỏi mà chúng ta quan tâm để tìm câu trả lời cho
- Output Indicator - loại hoặc định dạng của đầu ra.
- Example - các ví dụ minh hoạ
Bạn không cần tất cả bốn thành phần cho lời nhắc và định dạng tùy thuộc vào nhiệm vụ hiện tại. Chúng tôi sẽ đề cập đến các ví dụ cụ thể hơn trong các hướng dẫn sắp tới.
To be continue