Mẫu Prompt
Các mô hình ngôn ngữ sử dụng văn bản làm đầu vào, thường được gọi là "prompt". Trong quá trình phát triển, prompt thường không được nhúng trực tiếp, vì điều này không thuận lợi cho quản lý prompt. Thay vào đó, các mẫu prompt được sử dụng để duy trì prompt, tương tự như các mẫu cho nội dung SMS hoặc email.
Prompt template là gì?
Một mẫu prompt về cơ bản không khác biệt nhiều so với các mẫu email hoặc sms thường sử dụng. Đó là một mẫu chuỗi có thể chứa một tập hợp các tham số mẫu. Giá trị của các tham số mẫu có thể được sử dụng để thay thế các tham số tương ứng trong mẫu.
Một mẫu prompt có thể bao gồm các nội dung sau:
- Hướng dẫn gửi đến mô hình ngôn ngữ lớn (LLM).
- Một tập hợp các ví dụ câu hỏi và trả lời để nhắc nhở AI về định dạng dự kiến khi trả lại yêu cầu.
- Câu hỏi gửi đến mô hình ngôn ngữ.
Tạo mẫu prompt
Bạn có thể sử dụng lớp PromptTemplate
để tạo một prompt đơn giản. Mẫu prompt có thể nhúng bất kỳ số lượng tham số mẫu nào và sau đó định dạng nội dung mẫu bằng giá trị của tham số.
from langchain.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template(
"Hãy kể cho tôi một câu truyện cười về {adjective} và {content}."
)
prompt_template.format(adjective="vui", content="con gà")
Kết quả đầu ra của mẫu:
'Hãy kể cho tôi một câu truyện cười về vui và con gà.'
Mẫu prompt tin nhắn trò chuyện
Các mô hình trò chuyện sử dụng một danh sách các tin nhắn trò chuyện làm đầu vào, và nội dung của những tin nhắn trò chuyện này cũng có thể được quản lý bằng các mẫu prompt. Những tin nhắn trò chuyện này khác biệt so với các chuỗi gốc bởi vì mỗi tin nhắn được liên kết với một "vai trò".
Ví dụ, trong API Trò Chuyện Hoàn Thành của OpenAI, mô hình trò chuyện của OpenAI xác định ba loại vai trò cho các tin nhắn trò chuyện khác nhau: trợ lý, người dùng, hoặc vai trò hệ thống:
- Tin nhắn trợ lý đề cập đến phản hồi của AI.
- Tin nhắn người dùng đề cập đến các tin nhắn được gửi bởi người dùng tới AI.
- Tin nhắn hệ thống thường được sử dụng để miêu tả danh tính của AI.
Ví dụ về việc tạo một mẫu tin nhắn:
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages(
[
("system", "Bạn là một bot AI hữu ích. Tên bạn là {name}."),
("human", "Xin chào, bạn có khỏe không?"),
("ai", "Tôi đang làm tốt, cảm ơn!"),
("human", "{user_input}"),
]
)
tin_nhắn = chat_template.format_messages(name="Bob", user_input="Tên của bạn là gì?")
Một ví dụ khác về định dạng tin nhắn:
from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI
chat_template = ChatPromptTemplate.from_messages(
[
SystemMessage(
content=(
"Bạn là một trợ lý hữu ích sẽ viết lại văn bản của người dùng "
"để nghe vui vẻ hơn."
)
),
HumanMessagePromptTemplate.from_template("{text}"),
]
)
tin_nhắn = chat_template.format_messages(text="Tôi không thích ăn những thứ ngon lành")
print(tin_nhắn)
Thường thì, chúng ta không sử dụng trực tiếp chức năng format_messages
để định dạng nội dung mẫu prompt, mà để khung thành phần Langchain xử lý tự động.