PAL (Program-Aided Language Models)
Theo: https://www.promptingguide.ai/techniques/pal
Gao và cộng sự (2022) trình bày một phương pháp sử dụng LLM để đọc các bài toán ngôn ngữ tự nhiên và tạo ra các chương trình như các bước suy luận trung gian. Được đặt tên là mô hình ngôn ngữ hỗ trợ chương trình - PAL (Program-Aided Language Model), phương pháp này khác với phương pháp lời nhắc chuỗi tư duy (CoT) ở chỗ thay vì sử dụng văn bản dạng tự do để tìm ra lời giải, nó chuyển giao bước giải cho một chương trình thực thi như trình thông dịch Python.

Image Source: Gao et al., (2022)
Hãy xem xét một ví dụ sử dụng LangChain và OpenAI GPT-3. Chúng tôi quan tâm đến việc phát triển một ứng dụng đơn giản có khả năng diễn giải câu hỏi được hỏi và đưa ra câu trả lời bằng cách tận dụng trình thông dịch Python.
Cụ thể, chúng tôi quan tâm đến việc tạo ra một chức năng cho phép sử dụng LLM để trả lời các câu hỏi yêu cầu hiểu biết về dữ liệu. Chúng tôi sẽ cung cấp cho LLM một lời nhắc bao gồm một vài ví dụ được áp dụng từ đây.
Đây là những nội dung chúng tôi cần:
import openaifrom datetime import datetimefrom dateutil.relativedelta import relativedeltaimport osfrom langchain.llms import OpenAIfrom dotenv import load_dotenv
Trước tiên chúng ta hãy cấu hình một vài thứ:
load_dotenv()# API configurationopenai.api_key = os.getenv("OPENAI_API_KEY")# for LangChainos.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
Thiết lập phiên bản mô hình:
llm = OpenAI(model_name='text-davinci-003', temperature=0)
Thiết lập lời nhắc + câu hỏi:
câu hỏi = "Hôm nay là ngày 27 tháng 2 năm 2023. Tôi sinh ra cách đây đúng 25 năm. Vậy ngày sinh của tôi là bao nhiêu theo MM/DD/YYYY?"DATE_UNDERSTANDING_PROMPT = """# Hỏi: 36 giờ nữa là năm 2015. Vậy một tuần nữa tính từ hôm nay theo định dạng MM/DD/YYYY là ngày nào?# Nếu 36 giờ nữa là năm 2015, thì hôm nay là 36 giờ trước đó.today = datetime(2015, 1, 1) - relativedelta(hours=36)# Một tuần nữa tính từ hôm nay,one_week_from_today = today + relativedelta(weeks=1)# Câu trả lời được định dạng bằng %m/%d/%Y làone_week_from_today.strftime('%m/%d/%Y')# Hỏi: Ngày đầu tiên của năm 2019 là Thứ Ba, và hôm nay là Thứ Hai đầu tiên của năm 2019. Vậy hôm nay là ngày nào theo định dạng MM/DD/YYYY?# Nếu ngày đầu tiên của năm 2019 là Thứ Ba, và hôm nay là Thứ Hai đầu tiên của 2019, thì hôm nay là 6 ngày sau.today = datetime(2019, 1, 1) + relativedelta(days=6)# Câu trả lời được định dạng bằng %m/%d/%Y làtoday.strftime('%m/%d/%Y')# Hỏi: Buổi hòa nhạc dự kiến diễn ra vào ngày 06/01/1943, nhưng bị hoãn lại một ngày so với hôm nay. 10 ngày trước là ngày nào theo định dạng MM/DD/YYYY?# Nếu buổi hòa nhạc dự kiến diễn ra vào ngày 06/01/1943, nhưng bị hoãn lại một ngày so với hôm nay, thì hôm nay là một ngày sau.today = datetime(1943, 6, 1) + relativedelta(days=1)# 10 ngày trước,ten_days_ago = today - relativedelta(days=10)# Câu trả lời được định dạng bằng %m/%d/%Y là ten_days_ago.strftime('%m/%d/%Y')# Hỏi: Hôm nay là ngày 19/4/1969. Vậy 24 giờ sau đó tính theo MM/DD/YYYY là ngày nào?# Hôm nay là ngày 19/4/1969.today = datetime(1969, 4, 19)# 24 giờ sau,later = today + relativedelta(hours=24)# Câu trả lời được định dạng theo %m/%d/%Y là today.strftime('%m/%d/%Y')# Hỏi: Jane nghĩ hôm nay là ngày 11/3/2002, nhưng thực tế hôm nay là ngày 12/3, tức là muộn hơn 1 ngày. Vậy 24 giờ sau đó tính theo MM/DD/YYYY là ngày nào?# Nếu Jane nghĩ hôm nay là ngày 11/3/2002, nhưng thực tế hôm nay là ngày 12/3, thì hôm nay là 3/12/2002.today = datetime(2002, 3, 12)# 24 giờ sau,later = today + relativedelta(hours=24)# Câu trả lời được định dạng theo %m/%d/%Y là later.strftime('%m/%d/%Y')# Hỏi: Jane sinh vào ngày cuối cùng của tháng 2 năm 2001. Hôm nay là sinh nhật 16 tuổi của cô ấy. Vậy ngày hôm qua là ngày nào theo định dạng MM/DD/YYYY?# Nếu Jane sinh vào ngày cuối cùng của tháng 2 năm 2001 và hôm nay là sinh nhật 16 tuổi của cô ấy, thì hôm nay là 16 năm sau.today = datetime(2001, 2, 28) + relativedelta(years=16)# Hôm qua,yesterday = today - relativedelta(days=1)# Câu trả lời được định dạng theo %m/%d/%Y là ngày hôm qua.strftime('%m/%d/%Y')# Q: {câu hỏi}""".strip() + '\n'llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question))print(llm_out)
Điều này sẽ đưa ra kết quả sau:
# Nếu hôm nay là ngày 27 tháng 2 năm 2023 và tôi sinh ra đúng 25 năm trước, thì tôi đã sinh ra 25 năm trước đó.today = datetime(2023, 2, 27)# Tôi sinh ra 25 năm trước,born = today - relativedelta(years=25)# Câu trả lời được định dạng bằng %m/%d/%Y là born.strftime('%m/%d/%Y')
Nội dung của llm_out là một đoạn mã Python. Dưới đây, lệnh exec được sử dụng để thực thi đoạn mã Python này.
exec(llm_out)print(born)
Điều này sẽ đưa ra kết quả sau: 27/02/1998
Về ‘Kỹ thuật viết lời nhắc’ ………. Phần trước ………. Phần tiếp theo
Tác giả: admin
Ý kiến bạn đọc
Những tin cũ hơn
Trang Web này được thành lập theo Quyết định số 142/QĐ-HH do Chủ tịch Hiệp hội các trường đại học, cao đẳng Việt Nam – AVU&C (Association of Vietnam Universities and Colleges), GS.TS. Trần Hồng Quân ký ngày 16/09/2019, ngay trước thềm của Hội thảo ‘Xây dựng và khai thác tài nguyên giáo dục mở’ do 5...
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Mô hình Ngôn ngữ Hỗ trợ Chương trình (PAL)
Các nội dung về AI trong tài liệu ‘Khung năng lực Tài nguyên Giáo dục Mở cho giảng viên V3.0’
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Lời nhắc Kích thích Định hướng
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Nhắc tích cực
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Kỹ thuật nhắc tự động (APE)
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Suy luận Tự động và Sử dụng Công cụ (ART)
Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Tạo sinh Tăng cường Truy xuất (RAG)
50 công cụ AI tốt nhất cho năm 2025 (Đã thử và kiểm nghiệm)
Các bài toàn văn cho tới hết năm 2024
Các bài trình chiếu trong năm 2024
Các lớp tập huấn thực hành ‘Khai thác tài nguyên giáo dục mở’ tới hết năm 2024
Các tài liệu dịch sang tiếng Việt tới hết năm 2024
Tập huấn thực hành ‘Khai thác tài nguyên giáo dục mở’ cho giáo viên phổ thông, bao gồm cả giáo viên tiểu học và mầm non tới hết năm 2024
Bộ các tài liệu hướng dẫn của UNESCO cho các chính phủ và cơ sở để triển khai Khuyến nghị Tài nguyên Giáo dục Mở
Hướng dẫn thực hành về Giáo dục Mở cho các học giả: Hiện đại hóa giáo dục đại học thông qua các thực hành Giáo dục Mở (dựa trên Khung OpenEdu)
Chứng chỉ Creative Commons cho các nhà giáo dục, thủ thư hàn lâm, và văn hóa mở
Các mô hình bền vững Tài nguyên Giáo dục Mở (TNGDM) - Tổng hợp
ORCID - Quy trình làm việc
Tổng hợp các bài của Nhóm các Nhà cấp vốn Nghiên cứu Mở (ORFG) đã được dịch sang tiếng Việt
Tổng hợp các bài của Liên minh S (cOAlition S) đã được dịch sang tiếng Việt
Europeana - mô hình mẫu về hệ thống liên thông, Dữ liệu Mở (Liên kết) và dữ liệu FAIR của OpenGLAM/Văn hóa Mở
Năm Khoa học Mở & Chuyển đổi sang Khoa học Mở - Tổng hợp các bài liên quan
‘Bộ công cụ Khoa học Mở của UNESCO’ - Các bản dịch sang tiếng Việt
Định nghĩa các khái niệm liên quan tới Khoa học Mở
‘Digcomp 2.2: Khung năng lực số cho công dân - với các ví dụ mới về kiến thức, kỹ năng và thái độ’, EC xuất bản năm 2022
‘ĐÁNH DẤU KHÓA HỌC MỞ VÀ KHAM ĐƯỢC: CÁC THỰC HÀNH TỐT NHẤT VÀ CÁC TRƯỜNG HỢP ĐIỂN HÌNH’ - VÀI THÔNG TIN HỮU ÍCH
Khóa học cơ bản về Dữ liệu Mở trong chương trình học tập điện tử trên Cổng Dữ liệu châu Âu