Module này bao gồm các khái niệm và kỹ thuật cơ bản để tạo các prompt hiệu quả trong các mô hình AI tạo nội dung. Cách bạn viết prompt cho một LLM cũng rất quan trọng. Một prompt được tạo cẩn thận có thể đạt được chất lượng phản hồi tốt hơn. Nhưng chính xác thì các thuật ngữ như prompt và kỹ thuật tạo prompt có nghĩa là gì? Và làm thế nào để cải thiện dữ liệu đầu vào mà tôi gửi đến LLM? Đây là những câu hỏi mà chúng ta sẽ cố gắng trả lời trong chương này và chương tiếp theo.
AI tạo nội dung có khả năng tạo ra nội dung mới (ví dụ: văn bản, hình ảnh, âm thanh, mã code, v.v.) để đáp ứng yêu cầu của người dùng. Nó đạt được điều này thông qua các Mô hình Ngôn ngữ Lớn như loạt GPT ("Generative Pre-trained Transformer") của OpenAI, được huấn luyện để sử dụng ngôn ngữ tự nhiên và mã code.
Người dùng hiện có thể tương tác với các mô hình này thông qua các giao diện quen thuộc như trò chuyện, mà không cần bất kỳ chuyên môn kỹ thuật hoặc đào tạo nào. Các mô hình này dựa trên prompt - người dùng gửi một đầu vào văn bản (prompt) và nhận lại phản hồi từ AI (completion). Sau đó, họ có thể "trò chuyện với AI" một cách lặp đi lặp lại, trong các cuộc hội thoại nhiều lượt, tinh chỉnh prompt của mình cho đến khi phản hồi phù hợp với mong đợi.
"Prompt" giờ đây trở thành giao diện lập trình chính cho các ứng dụng AI tạo nội dung, hướng dẫn các mô hình làm gì và ảnh hưởng đến chất lượng của các phản hồi được trả về. "Kỹ thuật tạo Prompt" là một lĩnh vực nghiên cứu đang phát triển nhanh chóng, tập trung vào việc thiết kế và tối ưu hóa các prompt để cung cấp các phản hồi nhất quán và chất lượng ở quy mô lớn.
Trong bài học này, chúng ta sẽ tìm hiểu kỹ thuật tạo Prompt là gì, tại sao nó quan trọng, và cách chúng ta có thể tạo ra các prompt hiệu quả hơn cho một mô hình và mục tiêu ứng dụng cụ thể. Chúng ta sẽ hiểu các khái niệm cốt lõi và các thực hành tốt nhất cho kỹ thuật tạo prompt - và tìm hiểu về môi trường "sandbox" tương tác trong Jupyter Notebooks, nơi chúng ta có thể áp dụng các khái niệm này vào các ví dụ thực tế.
Kết thúc bài học này, chúng ta sẽ có thể:
- Giải thích kỹ thuật tạo Prompt là gì và tại sao nó quan trọng.
- Mô tả các thành phần của một prompt và cách chúng được sử dụng.
- Học các thực hành tốt nhất và kỹ thuật cho việc tạo prompt.
- Áp dụng các kỹ thuật đã học vào các ví dụ thực tế, sử dụng một endpoint của OpenAI.
Kỹ thuật tạo Prompt: Thực hành thiết kế và tinh chỉnh các đầu vào để hướng dẫn các mô hình AI tạo ra các kết quả mong muốn. Tokenization: Quá trình chuyển đổi văn bản thành các đơn vị nhỏ hơn, gọi là token, mà mô hình có thể hiểu và xử lý. Instruction-Tuned LLMs: Các Mô hình Ngôn ngữ Lớn (LLMs) đã được tinh chỉnh với các hướng dẫn cụ thể để cải thiện độ chính xác và sự liên quan của phản hồi.
Kỹ thuật tạo prompt hiện tại mang tính nghệ thuật hơn là khoa học. Cách tốt nhất để cải thiện trực giác của chúng ta về nó là thực hành nhiều hơn và áp dụng cách tiếp cận thử nghiệm kết hợp chuyên môn trong lĩnh vực ứng dụng với các kỹ thuật được khuyến nghị và tối ưu hóa theo mô hình cụ thể.
Jupyter Notebook đi kèm với bài học này cung cấp một môi trường sandbox nơi bạn có thể thử nghiệm những gì bạn học - trong quá trình học hoặc như một phần của thử thách mã hóa ở cuối bài học. Để thực hiện các bài tập, bạn sẽ cần:
- Một khóa API Azure OpenAI - endpoint dịch vụ cho một LLM đã triển khai.
- Một môi trường Python - nơi Notebook có thể được thực thi.
- Các biến môi trường cục bộ - hoàn thành các bước SETUP ngay bây giờ để sẵn sàng.
Notebook đi kèm với các bài tập khởi đầu - nhưng bạn được khuyến khích thêm các phần Markdown (mô tả) và Code (yêu cầu prompt) của riêng mình để thử nghiệm thêm các ví dụ hoặc ý tưởng - và xây dựng trực giác của bạn về thiết kế prompt.
Muốn có cái nhìn tổng quan về những gì bài học này bao gồm trước khi bạn bắt đầu? Hãy xem hướng dẫn minh họa này, cung cấp cho bạn cái nhìn về các chủ đề chính được đề cập và những điểm chính cần suy nghĩ trong mỗi phần. Lộ trình bài học đưa bạn từ việc hiểu các khái niệm và thách thức cốt lõi đến việc giải quyết chúng bằng các kỹ thuật và thực hành tốt nhất trong kỹ thuật tạo prompt. Lưu ý rằng phần "Kỹ thuật Nâng cao" trong hướng dẫn này đề cập đến nội dung được đề cập trong chương tiếp theo của chương trình học này.
Bây giờ, hãy nói về cách chủ đề này liên quan đến sứ mệnh startup của chúng ta mang đổi mới AI vào giáo dục. Chúng ta muốn xây dựng các ứng dụng học tập cá nhân hóa dựa trên AI - vì vậy hãy nghĩ về cách các người dùng khác nhau của ứng dụng của chúng ta có thể "thiết kế" các prompt:
- Quản trị viên có thể yêu cầu AI phân tích dữ liệu chương trình học để xác định các khoảng trống trong nội dung. AI có thể tóm tắt kết quả hoặc trực quan hóa chúng bằng mã code.
- Giáo viên có thể yêu cầu AI tạo một kế hoạch bài học cho một đối tượng và chủ đề cụ thể. AI có thể xây dựng kế hoạch cá nhân hóa theo định dạng được chỉ định.
- Học sinh có thể yêu cầu AI hướng dẫn họ trong một môn học khó. AI có thể hướng dẫn học sinh với các bài học, gợi ý và ví dụ phù hợp với trình độ của họ.
Đó chỉ là phần nổi của tảng băng chìm. Hãy xem Prompts For Education - một thư viện prompt mã nguồn mở được các chuyên gia giáo dục biên soạn - để có cái nhìn rộng hơn về các khả năng! Hãy thử chạy một số prompt đó trong sandbox hoặc sử dụng OpenAI Playground để xem điều gì xảy ra!
Chúng ta đã bắt đầu bài học này bằng cách định nghĩa Kỹ thuật tạo Prompt là quá trình thiết kế và tối ưu hóa các đầu vào văn bản (prompt) để cung cấp các phản hồi nhất quán và chất lượng (completions) cho một mục tiêu ứng dụng và mô hình cụ thể. Chúng ta có thể nghĩ về điều này như một quy trình 2 bước:
- thiết kế prompt ban đầu cho một mô hình và mục tiêu cụ thể
- tinh chỉnh prompt một cách lặp đi lặp lại để cải thiện chất lượng phản hồi
Đây là một quy trình thử nghiệm và sai sót cần trực giác và nỗ lực của người dùng để đạt được kết quả tối ưu. Vậy tại sao nó lại quan trọng? Để trả lời câu hỏi đó, trước tiên chúng ta cần hiểu ba khái niệm:
- Tokenization = cách mô hình "nhìn thấy" prompt
- Base LLMs = cách mô hình nền tảng "xử lý" một prompt
- Instruction-Tuned LLMs = cách mô hình hiện có thể nhìn nhận "nhiệm vụ"
Một LLM nhìn thấy các prompt như một chuỗi các token nơi các mô hình khác nhau (hoặc các phiên bản của một mô hình) có thể phân tách cùng một prompt theo các cách khác nhau. Vì LLMs được huấn luyện trên các token (chứ không phải trên văn bản thô), cách các prompt được phân tách có ảnh hưởng trực tiếp đến chất lượng của phản hồi được tạo ra.
Để có trực giác về cách tokenization hoạt động, hãy thử các công cụ như OpenAI Tokenizer được hiển thị dưới đây. Sao chép prompt của bạn vào - và xem cách nó được chuyển đổi thành các token, chú ý cách các ký tự khoảng trắng và dấu chấm câu được xử lý. Lưu ý rằng ví dụ này hiển thị một LLM cũ hơn (GPT-3) - vì vậy thử nghiệm với một mô hình mới hơn có thể tạo ra kết quả khác.
Khi một prompt được phân tách thành token, chức năng chính của "Base LLM" (hoặc mô hình nền tảng) là dự đoán token tiếp theo trong chuỗi đó. Vì LLMs được huấn luyện trên các tập dữ liệu văn bản khổng lồ, chúng có cảm giác tốt về mối quan hệ thống kê giữa các token và có thể thực hiện dự đoán đó với một mức độ tự tin nhất định. Lưu ý rằng chúng không hiểu ý nghĩa của các từ trong prompt hoặc token; chúng chỉ nhìn thấy một mẫu mà chúng có thể "hoàn thành" với dự đoán tiếp theo của mình. Chúng có thể tiếp tục dự đoán chuỗi cho đến khi bị người dùng can thiệp hoặc một điều kiện được thiết lập trước.
Muốn thấy cách hoàn thành dựa trên prompt hoạt động? Nhập prompt trên vào Chat Playground của Azure OpenAI Studio với các cài đặt mặc định. Hệ thống được cấu hình để xử lý các prompt như các yêu cầu thông tin - vì vậy bạn sẽ thấy một phản hồi hoàn thành phù hợp với ngữ cảnh này.
Nhưng điều gì sẽ xảy ra nếu người dùng muốn thấy điều gì đó cụ thể đáp ứng một số tiêu chí hoặc mục tiêu nhiệm vụ? Đây là lúc các LLM được tinh chỉnh theo hướng dẫn xuất hiện.
Một Instruction Tuned LLM bắt đầu với mô hình nền tảng và tinh chỉnh nó với các ví dụ hoặc cặp đầu vào/đầu ra (ví dụ: các "tin nhắn" nhiều lượt) có thể chứa các hướng dẫn rõ ràng - và phản hồi từ AI cố gắng tuân theo hướng dẫn đó.
Điều này sử dụng các kỹ thuật như Học Tăng Cường với Phản Hồi Từ Con Người (RLHF) có thể huấn luyện mô hình để tuân theo hướng dẫn và học từ phản hồi để tạo ra các phản hồi phù hợp hơn với các ứng dụng thực tế và liên quan hơn đến mục tiêu của người dùng.
Hãy thử nghiệm - quay lại prompt trên, nhưng bây giờ thay đổi thông điệp hệ thống để cung cấp hướng dẫn sau đây làm ngữ cảnh:
Tóm tắt nội dung bạn được cung cấp cho học sinh lớp hai. Giữ kết quả trong một đoạn văn với 3-5 gạch đầu dòng.
Xem cách kết quả bây giờ được tinh chỉnh để phản ánh mục tiêu và định dạng mong muốn? Một giáo viên bây giờ có thể trực tiếp sử dụng phản hồi này trong các slide cho lớp học đó.
Bây giờ chúng ta đã biết cách các prompt được xử lý bởi LLMs, hãy nói về tại sao chúng ta cần kỹ thuật tạo prompt. Câu trả lời nằm ở thực tế rằng các LLM hiện tại đặt ra một số thách thức khiến việc đạt được các phản hồi đáng tin cậy và nhất quán trở nên khó khăn hơn nếu không nỗ lực vào việc xây dựng và tối ưu hóa prompt. Ví dụ:
-
Phản hồi của mô hình mang tính ngẫu nhiên. Cùng một prompt có thể tạo ra các phản hồi khác nhau với các mô hình hoặc phiên bản mô hình khác nhau. Và nó thậm chí có thể tạo ra các kết quả khác nhau với cùng một mô hình vào các thời điểm khác nhau. Các kỹ thuật tạo prompt có thể giúp chúng ta giảm thiểu những biến đổi này bằng cách cung cấp các rào cản tốt hơn.
-
Mô hình có thể tạo ra thông tin sai lệch. Các mô hình được huấn luyện với các tập dữ liệu lớn nhưng hữu hạn, nghĩa là chúng thiếu kiến thức về các khái niệm ngoài phạm vi huấn luyện đó. Kết quả là, chúng có thể tạo ra các phản hồi không chính xác, tưởng tượng hoặc mâu thuẫn trực tiếp với các sự thật đã biết. Các kỹ thuật tạo prompt giúp người dùng xác định và giảm thiểu những thông tin sai lệch như vậy, ví dụ bằng cách yêu cầu AI cung cấp nguồn hoặc lý luận.
-
Khả năng của mô hình sẽ khác nhau. Các mô hình mới hơn hoặc các thế hệ mô hình mới sẽ có khả năng phong phú hơn nhưng cũng mang lại những đặc điểm riêng biệt và sự đánh đổi về chi phí & độ phức tạp. Kỹ thuật tạo prompt có thể giúp chúng ta phát triển các thực hành tốt nhất và quy trình làm việc để loại bỏ sự khác biệt và thích nghi với các yêu cầu cụ thể của mô hình một cách hiệu quả và liền mạch.
Hãy xem điều này trong hành động tại OpenAI hoặc Azure OpenAI Playground:
- Sử dụng cùng một prompt với các triển khai LLM khác nhau (ví dụ, OpenAI, Azure OpenAI, Hugging Face) - bạn có thấy sự khác biệt không?
- Sử dụng cùng một prompt nhiều lần với cùng một triển khai LLM (ví dụ, Azure OpenAI Playground) - những sự khác biệt này khác nhau như thế nào?
Trong khóa học này, chúng ta sử dụng thuật ngữ "thông tin sai lệch" để chỉ hiện tượng khi LLMs đôi khi tạo ra thông tin không chính xác do hạn chế trong việc huấn luyện hoặc các ràng buộc khác. Bạn cũng có thể đã nghe thấy điều này được gọi là "ảo giác" trong các bài báo phổ biến hoặc các bài nghiên cứu. Tuy nhiên, chúng tôi khuyến nghị mạnh mẽ việc sử dụng thuật ngữ "thông tin sai lệch" để tránh việc nhân cách hóa hành vi bằng cách gán một đặc điểm giống con người cho một kết quả do máy móc tạo ra. Điều này cũng củng cố các hướng dẫn AI có trách nhiệm từ góc độ thuật ngữ, loại bỏ các thuật ngữ có thể bị coi là xúc phạm hoặc không bao hàm trong một số ngữ cảnh.
Muốn hiểu cách thông tin sai lệch hoạt động? Hãy nghĩ về một prompt yêu cầu AI tạo nội dung cho một chủ đề không tồn tại (để đảm bảo nó không có trong tập dữ liệu huấn luyện). Ví dụ - tôi đã thử prompt này:
Prompt: tạo một kế hoạch bài học về Cuộc Chiến Sao Hỏa năm 2076. Một tìm kiếm trên web cho thấy có những câu chuyện hư cấu (ví dụ: loạt phim truyền hình hoặc sách) về các cuộc chiến trên sao Hỏa - nhưng không có cuộc chiến nào vào năm 2076. Lý trí cũng cho chúng ta biết rằng năm 2076 là tương lai và do đó, không thể liên quan đến một sự kiện thực tế.
Vậy điều gì xảy ra khi chúng ta chạy lời nhắc này với các nhà cung cấp LLM khác nhau?
Phản hồi 1: OpenAI Playground (GPT-35)
Phản hồi 2: Azure OpenAI Playground (GPT-35)
Phản hồi 3: Hugging Face Chat Playground (LLama-2)
Như mong đợi, mỗi mô hình (hoặc phiên bản mô hình) tạo ra các phản hồi hơi khác nhau nhờ vào hành vi ngẫu nhiên và sự khác biệt về khả năng của mô hình. Ví dụ, một mô hình nhắm đến đối tượng học sinh lớp 8 trong khi mô hình khác giả định đối tượng là học sinh trung học. Nhưng cả ba mô hình đều tạo ra các phản hồi có thể thuyết phục một người dùng không có thông tin rằng sự kiện là có thật.
Các kỹ thuật thiết kế lời nhắc như metaprompting và cấu hình nhiệt độ có thể giảm bớt sự bịa đặt của mô hình ở một mức độ nào đó. Các kiến trúc thiết kế lời nhắc mới cũng tích hợp các công cụ và kỹ thuật mới một cách liền mạch vào luồng lời nhắc, để giảm thiểu hoặc hạn chế một số hiệu ứng này.
Hãy kết thúc phần này bằng cách tìm hiểu cách thiết kế lời nhắc được sử dụng trong các giải pháp thực tế qua một nghiên cứu trường hợp: GitHub Copilot.
GitHub Copilot là "Lập trình viên đồng hành AI" của bạn - nó chuyển đổi lời nhắc văn bản thành các đoạn mã và được tích hợp vào môi trường phát triển của bạn (ví dụ: Visual Studio Code) để mang lại trải nghiệm người dùng liền mạch. Như được ghi nhận trong loạt bài viết dưới đây, phiên bản đầu tiên dựa trên mô hình OpenAI Codex - với các kỹ sư nhanh chóng nhận ra nhu cầu tinh chỉnh mô hình và phát triển các kỹ thuật thiết kế lời nhắc tốt hơn để cải thiện chất lượng mã. Vào tháng 7, họ ra mắt một mô hình AI cải tiến vượt xa Codex để đưa ra các gợi ý nhanh hơn.
Hãy đọc các bài viết theo thứ tự để theo dõi hành trình học hỏi của họ.
- Tháng 5 năm 2023 | GitHub Copilot đang ngày càng hiểu mã của bạn tốt hơn
- Tháng 5 năm 2023 | Bên trong GitHub: Làm việc với các LLM đằng sau GitHub Copilot.
- Tháng 6 năm 2023 | Cách viết lời nhắc tốt hơn cho GitHub Copilot.
- Tháng 7 năm 2023 | .. GitHub Copilot vượt xa Codex với mô hình AI cải tiến
- Tháng 7 năm 2023 | Hướng dẫn dành cho nhà phát triển về thiết kế lời nhắc và LLMs
- Tháng 9 năm 2023 | Cách xây dựng ứng dụng LLM doanh nghiệp: Bài học từ GitHub Copilot
Bạn cũng có thể duyệt qua blog kỹ thuật của họ để tìm thêm các bài viết như bài này cho thấy cách các mô hình và kỹ thuật này được áp dụng để thúc đẩy các ứng dụng thực tế.
Chúng ta đã thấy tại sao thiết kế lời nhắc lại quan trọng - bây giờ hãy tìm hiểu cách các lời nhắc được xây dựng để chúng ta có thể đánh giá các kỹ thuật khác nhau nhằm thiết kế lời nhắc hiệu quả hơn.
Hãy bắt đầu với lời nhắc cơ bản: một đầu vào văn bản được gửi đến mô hình mà không có ngữ cảnh nào khác. Đây là một ví dụ - khi chúng ta gửi vài từ đầu tiên của bài quốc ca Hoa Kỳ đến Completion API của OpenAI, nó ngay lập tức hoàn thành phản hồi với vài dòng tiếp theo, minh họa hành vi dự đoán cơ bản.
| Lời nhắc (Đầu vào) | Hoàn thành (Đầu ra) |
|---|---|
| Oh say can you see | Có vẻ như bạn đang bắt đầu lời bài hát "The Star-Spangled Banner," quốc ca của Hoa Kỳ. Toàn bộ lời bài hát là ... |
Bây giờ hãy thêm ngữ cảnh và hướng dẫn vào lời nhắc cơ bản đó. Chat Completion API cho phép chúng ta xây dựng một lời nhắc phức tạp dưới dạng một tập hợp các tin nhắn với:
- Các cặp đầu vào/đầu ra phản ánh đầu vào của người dùng và phản hồi của trợ lý.
- Tin nhắn hệ thống thiết lập ngữ cảnh cho hành vi hoặc tính cách của trợ lý.
Yêu cầu bây giờ có dạng dưới đây, nơi tokenization hiệu quả nắm bắt thông tin liên quan từ ngữ cảnh và cuộc trò chuyện. Bây giờ, việc thay đổi ngữ cảnh hệ thống có thể ảnh hưởng lớn đến chất lượng của các phản hồi, cũng như các đầu vào của người dùng cung cấp.
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)Trong các ví dụ trên, lời nhắc của người dùng là một truy vấn văn bản đơn giản có thể được hiểu là một yêu cầu thông tin. Với lời nhắc hướng dẫn, chúng ta có thể sử dụng văn bản đó để chỉ định một nhiệm vụ chi tiết hơn, cung cấp hướng dẫn tốt hơn cho AI. Đây là một ví dụ:
| Lời nhắc (Đầu vào) | Hoàn thành (Đầu ra) | Loại hướng dẫn |
|---|---|---|
| Viết mô tả về Nội chiến Hoa Kỳ | trả về một đoạn văn đơn giản | Đơn giản |
| Viết mô tả về Nội chiến Hoa Kỳ. Cung cấp các ngày và sự kiện quan trọng và mô tả ý nghĩa của chúng | trả về một đoạn văn kèm theo danh sách các ngày sự kiện quan trọng với mô tả | Phức tạp |
| Viết mô tả về Nội chiến Hoa Kỳ trong 1 đoạn văn. Cung cấp 3 gạch đầu dòng với các ngày quan trọng và ý nghĩa của chúng. Cung cấp thêm 3 gạch đầu dòng với các nhân vật lịch sử quan trọng và đóng góp của họ. Trả về đầu ra dưới dạng tệp JSON | trả về chi tiết phong phú hơn trong một hộp văn bản, được định dạng dưới dạng JSON mà bạn có thể sao chép-dán vào tệp và xác thực khi cần | Phức tạp. Định dạng. |
Trong các ví dụ trên, lời nhắc vẫn khá mở, cho phép LLM quyết định phần nào trong tập dữ liệu được huấn luyện trước của nó là phù hợp. Với mẫu thiết kế nội dung chính, văn bản đầu vào được chia thành hai phần:
- một hướng dẫn (hành động)
- nội dung liên quan (ảnh hưởng đến hành động)
Đây là một ví dụ trong đó hướng dẫn là "tóm tắt điều này trong 2 câu".
| Lời nhắc (Đầu vào) | Hoàn thành (Đầu ra) |
|---|---|
| Sao Mộc là hành tinh thứ năm từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. Đây là một hành tinh khí với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn gấp hai lần rưỡi khối lượng của tất cả các hành tinh khác trong Hệ Mặt Trời cộng lại. Sao Mộc là một trong những vật thể sáng nhất có thể nhìn thấy bằng mắt thường trên bầu trời đêm, và đã được biết đến bởi các nền văn minh cổ đại từ trước khi lịch sử được ghi lại. Nó được đặt tên theo thần Jupiter của La Mã. Khi nhìn từ Trái Đất, Sao Mộc có thể sáng đủ để ánh sáng phản chiếu của nó tạo ra bóng nhìn thấy được, và trung bình là vật thể tự nhiên sáng thứ ba trên bầu trời đêm sau Mặt Trăng và Sao Kim. Tóm tắt điều này trong 2 câu ngắn |
Sao Mộc, hành tinh thứ năm từ Mặt Trời, là hành tinh lớn nhất trong Hệ Mặt Trời và được biết đến là một trong những vật thể sáng nhất trên bầu trời đêm. Được đặt tên theo thần Jupiter của La Mã, nó là một hành tinh khí với khối lượng lớn gấp hai lần rưỡi khối lượng của tất cả các hành tinh khác cộng lại. |
Phân đoạn nội dung chính có thể được sử dụng theo nhiều cách để thúc đẩy các hướng dẫn hiệu quả hơn:
- Ví dụ - thay vì nói cho mô hình biết phải làm gì bằng một hướng dẫn rõ ràng, hãy cung cấp cho nó các ví dụ về những gì cần làm và để nó suy ra mẫu.
- Gợi ý - theo sau hướng dẫn bằng một "gợi ý" để khởi động phản hồi, hướng dẫn mô hình đến các phản hồi phù hợp hơn.
- Mẫu - đây là các 'công thức' lặp lại cho lời nhắc với các chỗ trống (biến) có thể được tùy chỉnh với dữ liệu cho các trường hợp sử dụng cụ thể.
Hãy khám phá chúng trong thực tế.
Đây là một cách tiếp cận trong đó bạn sử dụng nội dung chính để "cung cấp cho mô hình" một số ví dụ về đầu ra mong muốn cho một hướng dẫn nhất định và để nó suy ra mẫu cho đầu ra mong muốn. Dựa trên số lượng ví dụ được cung cấp, chúng ta có thể có lời nhắc không ví dụ, một ví dụ, vài ví dụ, v.v.
Lời nhắc bây giờ bao gồm ba thành phần:
- Mô tả nhiệm vụ
- Một vài ví dụ về đầu ra mong muốn
- Bắt đầu một ví dụ mới (trở thành mô tả nhiệm vụ ngầm)
| Loại học tập | Lời nhắc (Đầu vào) | Hoàn thành (Đầu ra) |
|---|---|---|
| Không ví dụ | "Mặt Trời đang chiếu sáng". Dịch sang tiếng Tây Ban Nha | "El Sol está brillando". |
| Một ví dụ | "Mặt Trời đang chiếu sáng" => ""El Sol está brillando". "Đó là một ngày lạnh và gió" => |
"Es un día frío y ventoso". |
| Vài ví dụ | Người chơi chạy các căn cứ => Bóng chày Người chơi đánh một cú ace => Quần vợt Người chơi đánh một cú sáu điểm => Cricket Người chơi thực hiện một cú slam-dunk => |
Bóng rổ |
Lưu ý cách chúng ta phải cung cấp hướng dẫn rõ ràng ("Dịch sang tiếng Tây Ban Nha") trong lời nhắc không ví dụ, nhưng nó được suy ra trong ví dụ một ví dụ. Ví dụ vài ví dụ cho thấy cách thêm nhiều ví dụ cho phép các mô hình đưa ra suy luận chính xác hơn mà không cần thêm hướng dẫn.
Một kỹ thuật khác để sử dụng nội dung chính là cung cấp gợi ý thay vì ví dụ. Trong trường hợp này, chúng ta đang đưa mô hình một sự khởi đầu đúng hướng bằng cách bắt đầu nó với một đoạn phản ánh định dạng phản hồi mong muốn. Mô hình sau đó "nhận gợi ý" để tiếp tục theo hướng đó.
| Số lượng gợi ý | Lời nhắc (Đầu vào) | Hoàn thành (Đầu ra) |
|---|---|---|
| 0 | Sao Mộc là hành tinh thứ năm từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. Đây là một hành tinh khí với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn gấp hai lần rưỡi khối lượng của tất cả các hành tinh khác trong Hệ Mặt Trời cộng lại. Sao Mộc là một trong những vật thể sáng nhất có thể nhìn thấy bằng mắt thường trên bầu trời đêm, và đã được biết đến bởi các nền văn minh cổ đại từ trước khi lịch sử được ghi lại. Tóm tắt điều này |
Sao Mộc là hành tinh lớn nhất trong Hệ Mặt Trời và là hành tinh thứ năm từ Mặt Trời. Đây là một hành tinh khí với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn hơn tất cả các hành tinh khác cộng lại. Các nền văn minh cổ đại đã biết đến Sao Mộc từ lâu, và nó dễ dàng nhìn thấy trên bầu trời đêm. |
| 1 | Sao Mộc là hành tinh thứ năm tính từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. Đây là một hành tinh khí khổng lồ với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn gấp hai lần rưỡi tổng khối lượng của tất cả các hành tinh khác trong Hệ Mặt Trời cộng lại. Sao Mộc là một trong những vật thể sáng nhất có thể nhìn thấy bằng mắt thường trên bầu trời đêm và đã được các nền văn minh cổ đại biết đến từ trước khi lịch sử được ghi chép. Tóm tắt điều này Những gì chúng ta học được là Sao Mộc |
là hành tinh thứ năm tính từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. Đây là một hành tinh khí khổng lồ với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn gấp hai lần rưỡi tổng khối lượng của tất cả các hành tinh khác cộng lại. Nó dễ dàng nhìn thấy bằng mắt thường và đã được biết đến từ thời cổ đại. |
| 2 | Sao Mộc là hành tinh thứ năm tính từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. Đây là một hành tinh khí khổng lồ với khối lượng bằng một phần nghìn khối lượng của Mặt Trời, nhưng lớn gấp hai lần rưỡi tổng khối lượng của tất cả các hành tinh khác trong Hệ Mặt Trời cộng lại. Sao Mộc là một trong những vật thể sáng nhất có thể nhìn thấy bằng mắt thường trên bầu trời đêm và đã được các nền văn minh cổ đại biết đến từ trước khi lịch sử được ghi chép. Tóm tắt điều này 3 điều chúng ta học được: |
1. Sao Mộc là hành tinh thứ năm tính từ Mặt Trời và là hành tinh lớn nhất trong Hệ Mặt Trời. 2. Đây là một hành tinh khí khổng lồ với khối lượng bằng một phần nghìn khối lượng của Mặt Trời... 3. Sao Mộc đã được nhìn thấy bằng mắt thường từ thời cổ đại ... |
Mẫu gợi ý là công thức được định nghĩa trước cho một gợi ý có thể được lưu trữ và tái sử dụng khi cần thiết, nhằm tạo ra trải nghiệm người dùng nhất quán hơn ở quy mô lớn. Ở dạng đơn giản nhất, nó chỉ là một tập hợp các ví dụ gợi ý như ví dụ này từ OpenAI cung cấp cả các thành phần gợi ý tương tác (tin nhắn của người dùng và hệ thống) và định dạng yêu cầu dựa trên API - để hỗ trợ tái sử dụng.
Ở dạng phức tạp hơn như ví dụ này từ LangChain, nó chứa các chỗ trống có thể được thay thế bằng dữ liệu từ nhiều nguồn khác nhau (đầu vào của người dùng, ngữ cảnh hệ thống, nguồn dữ liệu bên ngoài, v.v.) để tạo ra gợi ý một cách động. Điều này cho phép chúng ta tạo ra một thư viện các gợi ý có thể tái sử dụng để sử dụng nhằm tạo ra trải nghiệm người dùng nhất quán một cách lập trình ở quy mô lớn.
Cuối cùng, giá trị thực sự của các mẫu nằm ở khả năng tạo và xuất bản thư viện gợi ý cho các lĩnh vực ứng dụng cụ thể - nơi mẫu gợi ý được tối ưu hóa để phản ánh ngữ cảnh hoặc ví dụ cụ thể của ứng dụng, giúp các phản hồi trở nên phù hợp và chính xác hơn đối với đối tượng người dùng mục tiêu. Kho lưu trữ Prompts For Edu là một ví dụ tuyệt vời về cách tiếp cận này, tập hợp một thư viện các gợi ý cho lĩnh vực giáo dục với trọng tâm là các mục tiêu chính như lập kế hoạch bài học, thiết kế chương trình học, hướng dẫn học sinh, v.v.
Nếu chúng ta nghĩ về việc xây dựng gợi ý như có một hướng dẫn (nhiệm vụ) và một mục tiêu (nội dung chính), thì nội dung phụ giống như ngữ cảnh bổ sung mà chúng ta cung cấp để ảnh hưởng đến kết quả theo một cách nào đó. Nó có thể là các tham số điều chỉnh, hướng dẫn định dạng, phân loại chủ đề, v.v., giúp mô hình tùy chỉnh phản hồi để phù hợp với các mục tiêu hoặc kỳ vọng của người dùng.
Ví dụ: Với một danh mục khóa học có siêu dữ liệu phong phú (tên, mô tả, cấp độ, thẻ siêu dữ liệu, giảng viên, v.v.) về tất cả các khóa học có trong chương trình học:
- chúng ta có thể định nghĩa một hướng dẫn để "tóm tắt danh mục khóa học cho kỳ học mùa thu năm 2023"
- chúng ta có thể sử dụng nội dung chính để cung cấp một vài ví dụ về kết quả mong muốn
- chúng ta có thể sử dụng nội dung phụ để xác định 5 "thẻ" quan tâm hàng đầu.
Bây giờ, mô hình có thể cung cấp một bản tóm tắt theo định dạng được hiển thị bởi một vài ví dụ - nhưng nếu một kết quả có nhiều thẻ, nó có thể ưu tiên 5 thẻ được xác định trong nội dung phụ.
Bây giờ chúng ta đã biết cách gợi ý có thể được xây dựng, chúng ta có thể bắt đầu nghĩ về cách thiết kế chúng để phản ánh các thực hành tốt nhất. Chúng ta có thể nghĩ về điều này theo hai phần - có tư duy đúng đắn và áp dụng các kỹ thuật phù hợp.
Xây dựng gợi ý là một quá trình thử nghiệm và sai sót, vì vậy hãy ghi nhớ ba yếu tố hướng dẫn rộng lớn:
-
Hiểu biết về lĩnh vực rất quan trọng. Độ chính xác và mức độ liên quan của phản hồi là một hàm số của lĩnh vực mà ứng dụng hoặc người dùng đó hoạt động. Áp dụng trực giác và chuyên môn lĩnh vực của bạn để tùy chỉnh các kỹ thuật hơn nữa. Ví dụ, định nghĩa tính cách cụ thể theo lĩnh vực trong các gợi ý hệ thống của bạn, hoặc sử dụng mẫu cụ thể theo lĩnh vực trong các gợi ý của người dùng. Cung cấp nội dung phụ phản ánh ngữ cảnh cụ thể theo lĩnh vực, hoặc sử dụng gợi ý và ví dụ cụ thể theo lĩnh vực để hướng dẫn mô hình theo các mẫu sử dụng quen thuộc.
-
Hiểu biết về mô hình rất quan trọng. Chúng ta biết rằng các mô hình có tính ngẫu nhiên. Nhưng việc triển khai mô hình cũng có thể khác nhau về tập dữ liệu đào tạo mà chúng sử dụng (kiến thức được đào tạo trước), các khả năng mà chúng cung cấp (ví dụ: thông qua API hoặc SDK) và loại nội dung mà chúng được tối ưu hóa (ví dụ: mã, hình ảnh, văn bản). Hiểu rõ điểm mạnh và hạn chế của mô hình bạn đang sử dụng, và sử dụng kiến thức đó để ưu tiên nhiệm vụ hoặc xây dựng mẫu tùy chỉnh được tối ưu hóa cho khả năng của mô hình.
-
Lặp lại và xác nhận rất quan trọng. Các mô hình đang phát triển nhanh chóng, và các kỹ thuật xây dựng gợi ý cũng vậy. Là một chuyên gia lĩnh vực, bạn có thể có ngữ cảnh hoặc tiêu chí khác cho ứng dụng cụ thể của mình, mà có thể không áp dụng cho cộng đồng rộng lớn hơn. Sử dụng các công cụ và kỹ thuật xây dựng gợi ý để "khởi động" việc xây dựng gợi ý, sau đó lặp lại và xác nhận kết quả bằng trực giác và chuyên môn lĩnh vực của bạn. Ghi lại những hiểu biết của bạn và tạo một cơ sở kiến thức (ví dụ: thư viện gợi ý) có thể được sử dụng làm cơ sở mới bởi người khác, để lặp lại nhanh hơn trong tương lai.
Bây giờ hãy xem các thực hành tốt nhất phổ biến được khuyến nghị bởi OpenAI và các chuyên gia Azure OpenAI.
| Điều gì | Tại sao |
|---|---|
| Đánh giá các mô hình mới nhất. | Các thế hệ mô hình mới có khả năng có các tính năng và chất lượng được cải thiện - nhưng cũng có thể phát sinh chi phí cao hơn. Đánh giá chúng để xem tác động, sau đó đưa ra quyết định di chuyển. |
| Tách biệt hướng dẫn và ngữ cảnh | Kiểm tra xem mô hình/nhà cung cấp của bạn có định nghĩa dấu phân cách để phân biệt rõ ràng giữa hướng dẫn, nội dung chính và nội dung phụ hay không. Điều này có thể giúp mô hình gán trọng số chính xác hơn cho các token. |
| Cụ thể và rõ ràng | Cung cấp nhiều chi tiết hơn về ngữ cảnh mong muốn, kết quả, độ dài, định dạng, phong cách, v.v. Điều này sẽ cải thiện cả chất lượng và tính nhất quán của phản hồi. Ghi lại công thức trong các mẫu có thể tái sử dụng. |
| Mô tả, sử dụng ví dụ | Các mô hình có thể phản hồi tốt hơn với cách tiếp cận "hiển thị và kể". Bắt đầu với cách tiếp cận zero-shot nơi bạn đưa ra một hướng dẫn (nhưng không có ví dụ), sau đó thử few-shot như một sự tinh chỉnh, cung cấp một vài ví dụ về kết quả mong muốn. Sử dụng phép so sánh. |
| Sử dụng gợi ý để khởi động hoàn thành | Hướng nó đến một kết quả mong muốn bằng cách đưa ra một số từ hoặc cụm từ dẫn đầu mà nó có thể sử dụng làm điểm bắt đầu cho phản hồi. |
| Nhấn mạnh | Đôi khi bạn có thể cần lặp lại với mô hình. Đưa ra hướng dẫn trước và sau nội dung chính của bạn, sử dụng một hướng dẫn và một gợi ý, v.v. Lặp lại và xác nhận để xem điều gì hiệu quả. |
| Thứ tự quan trọng | Thứ tự mà bạn trình bày thông tin cho mô hình có thể ảnh hưởng đến kết quả, ngay cả trong các ví dụ học tập, do sự thiên vị gần đây. Thử các tùy chọn khác nhau để xem điều gì hiệu quả nhất. |
| Cho mô hình một "lối thoát" | Đưa cho mô hình một phản hồi hoàn thành dự phòng mà nó có thể cung cấp nếu không thể hoàn thành nhiệm vụ vì bất kỳ lý do nào. Điều này có thể giảm khả năng mô hình tạo ra các phản hồi sai hoặc bịa đặt. |
Như với bất kỳ thực hành tốt nhất nào, hãy nhớ rằng kết quả của bạn có thể khác nhau tùy thuộc vào mô hình, nhiệm vụ và lĩnh vực. Sử dụng những điều này làm điểm khởi đầu, và lặp lại để tìm ra điều gì hiệu quả nhất cho bạn. Liên tục đánh giá lại quy trình xây dựng gợi ý của bạn khi các mô hình và công cụ mới trở nên khả dụng, với trọng tâm là khả năng mở rộng quy trình và chất lượng phản hồi.
Chúc mừng bạn! Bạn đã hoàn thành bài học! Đã đến lúc áp dụng một số khái niệm và kỹ thuật đó vào thực tế với các ví dụ thực tế!
Đối với bài tập của chúng ta, chúng ta sẽ sử dụng một Jupyter Notebook với các bài tập bạn có thể hoàn thành tương tác. Bạn cũng có thể mở rộng Notebook với các ô Markdown và Code của riêng mình để khám phá các ý tưởng và kỹ thuật theo cách của riêng bạn.
- (Khuyến nghị) Khởi chạy GitHub Codespaces
- (Tùy chọn) Clone repo về thiết bị của bạn và sử dụng nó với Docker Desktop
- (Tùy chọn) Mở Notebook với môi trường runtime Notebook mà bạn ưa thích.
- Sao chép tệp
.env.copytrong thư mục gốc của repo thành.envvà điền các giá trịAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTvàAZURE_OPENAI_DEPLOYMENT. Quay lại phần Learning Sandbox để tìm hiểu cách thực hiện.
- Chọn kernel runtime. Nếu sử dụng tùy chọn 1 hoặc 2, chỉ cần chọn kernel Python 3.10.x mặc định được cung cấp bởi dev container.
Bạn đã sẵn sàng để chạy các bài tập. Lưu ý rằng không có câu trả lời đúng hay sai ở đây - chỉ là khám phá các tùy chọn thông qua thử nghiệm và xây dựng trực giác về điều gì hiệu quả cho một mô hình và lĩnh vực ứng dụng cụ thể.
Vì lý do này, không có các đoạn Giải pháp Mã trong bài học này. Thay vào đó, Notebook sẽ có các ô Markdown có tiêu đề "Giải pháp của tôi:" hiển thị một ví dụ kết quả để tham khảo.
Trong số các gợi ý sau đây, gợi ý nào là tốt theo một số thực hành tốt hợp lý?
- Hiển thị cho tôi hình ảnh của một chiếc xe hơi màu đỏ
- Hiển thị cho tôi hình ảnh của một chiếc xe hơi màu đỏ hiệu Volvo và mẫu XC90 đỗ bên vách đá với mặt trời lặn
- Hiển thị cho tôi hình ảnh của một chiếc xe hơi màu đỏ hiệu Volvo và mẫu XC90
A: 2, đây là gợi ý tốt nhất vì nó cung cấp chi tiết về "cái gì" và đi vào cụ thể (không chỉ bất kỳ chiếc xe nào mà là một hiệu và mẫu cụ thể) và nó cũng mô tả bối cảnh tổng thể. 3 là tốt nhất tiếp theo vì nó cũng chứa nhiều mô tả.
Xem liệu bạn có thể tận dụng kỹ thuật "gợi ý" với gợi ý: Hoàn thành câu "Hiển thị cho tôi hình ảnh của một chiếc xe hơi màu đỏ hiệu Volvo và ". Nó phản hồi như thế nào, và bạn sẽ cải thiện nó ra sao?
Muốn tìm hiểu thêm về các khái niệm khác nhau trong xây dựng gợi ý? Hãy truy cập trang học tập tiếp tục để tìm các tài nguyên tuyệt vời khác về chủ đề này.
Hãy tiếp tục đến Bài học 5, nơi chúng ta sẽ xem xét các kỹ thuật gợi ý nâng cao!
Tuyên bố miễn trừ trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.







