Kỹ Thuật Tạo Prompt
Bạn không cần phải là nhà khoa học dữ liệu hay kỹ sư máy học - ai cũng có thể viết prompt.
Mục lục
  • Các Nội Dung Chính
Các Nội Dung Chính
Phần Cơ Bản
  • Giới thiệu
  • Kỹ thuật tạo prompt
  • Cấu hình đầu ra LLM
  • Độ dài đầu ra
  • Kiểm soát lấy mẫu
  • Nhiệt độ
  • Top-K và top-P
Kỹ Thuật Prompt
  • Prompting tổng quát / zero shot
  • One-shot & few-shot
  • System, contextual và role prompting
  • Step-back prompting
  • Chain of Thought (CoT)
  • Self-consistency
  • Tree of Thoughts (ToT)
  • ReAct (reason & act)
Ứng Dụng & Thực Hành
  • Tự động hóa kỹ thuật prompt
  • Prompt cho lập trình
  • Prompt đa phương thức
  • Các phương pháp tốt nhất
  • Tài liệu hóa các nỗ lực prompt
  • Tóm tắt
Giới Thiệu
Khi nghĩ về đầu vào và đầu ra của mô hình ngôn ngữ lớn, prompt văn bản (đôi khi kèm theo các phương thức khác như hình ảnh) là đầu vào mà mô hình sử dụng để dự đoán đầu ra cụ thể. Bạn không cần phải là nhà khoa học dữ liệu hay kỹ sư máy học - ai cũng có thể viết prompt. Tuy nhiên, việc tạo prompt hiệu quả nhất có thể phức tạp.
Nhiều khía cạnh của prompt ảnh hưởng đến hiệu quả: mô hình bạn sử dụng, dữ liệu huấn luyện của mô hình, cấu hình mô hình, lựa chọn từ ngữ, phong cách và giọng điệu, cấu trúc và ngữ cảnh đều quan trọng. Do đó, kỹ thuật tạo prompt là một quá trình lặp đi lặp lại. Prompt không đầy đủ có thể dẫn đến phản hồi mơ hồ, không chính xác, và cản trở khả năng cung cấp đầu ra có ý nghĩa của mô hình.
Tương Tác Với Chatbot
Khi bạn trò chuyện với chatbot Gemini, về cơ bản bạn đang viết prompt, tuy nhiên tài liệu này tập trung vào việc viết prompt cho mô hình Gemini trong Vertex AI hoặc bằng cách sử dụng API.
Cấu Hình Mô Hình
Bằng cách prompt mô hình trực tiếp, bạn sẽ có quyền truy cập vào cấu hình như nhiệt độ và các tham số khác để tối ưu hóa kết quả.
Nội Dung Tài Liệu
Tài liệu này thảo luận chi tiết về kỹ thuật tạo prompt, các kỹ thuật khác nhau để giúp bạn bắt đầu và chia sẻ các mẹo và phương pháp tốt nhất.
Kỹ Thuật Tạo Prompt
Hãy nhớ cách LLM hoạt động; đó là một công cụ dự đoán. Mô hình lấy văn bản tuần tự làm đầu vào và sau đó dự đoán token tiếp theo nên là gì, dựa trên dữ liệu mà nó được đào tạo. LLM được vận hành để thực hiện điều này lặp đi lặp lại, thêm token đã dự đoán trước đó vào cuối văn bản tuần tự để dự đoán token tiếp theo.
Thiết Kế Prompt
Kỹ thuật tạo prompt là quá trình thiết kế prompt chất lượng cao để hướng dẫn LLM tạo ra đầu ra chính xác.
Tối Ưu Hóa
Quá trình này liên quan đến việc tinh chỉnh để tìm prompt tốt nhất, tối ưu hóa độ dài prompt, và đánh giá phong cách viết và cấu trúc của prompt.
Ứng Dụng
Prompt có thể được sử dụng cho nhiều nhiệm vụ như tóm tắt văn bản, trích xuất thông tin, hỏi đáp, phân loại văn bản, dịch ngôn ngữ hoặc code, tạo code, và tài liệu code hoặc lập luận.
Lựa Chọn Mô Hình
Khi kỹ thuật tạo prompt, bạn sẽ bắt đầu bằng việc chọn một mô hình. Prompt có thể cần được tối ưu hóa cho mô hình cụ thể của bạn.
Cấu Hình Đầu Ra LLM
Sau khi chọn mô hình, bạn cần xác định cấu hình mô hình. Hầu hết các LLM đều có các tùy chọn cấu hình khác nhau để kiểm soát đầu ra của LLM. Kỹ thuật tạo prompt hiệu quả đòi hỏi phải thiết lập các cấu hình này tối ưu cho nhiệm vụ của bạn.
Độ Dài Đầu Ra
Một cài đặt cấu hình quan trọng là số lượng token để tạo ra trong phản hồi. Việc tạo ra nhiều token hơn đòi hỏi nhiều tính toán hơn từ LLM, dẫn đến tiêu thụ năng lượng cao hơn, thời gian phản hồi có thể chậm hơn và chi phí cao hơn.
Kiểm Soát Lấy Mẫu
LLM không chính thức dự đoán một token duy nhất. Thay vào đó, LLM dự đoán xác suất cho token tiếp theo có thể là gì, với mỗi token trong từ vựng của LLM nhận được một xác suất.
Nhiệt Độ
Nhiệt độ kiểm soát mức độ ngẫu nhiên trong việc lựa chọn token. Nhiệt độ thấp hơn tốt cho các prompt mong đợi phản hồi xác định hơn, trong khi nhiệt độ cao hơn có thể dẫn đến kết quả đa dạng hoặc bất ngờ hơn.
Cân Bằng Nhiệt Độ
Nhiệt độ thấp (0-0.3) tạo ra kết quả nhất quán, ít sáng tạo. Nhiệt độ trung bình (0.3-0.7) cân bằng giữa sáng tạo và nhất quán. Nhiệt độ cao (0.7-1.0) tạo ra kết quả đa dạng, sáng tạo nhưng ít nhất quán hơn.
Kỹ Thuật Prompt
LLM được điều chỉnh để tuân theo hướng dẫn và được đào tạo trên lượng lớn dữ liệu để có thể hiểu prompt và tạo ra câu trả lời. Nhưng LLM không hoàn hảo; văn bản prompt càng rõ ràng, càng tốt cho LLM để dự đoán văn bản tiếp theo có khả năng xảy ra.
Zero-shot Prompting
Kỹ thuật đơn giản nhất, chỉ cung cấp lệnh mà không có ví dụ nào về cách thực hiện nhiệm vụ.
Few-shot Prompting
Cung cấp một số ví dụ trong prompt để LLM hiểu cách thức thực hiện nhiệm vụ.
Chain of Thought
Hướng dẫn LLM giải quyết vấn đề từng bước một, mô phỏng quá trình suy luận.
ReAct Prompting
Kết hợp suy luận và hành động, cho phép LLM suy nghĩ và tương tác với môi trường.
Ngoài ra, các kỹ thuật cụ thể tận dụng cách LLM được đào tạo và cách LLM hoạt động sẽ giúp bạn nhận được kết quả phù hợp từ LLM. Bây giờ chúng ta đã hiểu kỹ thuật tạo prompt là gì và những gì nó đòi hỏi, hãy đi sâu vào một số ví dụ về các kỹ thuật prompt quan trọng nhất.
Prompting Tổng Quát / Zero Shot
Prompt zero-shot là loại prompt đơn giản nhất. Nó chỉ cung cấp mô tả về một nhiệm vụ và một số văn bản để LLM bắt đầu. Đầu vào này có thể là bất cứ thứ gì: một câu hỏi, bắt đầu của một câu chuyện, hoặc hướng dẫn. Tên zero-shot có nghĩa là 'không có ví dụ'.
Ví Dụ Zero-Shot
Hãy sử dụng Vertex AI Studio (cho Ngôn ngữ) trong Vertex AI, cung cấp một sân chơi để kiểm tra prompt. Dưới đây là một ví dụ về prompt zero-shot để phân loại đánh giá phim.
Định Dạng Bảng
Định dạng bảng là một cách tuyệt vời để ghi lại prompt. Prompt của bạn có thể sẽ trải qua nhiều lần lặp trước khi chúng kết thúc trong codebase, vì vậy điều quan trọng là theo dõi công việc kỹ thuật tạo prompt của bạn một cách có kỷ luật, có cấu trúc.
Phân Loại Đánh Giá
Trong ví dụ "Her", prompt zero-shot đơn giản yêu cầu mô hình phân loại đánh giá là TÍCH CỰC, TRUNG LẬP hoặc TIÊU CỰC mà không cung cấp ví dụ trước đó, và mô hình đã chọn đúng "TÍCH CỰC".
Khi zero-shot không hoạt động, bạn có thể cung cấp các minh họa hoặc ví dụ trong prompt, dẫn đến prompting "one-shot" và "few-shot".
One-Shot & Few-Shot
Khi tạo prompt cho mô hình AI, việc cung cấp ví dụ rất hữu ích. Những ví dụ này có thể giúp mô hình hiểu những gì bạn đang yêu cầu. Ví dụ đặc biệt hữu ích khi bạn muốn hướng mô hình đến một cấu trúc hoặc mẫu đầu ra nhất định.
One-Shot Prompt
Cung cấp một ví dụ duy nhất, do đó có tên one-shot. Ý tưởng là mô hình có một ví dụ mà nó có thể bắt chước để hoàn thành nhiệm vụ tốt nhất.
Few-Shot Prompt
Cung cấp nhiều ví dụ cho mô hình. Cách tiếp cận này cho mô hình thấy một mẫu mà nó cần tuân theo. Ý tưởng tương tự như one-shot, nhưng nhiều ví dụ về mẫu mong muốn tăng cơ hội mô hình tuân theo mẫu.
Số Lượng Ví Dụ
Số lượng ví dụ bạn cần cho prompting few-shot phụ thuộc vào một số yếu tố, bao gồm độ phức tạp của nhiệm vụ, chất lượng của các ví dụ, và khả năng của mô hình AI tạo sinh bạn đang sử dụng.
Khi bạn chọn ví dụ cho prompt của mình, hãy sử dụng các ví dụ liên quan đến nhiệm vụ bạn muốn thực hiện. Các ví dụ nên đa dạng, chất lượng cao và được viết tốt. Một lỗi nhỏ có thể làm mô hình bối rối và sẽ dẫn đến đầu ra không mong muốn.
System, Contextual và Role Prompting
System, contextual và role prompting đều là các kỹ thuật được sử dụng để hướng dẫn cách LLM tạo văn bản, nhưng chúng tập trung vào các khía cạnh khác nhau:
System Prompting
Thiết lập ngữ cảnh và mục đích tổng thể cho mô hình ngôn ngữ. Nó xác định 'bức tranh lớn' về những gì mô hình nên làm, như dịch một ngôn ngữ, phân loại đánh giá, v.v.
Contextual Prompting
Cung cấp chi tiết cụ thể hoặc thông tin nền liên quan đến cuộc trò chuyện hoặc nhiệm vụ hiện tại. Nó giúp mô hình hiểu các sắc thái của những gì đang được hỏi và điều chỉnh phản hồi cho phù hợp.
Role Prompting
Gán một nhân vật hoặc danh tính cụ thể cho mô hình ngôn ngữ để áp dụng. Điều này giúp mô hình tạo ra các phản hồi phù hợp với vai trò được gán và kiến thức và hành vi liên quan của nó.
Có thể có sự chồng chéo đáng kể giữa system, contextual, và role prompting. Ví dụ, một prompt gán vai trò cho hệ thống, cũng có thể có ngữ cảnh. Tuy nhiên, mỗi loại prompt phục vụ một mục đích chính khác nhau.
Phân biệt giữa system, contextual, và role prompt cung cấp một khuôn khổ để thiết kế prompt với ý định rõ ràng, cho phép kết hợp linh hoạt và làm cho việc phân tích ảnh hưởng của mỗi loại prompt đến đầu ra của mô hình ngôn ngữ dễ dàng hơn.
System Prompting
System prompt là nơi bạn chỉ định thông tin bổ sung về cách trả về đầu ra. Tên 'system prompt' thực sự có nghĩa là 'cung cấp một nhiệm vụ bổ sung cho hệ thống'.
Ví Dụ System Prompt
Lợi Ích Của System Prompt
System prompt có thể hữu ích để tạo đầu ra đáp ứng các yêu cầu cụ thể. Ví dụ, bạn có thể sử dụng system prompt để tạo đoạn code tương thích với một ngôn ngữ lập trình cụ thể, hoặc bạn có thể sử dụng system prompt để trả về một cấu trúc nhất định.
System prompt cũng có thể rất hữu ích cho an toàn và độc hại. Để kiểm soát đầu ra, chỉ cần thêm một dòng bổ sung vào prompt của bạn như: 'Bạn nên tôn trọng trong câu trả lời của mình.'
Role Prompting
Role prompting là một kỹ thuật trong kỹ thuật tạo prompt liên quan đến việc gán một vai trò cụ thể cho mô hình AI tạo sinh. Điều này có thể giúp mô hình tạo ra đầu ra phù hợp và thông tin hơn, vì mô hình có thể tạo ra phản hồi phù hợp với vai trò cụ thể mà nó đã được gán.
Xác Định Vai Trò
Bạn có thể role prompt một mô hình AI tạo sinh để trở thành biên tập viên sách, giáo viên mẫu giáo, hoặc diễn giả truyền cảm hứng.
Tạo Prompt Cụ Thể
Sau khi mô hình được gán một vai trò, bạn có thể đưa ra các prompt cụ thể cho vai trò đó.
Nhận Phản Hồi Phù Hợp
Mô hình sẽ tạo ra phản hồi phù hợp với vai trò được gán, tăng cường sự phù hợp và hữu ích của đầu ra.
Contextual Prompting
Bằng cách cung cấp contextual prompt, bạn có thể giúp đảm bảo rằng tương tác AI của bạn càng liền mạch và hiệu quả càng tốt. Mô hình sẽ có thể hiểu nhanh hơn yêu cầu của bạn và có thể tạo ra phản hồi chính xác và phù hợp hơn.
Cung Cấp Ngữ Cảnh
Thêm thông tin nền hoặc chi tiết liên quan đến chủ đề
Mô Hình Xử Lý
Mô hình hiểu ngữ cảnh và điều chỉnh phản hồi
Phản Hồi Phù Hợp
Đầu ra được điều chỉnh theo ngữ cảnh cụ thể
Lặp Lại Nếu Cần
Tinh chỉnh ngữ cảnh để cải thiện kết quả
Step-Back Prompting
Step-back prompting là một kỹ thuật để cải thiện hiệu suất bằng cách prompt LLM trước tiên xem xét một câu hỏi tổng quát liên quan đến nhiệm vụ cụ thể, và sau đó đưa câu trả lời cho câu hỏi tổng quát đó vào một prompt tiếp theo cho nhiệm vụ cụ thể.
Đặt câu hỏi tổng quát
Bắt đầu với câu hỏi rộng hơn về chủ đề
Kích hoạt kiến thức nền
Cho phép LLM truy cập kiến thức liên quan
Giải quyết vấn đề cụ thể
Áp dụng kiến thức vào nhiệm vụ ban đầu
Bằng cách xem xét các nguyên tắc rộng hơn và cơ bản, LLM có thể tạo ra phản hồi chính xác và sâu sắc hơn. Step-back prompting khuyến khích LLM suy nghĩ phê phán và áp dụng kiến thức của chúng theo những cách mới và sáng tạo. Nó thay đổi prompt cuối cùng thực hiện nhiệm vụ bằng cách sử dụng nhiều kiến thức hơn trong các tham số của LLM so với khi LLM được prompt trực tiếp.
Chain of Thought (CoT)
Chain of Thought (CoT) prompting là một kỹ thuật để cải thiện khả năng lập luận của LLM bằng cách tạo ra các bước lập luận trung gian. Điều này giúp LLM tạo ra câu trả lời chính xác hơn. Bạn có thể kết hợp nó với few-shot prompting để có kết quả tốt hơn trên các nhiệm vụ phức tạp hơn đòi hỏi lập luận trước khi phản hồi vì đó là một thách thức với chain of thought zero-shot.
Ưu Điểm của CoT
  • Ít nỗ lực nhưng rất hiệu quả
  • Hoạt động tốt với LLM có sẵn
  • Cung cấp khả năng giải thích
  • Cải thiện độ mạnh mẽ khi chuyển giữa các phiên bản LLM khác nhau
