Controlling model output
Kiểm soát Đầu ra với Prefilled Messages và Stop Sequences
Ngoài việc tạo ra những prompts tốt hơn, có hai kỹ thuật mạnh mẽ để kiểm soát đầu ra của Claude: prefilled assistant messages và stop sequences. Những phương pháp này cho bạn quyền kiểm soát chính xác cách Claude phản hồi và khi nào nó dừng tạo văn bản.
Prefilled Assistant Messages
Message prefilling cho phép bạn cung cấp phần đầu của phản hồi Claude, sau đó nó sẽ tiếp tục từ điểm bắt đầu đó. Kỹ thuật này cực kỳ hữu ích để hướng Claude theo một hướng cụ thể.
Cách nó hoạt động: thay vì chỉ gửi tin nhắn người dùng, bạn thêm một assistant message ở cuối danh sách tin nhắn. Claude thấy assistant message này và nghĩ "Tôi đã bắt đầu phản hồi câu hỏi này rồi, vậy tôi nên tiếp tục từ chỗ tôi đã dừng lại."
Ví dụ, nếu bạn hỏi "Trà hay cà phê tốt hơn vào bữa sáng?" không có prefilling, Claude thường đưa ra phản hồi cân bằng đề cập đến cả hai lựa chọn. Nhưng nếu bạn thêm assistant message nói "Cà phê tốt hơn vì", Claude sẽ tiếp tục từ đó và xây dựng lý lẽ cho cà phê.
Điều quan trọng cần hiểu là Claude tiếp tục từ chính xác nơi văn bản prefilled của bạn kết thúc. Nếu bạn viết "Cà phê tốt hơn vì", Claude sẽ không lặp lại văn bản đó - nó sẽ bắt đầu ngay sau "vì" và hoàn thành ý tưởng.
Đây là cấu trúc code:
python
messages = []
add_user_message(messages, "Trà hay cà phê tốt hơn vào bữa sáng?")
add_assistant_message(messages, "Cà phê tốt hơn vì")
answer = chat(messages)
Bạn có thể hướng Claude theo bất kỳ hướng nào bằng kỹ thuật này:
Stop Sequences
Stop sequences buộc Claude kết thúc phản hồi ngay lập tức khi nó tạo ra một chuỗi ký tự cụ thể. Điều này hoàn hảo để kiểm soát độ dài hoặc điểm kết thúc của phản hồi.
Khái niệm này đơn giản: bạn cung cấp danh sách các chuỗi, và ngay khi Claude tạo ra bất kỳ chuỗi nào trong số đó, nó sẽ dừng phản hồi ngay lập tức. Bản thân stop sequence không được bao gồm trong phản hồi cuối cùng.
Ví dụ, nếu bạn yêu cầu Claude "Đếm từ 1 đến 10" với stop sequence là "5", bạn sẽ nhận được:
1, 2, 3, 4,
Quá trình tạo dừng ngay trước "5" vì đó là stop sequence của bạn.
Để triển khai stop sequences, bạn cần sửa đổi hàm chat để chấp nhận tham số stop_sequences:
python
def chat(messages, stop_sequences=[]):
# Thêm stop_sequences vào tham số API call của bạn
Sau đó sử dụng như thế này:
python
messages = []
add_user_message(messages, "Đếm từ 1 đến 10")
answer = chat(messages, stop_sequences=["5"])
Bạn có thể tinh chỉnh chính xác nơi dừng lại. Nếu muốn tránh dấu câu ở cuối, sử dụng stop sequence cụ thể hơn như ", 5" thay vì chỉ "5".
Ứng dụng Thực tế
Những kỹ thuật này đặc biệt hữu ích cho:
Kiểm soát Đầu ra với Prefilled Messages và Stop Sequences
Ngoài việc tạo ra những prompts tốt hơn, có hai kỹ thuật mạnh mẽ để kiểm soát đầu ra của Claude: prefilled assistant messages và stop sequences. Những phương pháp này cho bạn quyền kiểm soát chính xác cách Claude phản hồi và khi nào nó dừng tạo văn bản.
Prefilled Assistant Messages
Message prefilling cho phép bạn cung cấp phần đầu của phản hồi Claude, sau đó nó sẽ tiếp tục từ điểm bắt đầu đó. Kỹ thuật này cực kỳ hữu ích để hướng Claude theo một hướng cụ thể.
Cách nó hoạt động: thay vì chỉ gửi tin nhắn người dùng, bạn thêm một assistant message ở cuối danh sách tin nhắn. Claude thấy assistant message này và nghĩ "Tôi đã bắt đầu phản hồi câu hỏi này rồi, vậy tôi nên tiếp tục từ chỗ tôi đã dừng lại."
Ví dụ, nếu bạn hỏi "Trà hay cà phê tốt hơn vào bữa sáng?" không có prefilling, Claude thường đưa ra phản hồi cân bằng đề cập đến cả hai lựa chọn. Nhưng nếu bạn thêm assistant message nói "Cà phê tốt hơn vì", Claude sẽ tiếp tục từ đó và xây dựng lý lẽ cho cà phê.
Điều quan trọng cần hiểu là Claude tiếp tục từ chính xác nơi văn bản prefilled của bạn kết thúc. Nếu bạn viết "Cà phê tốt hơn vì", Claude sẽ không lặp lại văn bản đó - nó sẽ bắt đầu ngay sau "vì" và hoàn thành ý tưởng.
Đây là cấu trúc code:
python
messages = []
add_user_message(messages, "Trà hay cà phê tốt hơn vào bữa sáng?")
add_assistant_message(messages, "Cà phê tốt hơn vì")
answer = chat(messages)
Bạn có thể hướng Claude theo bất kỳ hướng nào bằng kỹ thuật này:
- Ủng hộ cà phê: "Cà phê tốt hơn vì"
- Ủng hộ trà: "Trà tốt hơn vì"
- Có lập trường đối lập: "Cả hai đều không tốt lắm vì"
Stop Sequences
Stop sequences buộc Claude kết thúc phản hồi ngay lập tức khi nó tạo ra một chuỗi ký tự cụ thể. Điều này hoàn hảo để kiểm soát độ dài hoặc điểm kết thúc của phản hồi.
Khái niệm này đơn giản: bạn cung cấp danh sách các chuỗi, và ngay khi Claude tạo ra bất kỳ chuỗi nào trong số đó, nó sẽ dừng phản hồi ngay lập tức. Bản thân stop sequence không được bao gồm trong phản hồi cuối cùng.
Ví dụ, nếu bạn yêu cầu Claude "Đếm từ 1 đến 10" với stop sequence là "5", bạn sẽ nhận được:
1, 2, 3, 4,
Quá trình tạo dừng ngay trước "5" vì đó là stop sequence của bạn.
Để triển khai stop sequences, bạn cần sửa đổi hàm chat để chấp nhận tham số stop_sequences:
python
def chat(messages, stop_sequences=[]):
# Thêm stop_sequences vào tham số API call của bạn
Sau đó sử dụng như thế này:
python
messages = []
add_user_message(messages, "Đếm từ 1 đến 10")
answer = chat(messages, stop_sequences=["5"])
Bạn có thể tinh chỉnh chính xác nơi dừng lại. Nếu muốn tránh dấu câu ở cuối, sử dụng stop sequence cụ thể hơn như ", 5" thay vì chỉ "5".
Ứng dụng Thực tế
Những kỹ thuật này đặc biệt hữu ích cho:
- Định dạng nhất quán: Sử dụng prefilling để đảm bảo phản hồi luôn bắt đầu với cấu trúc cụ thể
- Kiểm soát độ dài: Sử dụng stop sequences để giới hạn phản hồi tại các điểm dừng tự nhiên
- Phản hồi thiên vị: Khi bạn cần Claude có lập trường cụ thể thay vì trung lập
- Đầu ra có cấu trúc: Kết hợp cả hai kỹ thuật để tạo phản hồi phù hợp với templates cụ thể