- Giới thiệu "Structured Outputs" cho API
- Tính năng mới giúp đầu ra của mô hình khớp chính xác với JSON schema do nhà phát triển cung cấp
- OpenAI đã giới thiệu chế độ JSON tại DevDay năm ngoái, nhưng không đảm bảo phản hồi sẽ tuân theo một schema cụ thể
- Structured Outputs giới hạn đầu ra của mô hình theo schema do nhà phát triển cung cấp và huấn luyện mô hình để hiểu tốt hơn các schema phức tạp
- Sự cần thiết của Structured Outputs
- Tạo dữ liệu có cấu trúc từ đầu vào phi cấu trúc là một trong những trường hợp sử dụng cốt lõi của AI
- Có thể dùng OpenAI API để thực hiện nhiều tác vụ như truy xuất dữ liệu, hỏi đáp, trích xuất dữ liệu và xây dựng quy trình làm việc nhiều bước
- Trước đây, cần dùng công cụ mã nguồn mở, prompt, cơ chế thử lại, v.v. để điều chỉnh đầu ra của mô hình sang định dạng có thể tương tác với hệ thống
- Structured Outputs giải quyết vấn đề này bằng cách giới hạn đầu ra của mô hình theo schema do nhà phát triển cung cấp
- Đánh giá hiệu năng
- Trong bài đánh giá tuân theo JSON schema phức tạp, mô hình gpt-4o-2024-08-06 đạt điểm 100%
- Mô hình gpt-4-0613 đạt dưới 40%
- Cách sử dụng Structured Outputs
- Structured Outputs thông qua function calling: đặt
strict: true trong phần định nghĩa hàm
- Có thể dùng trên các mô hình hỗ trợ đầy đủ công cụ
- Structured Outputs an toàn
- Tuân thủ các chính sách an toàn hiện có của OpenAI
- Mô hình có thể từ chối các yêu cầu không an toàn
- Phản hồi API bao gồm giá trị chuỗi từ chối để có thể phát hiện bằng lập trình việc mô hình đã tạo ra từ chối hay chưa
- Hỗ trợ SDK gốc
- SDK Python và Node hỗ trợ Structured Outputs ở mức native
- Có thể cung cấp đối tượng Pydantic hoặc Zod để chuyển thành JSON schema, đồng thời tự động tuần tự hóa và phân tích cú pháp phản hồi JSON
- Các hạn chế
- Chỉ hỗ trợ một phần của JSON schema
- Có thêm độ trễ ở phản hồi API đầu tiên với schema mới
- Mô hình có thể từ chối các yêu cầu không an toàn
- Không tương thích với function calling song song
- Structured Outputs không thuộc diện Zero Data Retention (ZDR)
- Khả dụng
- Structured Outputs hiện đã khả dụng rộng rãi trong API
- Structured Outputs thông qua function calling có thể dùng trên mọi mô hình hỗ trợ function calling
- Tùy chọn định dạng phản hồi khả dụng trên các mô hình mới nhất
Tóm tắt của GN⁺
- Structured Outputs, tính năng mới của OpenAI, cung cấp khả năng khiến đầu ra của mô hình khớp chính xác với JSON schema
- Nhờ đó, nhà phát triển có thể thực hiện đáng tin cậy hơn nhiều tác vụ như truy xuất dữ liệu, hỏi đáp và trích xuất dữ liệu
- Tính năng này được hỗ trợ native trong SDK Python và Node, giúp việc phát triển trở nên dễ dàng hơn
- Có thêm nhiều trường hợp sử dụng khác như trích xuất dữ liệu có cấu trúc từ dữ liệu phi cấu trúc
- Sử dụng kỹ thuật giải mã có ràng buộc để giới hạn đầu ra của mô hình và chỉ tạo JSON hợp lệ
2 bình luận
Tính năng này khá thú vị.
Ý kiến trên Hacker News
Dùng GPT-4o để xây dựng UI động và mã
Những thay đổi chính của gpt-4o-2024-08-06
Trải nghiệm dùng Outlines Structured Output của vLLM
Ý kiến về hiệu năng AI
Ý kiến về cách tiếp cận của OpenAI
Sự bối rối về tùy chọn "strict: true"
Có ý kiến cho rằng việc hardcode JSON vào mô hình đi ngược lại mục tiêu AGI
Lo ngại về hiệu ứng khóa chặt khi dùng tính năng của OpenAI
Chỉ ra lỗi về định dạng JSON
Thắc mắc vì sao cấp cao nhất phải là object