Kiểm tra JSON đầu ra của LLM
Dán JSON Schema và phản hồi của LLM để xem từng lỗi kiểm tra kèm đường dẫn JSON và số dòng. Khối code, dấu phẩy thừa cuối, nháy đơn hoặc nháy cong, chú thích và True/None của Python được sửa trước. Việc kiểm tra dùng Ajv 8.20.0 (draft-07, 2019-09, 2020-12) ngay trong trình duyệt.
Cách dùng
- Dán JSON Schema vào bên trái. Đối tượng response_format của OpenAI có name và schema sẽ được tự mở ra.
- Dán đầu ra của mô hình vào bên phải, giữ nguyên như khi nhận, kể cả khối code hay lời dẫn xung quanh.
- Đọc kết quả. Mỗi lỗi hiện dòng và cột (bấm để nhảy tới), đường dẫn JSON và nội dung lỗi. Nếu phải làm sạch đầu ra trước, các chỗ sửa được liệt kê và JSON sạch sẵn sàng để sao chép.
Cách tính
Đầu ra được đọc nguyên trạng trước. Nếu thất bại, công cụ bỏ những lỗi mô hình hay mắc nhất rồi thử lại: khối code Markdown, chữ trước hoặc sau JSON, ký tự BOM, dấu nháy cong, chuỗi dùng nháy đơn, chú thích // và /* */, dấu phẩy thừa cuối, và True, False, None của Python. Nội dung bên trong chuỗi không bao giờ bị đổi.
Schema được kiểm tra bằng Ajv 8.20.0, trình kiểm tra JSON Schema được dùng rộng rãi, và chỉ tải khi bạn dán nội dung. Bản nháp 2020-12 và 2019-09 được dùng khi trường $schema ghi rõ, còn lại dùng draft-07. Báo đủ mọi lỗi chứ không chỉ lỗi đầu tiên.
Từ khóa format (email, date-time…) không được kiểm tra, và liên kết $ref từ xa không được tải về.
Những gì bạn dán không được lưu, không gửi đi đâu và không ghi vào địa chỉ trang.
Những lỗi LLM hay mắc nhất
| Vấn đề | Ví dụ | Tự sửa |
|---|---|---|
| Khối code | ```json { ... } ``` | Có |
| Chữ quanh JSON | Sure! Here it is: { ... } | Có |
| Dấu phẩy thừa cuối | {"a": 1,} | Có |
| Nháy đơn hoặc nháy cong | {'a': 'b'} | Có |
| Thiếu trường bắt buộc | {"title": "x"} | Không, báo lỗi |
| Sai kiểu | "rating": "5" | Không, báo lỗi |
| Thừa trường | "author": "x" khi additionalProperties là false | Không, báo lỗi |
Nhận đầu ra hợp lệ ngay từ đầu
- Khi có thể, hãy dùng chế độ structured output của nhà cung cấp. json_schema strict của OpenAI và structured outputs của Anthropic ép mô hình theo schema.
- Chế độ strict yêu cầu mọi thuộc tính nằm trong required và additionalProperties là false. Hãy kiểm tra schema của bạn có theo đúng quy tắc đó.
- Nếu đọc đầu ra mô hình mà không có chế độ strict, hãy giữ một bước làm sạch như ở đây và kiểm tra trước khi tin dữ liệu.
Câu hỏi thường gặp
Vì sao JSON trông ổn mà không đọc được?
Nguyên nhân hay gặp là dấu phẩy sau phần tử cuối, khối code bọc quanh JSON, hoặc dấu nháy cong chép từ cửa sổ chat. Công cụ sẽ sửa và cho biết đã đổi gì.
Hỗ trợ những bản nháp JSON Schema nào?
Mặc định là draft-07, thêm 2019-09 và 2020-12 khi trường $schema ghi rõ.
Dữ liệu của tôi có bị tải lên không?
Không. Việc đọc và kiểm tra diễn ra trong trình duyệt, văn bản không được lưu và không đưa vào URL.
Tôi có thể dán đối tượng response_format của OpenAI không?
Có. Đối tượng có name và schema, hoặc có json_schema.schema, sẽ được mở ra và dùng schema bên trong.