Bỏ qua đến nội dung chính

Dữ liệu có cấu trúc

📖 Nội dung bài học

Bật/Tắt/ hoặc ?

Tóm tắt

Khi bạn cần Claude tạo dữ liệu có cấu trúc như JSON, mã Python hoặc danh sách gạch đầu dòng, bạn thường gặp một vấn đề phổ biến: Claude muốn hữu ích và thêm văn bản giải thích xung quanh nội dung của bạn. Mặc dù điều này thường rất tốt, đôi khi bạn chỉ cần dữ liệu thô mà không có gì khác.

Hãy xem xét việc xây dựng một ứng dụng web tạo các quy tắc AWS EventBridge. Người dùng nhập mô tả, nhấp vào tạo và mong đợi thấy JSON sạch mà họ có thể sao chép và sử dụng ngay lập tức. Nếu Claude trả về JSON được bao bọc trong các khối mã markdown với văn bản giải thích, người dùng không thể chỉ sao chép toàn bộ phản hồi - họ phải tự chọn chỉ phần JSON.

Vấn đề với các phản hồi mặc định

Theo mặc định, khi bạn yêu cầu Claude tạo JSON, bạn có thể nhận được thứ gì đó như thế này:

```json
{
  "source": ["aws.ec2"],
  "detail-type": ["EC2 Instance State-change Notification"],
  "detail": {
    "state": ["running"]
  }
}
```

Quy tắc này nắm bắt các thay đổi trạng thái phiên bản EC2 khi các phiên bản bắt đầu chạy.

JSON là chính xác, nhưng nó được bao bọc trong định dạng markdown và bao gồm văn bản giải thích. Đối với một ứng dụng web nơi người dùng cần sao chép JSON thô, điều này tạo ra sự cản trở trong trải nghiệm người dùng.

Giải pháp: Tiền điền tin nhắn trợ lý + Chuỗi dừng

Bạn có thể kết hợp tiền điền tin nhắn trợ lý với chuỗi dừng để nhận chính xác nội dung bạn muốn. Cách thực hiện như sau:

Tin nhắn user: yêu cầu JSON

Prefill assistant: code-block opener

Claude tiếp tục: chỉ JSON content

Stop sequence khi gặp closer

JSON sạch — strip + parse

messages = []

add_user_message(messages, "Generate a very short event bridge rule as json")
add_assistant_message(messages, "```json")

text = chat(messages, stop_sequences=["```"])

Kỹ thuật này hoạt động bằng cách:

  1. Tin nhắn người dùng cho Claude biết cần tạo gì.
  2. Tin nhắn trợ lý được điền sẵn khiến Claude nghĩ rằng nó đã bắt đầu một khối mã markdown.
  3. Claude tiếp tục bằng cách chỉ viết nội dung JSON.
  4. Khi Claude cố gắng đóng khối mã bằng ```, chuỗi dừng sẽ ngay lập tức kết thúc quá trình tạo.

Kết quả là JSON sạch không có định dạng bổ sung:

{
  "source": ["aws.ec2"],
  "detail-type": ["EC2 Instance State-change Notification"],
  "detail": {
    "state": ["running"]
  }
}

Xử lý phản hồi

Bạn có thể nhận thấy một số ký tự xuống dòng bổ sung trong phản hồi. Chúng rất dễ xử lý:

import json

clean_json = json.loads(text.strip())

Vượt ra ngoài JSON

Kỹ thuật này không chỉ giới hạn ở việc tạo JSON. Sử dụng nó bất cứ khi nào bạn cần dữ liệu có cấu trúc mà không cần bình luận:

  • Các đoạn mã Python
  • Danh sách gạch đầu dòng
  • Dữ liệu CSV
  • Bất kỳ nội dung được định dạng nào mà bạn chỉ muốn nội dung, không phải giải thích.

Chìa khóa là xác định những gì Claude tự nhiên muốn bao bọc nội dung của bạn, sau đó sử dụng điều đó làm tiền điền và chuỗi dừng của bạn. Đối với mã, đó thường là các khối mã markdown. Đối với danh sách, đó có thể là các dấu hiệu định dạng khác.

Cách tiếp cận này mang lại cho bạn quyền kiểm soát chính xác định dạng đầu ra của Claude, giúp việc tích hợp nội dung do AI tạo vào các ứng dụng mà dữ liệu sạch, có cấu trúc là rất quan trọng trở nên dễ dàng hơn nhiều.

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?