Nhược Điểm của CoT
  • Phản hồi của LLM bao gồm lập luận chain of thought, nghĩa là nhiều token đầu ra hơn
  • Dự đoán tốn nhiều tiền hơn
  • Thời gian phản hồi lâu hơn
Chain of thought có thể hữu ích cho nhiều trường hợp sử dụng. Hãy nghĩ đến việc tạo code, để chia nhỏ yêu cầu thành một vài bước, và ánh xạ chúng thành các dòng code cụ thể. Hoặc để tạo dữ liệu tổng hợp khi bạn có một loại hạt giống nào đó. Nói chung, bất kỳ nhiệm vụ nào có thể được giải quyết bằng cách 'nói qua' đều là một ứng cử viên tốt cho chain of thought.
Self-Consistency
Mặc dù các mô hình ngôn ngữ lớn đã cho thấy thành công ấn tượng trong nhiều nhiệm vụ NLP, khả năng lập luận của chúng thường được coi là một hạn chế không thể vượt qua chỉ bằng cách tăng kích thước mô hình. Như chúng ta đã học trong phần Chain of Thought prompting trước đó, mô hình có thể được prompt để tạo ra các bước lập luận như một con người giải quyết vấn đề.
Tạo Đường Đi Lập Luận Đa Dạng
LLM được cung cấp cùng một prompt nhiều lần với nhiệt độ cao để tạo ra các đường đi lập luận khác nhau.
Trích Xuất Câu Trả Lời
Trích xuất câu trả lời từ mỗi phản hồi được tạo ra.
Chọn Câu Trả Lời Phổ Biến Nhất
Chọn câu trả lời xuất hiện nhiều nhất từ tất cả các lần chạy.
Self-consistency kết hợp lấy mẫu và bỏ phiếu đa số để tạo ra các đường đi lập luận đa dạng và chọn câu trả lời nhất quán nhất. Nó cải thiện độ chính xác và sự mạch lạc của các phản hồi được tạo ra bởi LLM. Self-consistency cung cấp một xác suất giả về khả năng một câu trả lời là chính xác, nhưng rõ ràng có chi phí cao.
Tree of Thoughts (ToT)
Bây giờ chúng ta đã quen với chain of thought và self-consistency prompting, hãy xem xét Tree of Thoughts (ToT). Nó tổng quát hóa khái niệm của CoT prompting vì nó cho phép LLM khám phá nhiều đường đi lập luận khác nhau cùng một lúc, thay vì chỉ theo một chuỗi suy nghĩ tuyến tính duy nhất.
Cách tiếp cận này làm cho ToT đặc biệt phù hợp cho các nhiệm vụ phức tạp đòi hỏi khám phá. Nó hoạt động bằng cách duy trì một cây suy nghĩ, nơi mỗi suy nghĩ đại diện cho một chuỗi ngôn ngữ mạch lạc đóng vai trò như một bước trung gian hướng tới việc giải quyết vấn đề. Sau đó, mô hình có thể khám phá các đường đi lập luận khác nhau bằng cách phân nhánh từ các nút khác nhau trong cây.
Khám Phá Đa Dạng
ToT cho phép mô hình khám phá nhiều đường đi lập luận khác nhau, tăng khả năng tìm ra giải pháp tối ưu.
Đánh Giá Từng Bước
Mô hình có thể đánh giá tiến độ tại mỗi nút và quyết định nhánh nào để khám phá tiếp theo.
Giải Quyết Vấn Đề Phức Tạp
Đặc biệt hiệu quả cho các vấn đề đòi hỏi lập kế hoạch, suy luận và khám phá nhiều khả năng.
ReAct (Reason & Act)
Reason and act (ReAct) prompting là một mô hình cho phép LLM giải quyết các nhiệm vụ phức tạp bằng cách kết hợp lập luận ngôn ngữ tự nhiên với các công cụ bên ngoài (tìm kiếm, trình thông dịch code, v.v.) cho phép LLM thực hiện một số hành động, chẳng hạn như tương tác với các API bên ngoài để truy xuất thông tin, là bước đầu tiên hướng tới mô hình hóa tác nhân.
Lập Luận
LLM suy nghĩ về vấn đề và tạo ra kế hoạch hành động
Hành Động
Thực hiện các hành động trong kế hoạch và quan sát kết quả
Quan Sát
Thu thập thông tin từ môi trường hoặc công cụ
Cập Nhật
Sử dụng quan sát để cập nhật lập luận và tạo kế hoạch mới
ReAct bắt chước cách con người hoạt động trong thế giới thực, khi chúng ta lập luận bằng lời nói và có thể thực hiện hành động để có được thông tin. ReAct hoạt động tốt so với các cách tiếp cận kỹ thuật tạo prompt khác trong nhiều lĩnh vực.
Để thấy điều này trong hành động, bạn cần viết một số code. Bạn có thể sử dụng framework langchain cho Python, cùng với VertexAI (google-cloud-aiplatform) và các gói google-search-results pip. Để chạy mẫu này, bạn phải tạo khóa API SerpAPI (miễn phí) từ serpapi.com và đặt biến môi trường SERPAPI_API_KEY.
Automatic Prompt Engineering
Ở thời điểm này, bạn có thể nhận ra rằng việc viết prompt có thể phức tạp. Sẽ không tuyệt vời nếu tự động hóa điều này (viết một prompt để viết prompt) sao? Vâng, có một phương pháp: Automatic Prompt Engineering (APE). Phương pháp này không chỉ giảm bớt nhu cầu đầu vào của con người mà còn nâng cao hiệu suất của mô hình trong nhiều nhiệm vụ.
Tạo Prompt Ban Đầu
Viết prompt để tạo ra các biến thể đầu ra. Ví dụ, sử dụng gemini-pro để tạo 10 hướng dẫn cho một cửa hàng áo phông.
Đánh Giá Ứng Viên
Đánh giá tất cả các ứng viên hướng dẫn bằng cách chấm điểm các ứng viên dựa trên một số liệu đã chọn, như BLEU hoặc ROUGE.
Chọn Prompt Tốt Nhất
Chọn ứng viên hướng dẫn có điểm đánh giá cao nhất. Ứng viên này sẽ là prompt cuối cùng bạn có thể sử dụng trong ứng dụng phần mềm hoặc chatbot của mình.
Code Prompting
Gemini tập trung chủ yếu vào prompt dựa trên văn bản, bao gồm cả việc viết prompt để trả về code. Hãy đến Vertex AI Studio và kiểm tra các prompt này để xem một số ví dụ về code.
Viết code
Gemini có thể viết code cho nhiều ngôn ngữ lập trình khác nhau
Tự động hóa
Tạo code để tự động hóa các tác vụ lặp đi lặp lại
Gỡ lỗi
Nhận trợ giúp để tìm và sửa lỗi trong code của bạn
Gemini có thể giúp bạn với việc viết code trong bất kỳ ngôn ngữ lập trình nào. Là một nhà phát triển, điều này có thể giúp bạn đẩy nhanh quá trình viết code. Bạn có thể viết prompt trong chatbot Gemini công khai, hoặc nếu bạn quan tâm hơn về bảo mật, bạn có thể viết các prompt này trong tài khoản Google Cloud của bạn và mở Vertex AI Studio.
Prompt Cho Việc Viết Code
Gemini cũng có thể là một nhà phát triển và giúp bạn viết code trong bất kỳ ngôn ngữ lập trình nào. Là một nhà phát triển, điều này có thể giúp bạn đẩy nhanh quá trình viết code.
Tự động hóa công việc
Gemini có thể giúp bạn viết code để tự động hóa các tác vụ lặp đi lặp lại như đổi tên hàng loạt tệp.
Viết code Bash
Gemini hỗ trợ nhiều ngôn ngữ lập trình, bao gồm cả Bash để tạo script tự động hóa.
Code có chú thích
Gemini tạo ra code có chú thích rõ ràng, giúp bạn hiểu từng phần của script.
Hãy tưởng tượng một thư mục trên máy của bạn với hàng trăm tệp cần được đổi tên. Đổi tên từng tệp sẽ mất rất nhiều thời gian của bạn. Bạn biết một chút Bash và có thể viết một script để tự động hóa điều này, nhưng điều đó cũng có thể mất một thời gian. Vì vậy, hãy viết một prompt.
Đó có vẻ như code tốt - nó thậm chí còn được ghi chú! Tuy nhiên, vì LLM không thể lập luận và lặp lại dữ liệu đào tạo, điều cần thiết là đọc và kiểm tra code của bạn trước.
Prompt Cho Việc Giải Thích Code
Là một nhà phát triển khi bạn làm việc trong nhóm, bạn phải đọc code của người khác. Gemini cũng có thể giúp bạn với điều này. Hãy lấy đầu ra code từ phần trước, xóa các nhận xét và yêu cầu mô hình ngôn ngữ lớn giải thích những gì đang xảy ra.
Tên
1_bash_explain_the_code
Mục tiêu
Viết một prompt để giải thích code Bash
Mô hình
gemini-pro
Nhiệt độ
0.1
Prompt
Giải thích cho tôi code Bash dưới đây:
Prompt Cho Việc Dịch Code
Code bash từ phần trước có vẻ hoạt động tốt. Tuy nhiên, script này có thể thực sự tái sử dụng khi nó nhắc tôi về tên tệp, lý tưởng là nó nên hoạt động như một ứng dụng riêng biệt với UI. Như một điểm khởi đầu, Python sẽ là ngôn ngữ tốt hơn cho một ứng dụng (web) so với Bash. LLM có thể giúp dịch code từ ngôn ngữ này sang ngôn ngữ khác.
1_python_rename_files
Mục tiêu: Viết một prompt để dịch code Bash sang Python
Mô hình: gemini-pro
Nhiệt độ: 0.1
Prompt
Dịch code Bash dưới đây sang một đoạn Python.
```bash
#!/bin/bash
echo "Nhập tên thư mục: "
read folder_name
if [ ! -d "$folder_name" ]; then
echo "Thư mục không tồn tại."
exit 1
fi
files=( "$folder_name"/* )
for file in "${files[@]}"; do
new_file_name="draft_$(basename "$file")"
mv "$file" "$new_file_name"
done
echo "Các tệp đã được đổi tên thành công."
Đầu ra
```python
import os
import shutil
# Lấy tên thư mục từ người dùng
folder_name = input("Nhập tên thư mục: ")
# Kiểm tra xem thư mục có tồn tại không
if not os.path.isdir(folder_name):
print("Thư mục không tồn tại.")
exit(1)
# Lấy danh sách tất cả các tệp trong thư mục
files = os.listdir(folder_name)
# Lặp qua các tệp
for file in files:
# Tạo tên tệp mới với tiền tố "draft_"
new_file_name = f"draft_{file}"
# Di chuyển tệp đến tên mới
shutil.move(os.path.join(folder_name, file),
os.path.join(folder_name, new_file_name))
# In thông báo thành công
print("Các tệp đã được đổi tên thành công.")
```
Đọc và xem lại code. Sao chép đầu ra từ prompt và dán nó vào một tệp mới: file_renamer.py. Kiểm tra code bằng cách mở cửa sổ Terminal và thực thi lệnh sau python file_renamer.py.
LƯU Ý: Khi prompt cho code (Python) trong Language Studio trong Vertex AI, bạn sẽ phải nhấp vào nút 'Markdown'. Nếu không, bạn sẽ nhận được văn bản thuần túy thiếu thụt lề đúng của các dòng, điều này quan trọng để chạy code Python.
Prompt Cho Việc Gỡ Lỗi và Xem Xét Code
Hãy viết thủ công một số chỉnh sửa cho code từ phần trước. Nó nên nhắc người dùng về tiền tố tên tệp và viết tiền tố này bằng chữ in hoa. Nhưng thật không may, nó bây giờ trả về lỗi Python!
Code Bị Lỗi
```python
import os
import shutil
folder_name = input("Nhập tên thư mục: ")
prefix = input("Nhập chuỗi để thêm vào trước tên tệp: ")
text = toUpperCase(prefix)
if not os.path.isdir(folder_name):
print("Thư mục không tồn tại.")
exit(1)
files = os.listdir(folder_name)
for file in files:
new_filename = f"{text}_{file}"
shutil.move(os.path.join(folder_name, file),
os.path.joi(folder_name, new_file_name))
print("Các tệp đã được đổi tên thành công.")
```
Thông Báo Lỗi
```
Code Python dưới đây gây ra lỗi:
Traceback (most recent call last):
File "/Users/leeboonstra/Documents/test_folder/rename_files.py", line 7,
in
text = toUpperCase(prefix)
NameError: name 'toUpperCase' is not defined
```
Về Prompting Đa Phương Thức
Prompting cho code vẫn sử dụng cùng một mô hình ngôn ngữ lớn thông thường. Prompting đa phương thức là một mối quan tâm riêng biệt, nó đề cập đến một kỹ thuật mà bạn sử dụng nhiều định dạng đầu vào để hướng dẫn một mô hình ngôn ngữ lớn, thay vì chỉ dựa vào văn bản.
Văn Bản
Prompt truyền thống dựa trên văn bản
Hình Ảnh
Hình ảnh có thể cung cấp ngữ cảnh trực quan
Âm Thanh
Đầu vào âm thanh cho các nhiệm vụ liên quan đến âm thanh
Code
Đoạn code để phân tích hoặc sửa đổi
Video
Nội dung video cho phân tích hình ảnh động
Điều này có thể bao gồm kết hợp văn bản, hình ảnh, âm thanh, code, hoặc thậm chí các định dạng khác, tùy thuộc vào khả năng của mô hình và nhiệm vụ cần thực hiện. Prompting đa phương thức cho phép tương tác phong phú hơn và có thể cải thiện hiệu suất cho các nhiệm vụ cần thông tin từ nhiều nguồn.
Phương Pháp Tốt Nhất
Tìm prompt phù hợp đòi hỏi sự tinh chỉnh. Language Studio trong Vertex AI là một nơi hoàn hảo để chơi với prompt của bạn, với khả năng kiểm tra các mô hình khác nhau.
Cung Cấp Ví Dụ
Phương pháp tốt nhất quan trọng nhất là cung cấp ví dụ (one shot / few shot) trong prompt. Điều này rất hiệu quả vì nó hoạt động như một công cụ giảng dạy mạnh mẽ.
Thiết Kế Đơn Giản
Prompt nên ngắn gọn, rõ ràng và dễ hiểu cho cả bạn và mô hình. Nếu nó đã gây nhầm lẫn cho bạn, nó có thể cũng sẽ gây nhầm lẫn cho mô hình.
Cụ Thể Về Đầu Ra
Hãy cụ thể về đầu ra mong muốn. Một hướng dẫn ngắn gọn có thể không hướng dẫn LLM đủ hoặc có thể quá chung chung.
Sử Dụng Hướng Dẫn Hơn Là Ràng Buộc
Tập trung vào hướng dẫn tích cực trong prompting có thể hiệu quả hơn là dựa nhiều vào ràng buộc.
Sử dụng các phương pháp tốt nhất này để trở thành chuyên gia trong kỹ thuật tạo prompt. Hãy nhớ rằng kỹ thuật tạo prompt là một quá trình lặp đi lặp lại - tạo và kiểm tra các prompt khác nhau, phân tích kết quả, và tinh chỉnh cho đến khi bạn đạt được đầu ra mong muốn.
Kiểm Soát Độ Dài Token Tối Đa
Để kiểm soát độ dài của phản hồi LLM được tạo ra, bạn có thể đặt giới hạn token tối đa trong cấu hình hoặc yêu cầu rõ ràng một độ dài cụ thể trong prompt của bạn.
Cấu Hình Mô Hình
Hầu hết các API LLM cho phép bạn đặt một tham số max_tokens hoặc tương tự. Điều này giới hạn số lượng token mà mô hình sẽ tạo ra trong phản hồi của nó.
Ví dụ, trong Vertex AI, bạn có thể đặt tham số max_output_tokens khi gọi API.
Hướng Dẫn Trong Prompt
Bạn cũng có thể chỉ định độ dài mong muốn trực tiếp trong prompt của mình. Điều này có thể được thực hiện bằng cách yêu cầu một số lượng từ, câu, đoạn văn hoặc ký tự cụ thể.
Ví dụ: "Giải thích vật lý lượng tử trong một thông điệp có độ dài tweet."
Tối Ưu Hóa Chi Phí
Tạo ra ít token hơn thường ít tốn kém hơn. Việc kiểm soát độ dài token giúp quản lý chi phí sử dụng API hiệu quả.
Thời Gian Phản Hồi
Phản hồi ngắn hơn có thể được tạo ra nhanh hơn, cải thiện trải nghiệm người dùng và hiệu suất ứng dụng.
Tập Trung và Định Dạng
Giới hạn độ dài khuyến khích mô hình tập trung vào thông tin quan trọng nhất và đảm bảo phản hồi phù hợp với yêu cầu giao diện người dùng.
Sử Dụng Biến Trong Prompt
Để tái sử dụng prompt và làm cho nó năng động hơn, hãy sử dụng biến trong prompt, có thể được thay đổi cho các đầu vào khác nhau. Biến có thể tiết kiệm thời gian và công sức bằng cách cho phép bạn tránh lặp lại chính mình.
Lợi Ích Của Biến
Nếu bạn cần sử dụng cùng một thông tin trong nhiều prompt, bạn có thể lưu trữ nó trong một biến và sau đó tham chiếu đến biến đó trong mỗi prompt.
Tích Hợp Ứng Dụng
Điều này có ý nghĩa khi tích hợp prompt vào ứng dụng của riêng bạn, cho phép bạn tạo ra prompt động dựa trên đầu vào người dùng hoặc dữ liệu hệ thống.
Tùy Chỉnh Dễ Dàng
Biến cho phép bạn nhanh chóng điều chỉnh prompt cho các tình huống hoặc người dùng khác nhau mà không cần viết lại toàn bộ prompt.
Thử Nghiệm Với Định Dạng Đầu Vào và Phong Cách Viết
Các mô hình, cấu hình mô hình, định dạng prompt, lựa chọn từ ngữ và gửi đi khác nhau có thể mang lại kết quả khác nhau. Do đó, điều quan trọng là thử nghiệm với các thuộc tính prompt như phong cách, lựa chọn từ ngữ và loại prompt (zero shot, few shot, system prompt).
Câu Hỏi
Sega Dreamcast là gì và tại sao nó là một máy console cách mạng như vậy?
Tuyên Bố
Sega Dreamcast là một máy console trò chơi điện tử thế hệ thứ sáu được phát hành bởi Sega vào năm 1999. Nó...
Hướng Dẫn
Viết một đoạn văn mô tả máy console Sega Dreamcast và giải thích tại sao nó lại cách mạng như vậy.
Mỗi cách tiếp cận này có thể dẫn đến phản hồi khác nhau từ mô hình. Câu hỏi có thể tạo ra một câu trả lời thông tin, tuyên bố có thể khiến mô hình tiếp tục mô tả, và hướng dẫn cung cấp hướng dẫn rõ ràng về định dạng và nội dung.
Thử nghiệm với các phong cách viết khác nhau cũng có thể ảnh hưởng đến kết quả. Một số phong cách bao gồm: Đối đầu, Mô tả, Trực tiếp, Trang trọng, Hài hước, Có ảnh hưởng, Không trang trọng, Truyền cảm hứng, Thuyết phục.
Đối Với Few-Shot Prompting Với Nhiệm Vụ Phân Loại, Trộn Các Lớp
Nói chung, thứ tự của các ví dụ few-shots của bạn không nên quan trọng lắm. Tuy nhiên, khi thực hiện các nhiệm vụ phân loại, hãy đảm bảo bạn trộn các lớp phản hồi có thể có trong các ví dụ few shot.
Trộn Các Lớp
Đảm bảo rằng các ví dụ của bạn bao gồm nhiều lớp khác nhau và chúng được trình bày theo thứ tự ngẫu nhiên, không theo một mẫu cụ thể.
Tránh Overfitting
Điều này là vì bạn có thể overfitting với thứ tự cụ thể của các ví dụ. Bằng cách trộn các lớp phản hồi có thể có, bạn có thể đảm bảo rằng mô hình đang học để xác định các tính năng chính của mỗi lớp.
Bắt Đầu Với 6 Ví Dụ
Một quy tắc chung là bắt đầu với 6 ví dụ few shot và bắt đầu kiểm tra độ chính xác từ đó.
Bằng cách trộn các lớp, bạn giúp mô hình tập trung vào các đặc điểm thực sự của mỗi lớp thay vì chỉ ghi nhớ thứ tự của các ví dụ. Điều này sẽ dẫn đến hiệu suất mạnh mẽ và tổng quát hóa hơn trên dữ liệu chưa thấy.
Thích Ứng Với Cập Nhật Mô Hình
Điều quan trọng là bạn phải nắm bắt các thay đổi kiến trúc mô hình, dữ liệu được thêm vào và khả năng. Hãy thử các phiên bản mô hình mới hơn và điều chỉnh prompt của bạn để tận dụng tốt hơn các tính năng mô hình mới.
Theo Dõi Cập Nhật
Theo dõi các bản phát hành mới của mô hình và tài liệu liên quan
Kiểm Tra Lại Prompt
Kiểm tra prompt hiện có với các phiên bản mô hình mới
Điều Chỉnh Khi Cần
Cập nhật prompt để tận dụng các tính năng hoặc khả năng mới
Ghi Lại Thay Đổi
Duy trì tài liệu về các phiên bản prompt và hiệu suất của chúng
Các công cụ như Vertex AI Studio rất tuyệt vời để lưu trữ, kiểm tra và ghi lại các phiên bản khác nhau của prompt của bạn. Khi mô hình phát triển, prompt của bạn cũng nên vậy. Điều này đảm bảo rằng bạn luôn tận dụng tối đa khả năng của mô hình và nhận được kết quả tốt nhất có thể.
Thử Nghiệm Với Định Dạng Đầu Ra
Ngoài định dạng đầu vào prompt, hãy xem xét thử nghiệm với định dạng đầu ra. Đối với các nhiệm vụ không sáng tạo như trích xuất, chọn, phân tích cú pháp, sắp xếp, xếp hạng hoặc phân loại dữ liệu, hãy thử có đầu ra của bạn được trả về ở định dạng có cấu trúc như JSON hoặc XML.
Lợi Ích Của JSON
  • Luôn trả về cùng một kiểu
  • Tập trung vào dữ liệu bạn muốn nhận
  • Ít cơ hội cho hallucination
  • Làm cho nó nhận thức về mối quan hệ
  • Bạn nhận được các kiểu dữ liệu
  • Bạn có thể sắp xếp nó
Ví Dụ Đầu Ra JSON
```json
{
"movie_reviews": [
{
"sentiment": "NEGATIVE",
"name": "Her"
}
]
}
```
Bằng cách prompt cho một định dạng JSON, nó buộc mô hình tạo ra một cấu trúc và giới hạn hallucination. Trong một ứng dụng thế giới thực, bạn có thể trả về dữ liệu theo thứ tự đã sắp xếp, rất tiện khi làm việc với các đối tượng datetime.
Sửa Chữa JSON
Mặc dù việc trả về dữ liệu ở định dạng JSON mang lại nhiều lợi thế, nhưng nó không phải là không có nhược điểm. Bản chất có cấu trúc của JSON, trong khi có lợi cho việc phân tích cú pháp và sử dụng trong các ứng dụng, đòi hỏi đáng kể nhiều token hơn văn bản thuần túy, dẫn đến thời gian xử lý tăng và chi phí cao hơn.
Thách Thức Với JSON
Hơn nữa, tính dài dòng của JSON có thể dễ dàng tiêu thụ toàn bộ cửa sổ đầu ra, trở nên đặc biệt có vấn đề khi việc tạo bị cắt đột ngột do giới hạn token. Việc cắt ngắn này thường dẫn đến JSON không hợp lệ, thiếu các dấu ngoặc nhọn hoặc dấu ngoặc vuông đóng quan trọng, làm cho đầu ra không thể sử dụng được.
Giải Pháp: Thư Viện Sửa Chữa
May mắn thay, các công cụ như thư viện json-repair (có sẵn trên PyPI) có thể vô giá trong những tình huống này. Thư viện này thông minh cố gắng tự động sửa các đối tượng JSON không đầy đủ hoặc sai định dạng, làm cho nó trở thành một đồng minh quan trọng khi làm việc với JSON được tạo ra bởi LLM, đặc biệt là khi đối phó với các vấn đề cắt ngắn tiềm ẩn.
Làm Việc Với Schemas
Sử dụng JSON có cấu trúc làm đầu ra là một giải pháp tuyệt vời, như chúng ta đã thấy nhiều lần trong tài liệu này. Nhưng còn đầu vào thì sao? Trong khi JSON rất xuất sắc để cấu trúc đầu ra mà LLM tạo ra, nó cũng có thể cực kỳ hữu ích để cấu trúc đầu vào bạn cung cấp.
JSON Schema
Đây là nơi JSON Schemas phát huy tác dụng. Một JSON Schema xác định cấu trúc và kiểu dữ liệu mong đợi của đầu vào JSON của bạn. Bằng cách cung cấp một schema, bạn cung cấp cho LLM một bản thiết kế rõ ràng về dữ liệu mà nó nên mong đợi, giúp nó tập trung sự chú ý vào thông tin liên quan và giảm nguy cơ hiểu sai đầu vào.
Ví Dụ Schema
```json
{
"type": "object",
"properties": {
"name": { "type": "string", "description": "Tên sản phẩm" },
"category": { "type": "string", "description": "Danh mục sản phẩm" },
"price": { "type": "number", "format": "float", "description": "Giá sản phẩm" },
"features": {
"type": "array",
"items": { "type": "string" },
"description": "Các tính năng chính của sản phẩm"
},
"release_date": { "type": "string", "format": "date", "description": "Ngày phát hành sản phẩm"}
}
}
```
Hơn nữa, schemas có thể giúp thiết lập mối quan hệ giữa các phần dữ liệu khác nhau và thậm chí làm cho LLM "nhận thức về thời gian" bằng cách bao gồm các trường ngày hoặc dấu thời gian với các định dạng cụ thể. Bằng cách tiền xử lý dữ liệu của bạn và thay vì cung cấp tài liệu đầy đủ chỉ cung cấp cả schema và dữ liệu, bạn cung cấp cho LLM một hiểu biết rõ ràng về các thuộc tính, làm cho nó có khả năng tạo ra mô tả chính xác và phù hợp hơn.
Thử Nghiệm Cùng Với Các Kỹ Sư Prompt Khác
Nếu bạn đang trong tình huống phải cố gắng nghĩ ra một prompt tốt, bạn có thể muốn tìm nhiều người để thử. Khi mọi người tuân theo các phương pháp tốt nhất (như được liệt kê trong chương này), bạn sẽ thấy sự khác biệt về hiệu suất giữa tất cả các nỗ lực prompt khác nhau.
Cộng Tác Đa Dạng
Làm việc với các kỹ sư prompt có nền tảng, kỹ năng và quan điểm khác nhau có thể mang lại nhiều cách tiếp cận sáng tạo và hiệu quả hơn.
So Sánh Kết Quả
Khi nhiều người tạo prompt cho cùng một nhiệm vụ, bạn có thể so sánh kết quả và xác định phương pháp nào hoạt động tốt nhất cho trường hợp sử dụng cụ thể của bạn.
Học Hỏi Lẫn Nhau
Mỗi kỹ sư prompt có thể có kỹ thuật và chiến lược riêng. Làm việc cùng nhau cho phép chia sẻ kiến thức và cải thiện kỹ năng của tất cả mọi người.
Phương Pháp Tốt Nhất Cho CoT
Đối với prompting CoT, đặt câu trả lời sau lập luận là bắt buộc vì việc tạo ra lập luận thay đổi các token mà mô hình nhận được khi nó dự đoán câu trả lời cuối cùng.
Trích Xuất Câu Trả Lời Cuối Cùng
Với CoT và self-consistency, bạn cần có khả năng trích xuất câu trả lời cuối cùng từ prompt của mình, tách biệt với lập luận.
Đặt Nhiệt Độ Là 0
Prompting Chain of thought dựa trên giải code tham lam, dự đoán từ tiếp theo trong một chuỗi dựa trên xác suất cao nhất được gán bởi mô hình ngôn ngữ. Nói chung, khi sử dụng lập luận để đưa ra câu trả lời cuối cùng, có khả năng chỉ có một câu trả lời đúng duy nhất. Do đó, nhiệt độ nên luôn được đặt là 0.
Tài Liệu Hóa Các Nỗ Lực Prompt
Mẹo cuối cùng đã được đề cập trước đó trong chương này, nhưng chúng tôi không thể nhấn mạnh đủ tầm quan trọng của nó: tài liệu hóa đầy đủ các nỗ lực prompt của bạn để bạn có thể học hỏi theo thời gian những gì đã diễn ra tốt và những gì không.
Đầu ra prompt có thể khác nhau giữa các mô hình, giữa các cài đặt lấy mẫu, và thậm chí giữa các phiên bản khác nhau của cùng một mô hình. Hơn nữa, ngay cả giữa các prompt giống hệt nhau đến cùng một mô hình, sự khác biệt nhỏ trong định dạng câu đầu ra và lựa chọn từ ngữ có thể xảy ra.
Mẫu Tài Liệu Prompt
  • Tên: [tên và phiên bản của prompt của bạn]
  • Mục tiêu: [Giải thích một câu về mục tiêu của nỗ lực này]
  • Mô hình: [tên và phiên bản của mô hình được sử dụng]
  • Nhiệt độ: [giá trị giữa 0 - 1]
  • Giới hạn Token: [số]
  • Top-K: [số]
  • Top-P: [số]
  • Prompt: [Viết tất cả prompt đầy đủ]
  • Đầu ra: [Viết ra đầu ra hoặc nhiều đầu ra]
Tóm Tắt
Tài liệu này thảo luận về kỹ thuật tạo prompt. Chúng ta đã học các kỹ thuật prompt khác nhau, chẳng hạn như:
  • Zero prompting
  • Few shot prompting
  • System prompting
  • Role prompting
  • Contextual prompting
  • Step-back prompting
  • Chain of thought
  • Self consistency
  • Tree of thoughts
  • ReAct
Chúng ta thậm chí đã xem xét các cách bạn có thể tự động hóa prompt của mình. Tài liệu sau đó thảo luận về các thách thức của AI tạo sinh như các vấn đề có thể xảy ra khi prompt của bạn không đủ. Chúng tôi kết thúc với các phương pháp tốt nhất về cách trở thành một kỹ sư prompt tốt hơn.
Kỹ Thuật Prompt
Các phương pháp khác nhau để tạo prompt hiệu quả
Phương Pháp Tốt Nhất
Hướng dẫn để cải thiện kết quả prompt
Ứng Dụng
Lĩnh vực sử dụng kỹ thuật tạo prompt
Kỹ thuật tạo prompt là một quá trình lặp đi lặp lại. Tạo và kiểm tra các prompt khác nhau, phân tích và ghi lại kết quả. Tinh chỉnh prompt của bạn dựa trên hiệu suất của mô hình. Tiếp tục thử nghiệm cho đến khi bạn đạt được đầu ra mong muốn.