Sử dụng API Decisions khi công việc là phân loại, định tuyến, chấm điểm hoặc kiểm soát một cái gì đó và bạn muốn nhận lại xác suất: nó chạy trên GPT-6 Luna, trả về các câu trả lời có kiểu dữ liệu thay vì văn bản, chỉ tính phí đầu vào 0,10 đô la cho mỗi 1 triệu token mà không tính phí đầu ra, đọc hoặc ghi bộ nhớ đệm, và OpenAI cho biết nó nhanh hơn khoảng 10 lần so với API Responses. Sử dụng API Responses khi bạn cần văn bản được tạo, JSON theo lược đồ riêng của bạn, lệnh gọi công cụ, truyền phát hoặc trạng thái hội thoại. Decisions đã bước vào giai đoạn thử nghiệm công khai vào ngày 06-10-2026.
Bài đăng này sẽ chạy một tác vụ (định tuyến phiếu hỗ trợ) thông qua cả hai điểm cuối, so sánh những gì mỗi điểm cuối trả về, tính toán chi phí một lần, và kết thúc bằng một ghi chú di chuyển cùng một cách để thử nghiệm cả hai trong một dự án Apidog. Để hiểu rõ cấu trúc điểm cuối, hãy bắt đầu với trụ cột API Decisions; để biết cơ sở, hãy xem hướng dẫn API Responses của chúng tôi.
Ma trận tính năng
| API Decisions | API Responses (GPT-6 Luna) | |
|---|---|---|
| Điểm cuối | POST /v1/decisions |
POST /v1/responses |
| Đầu ra | Các câu trả lời predicate, choice, score (cùng với refusal) với xác suất và độ tin cậy từ điểm cuối |
Văn bản được tạo, hoặc JSON tuân theo lược đồ của bạn thông qua text.format |
| Lược đồ JSON riêng của bạn | Không | Có, json_schema với strict: true |
| Công cụ / gọi hàm | Không | Có |
| Truyền phát | Không | Có |
| Trạng thái hội thoại | Không | Có |
| Bộ nhớ đệm nhắc | Không tính phí bộ nhớ đệm; theo diễn đàn của OpenAI, chưa có bộ nhớ đệm | Có, đầu vào được lưu vào bộ nhớ đệm 0,01 đô la cho mỗi 1 triệu |
| Xử lý theo lô | Không được ghi tài liệu | Có, 50% so với tiêu chuẩn |
| Hình ảnh | Có, URL dữ liệu base64; tài liệu tham khảo cũng liệt kê các URL HTTP(S) công khai, tối đa 128 mỗi yêu cầu | Có, Luna chấp nhận văn bản và hình ảnh |
| Quyết định nối tiếp (phụ thuộc) | Các yêu cầu riêng biệt | Một phản hồi được tạo có thể mang các trường phụ thuộc |
| Giá mỗi 1 triệu, ngữ cảnh ngắn | Đầu vào 0,10 đô la; không tính phí đầu ra | Đầu vào 0,10 đô la, đầu ra 0,50 đô la bao gồm cả token lý luận |
| ZDR / HIPAA | Được hỗ trợ cho các khách hàng đủ điều kiện; xử lý theo khu vực ở Hoa Kỳ và EU | Không được đề cập trong so sánh này; xem trang kiểm soát dữ liệu của OpenAI |
Mỗi hàng đều lấy từ hướng dẫn Decisions của OpenAI, tài liệu tham khảo API và trang giá.
Cùng một tác vụ theo cả hai cách: định tuyến phiếu hỗ trợ
Phiếu hỗ trợ ghi “Tôi bị tính phí hai lần cho đơn hàng của mình.” Các phòng ban bao gồm thanh toán, kỹ thuật, vận chuyển và khác. Sau đây là yêu cầu Responses với Đầu ra có cấu trúc, đây là cách hầu hết các nhóm thực hiện điều này ngày nay:
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "Route this support ticket to one department.\n\nTicket: I was charged twice for my order.",
"text": {
"format": {
"type": "json_schema",
"name": "ticket_route",
"strict": true,
"schema": {
"type": "object",
"properties": {
"department": {
"type": "string",
"enum": ["billing", "technical", "shipping", "other"]
}
},
"required": ["department"],
"additionalProperties": false
}
}
}
}'
Và yêu cầu Decisions cho cùng một phiếu hỗ trợ:
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "I was charged twice for my order.",
"questions": [
{
"type": "choice",
"name": "department",
"instructions": "Which department should handle this ticket?",
"choices": [
{"value": "billing", "description": "Charges, refunds, invoices"},
{"value": "technical", "description": "Bugs, errors, login problems"},
{"value": "shipping", "description": "Delivery, tracking, returns in transit"},
{"value": "other", "description": "Anything else"}
]
}
]
}'
Phần thân yêu cầu Responses mang câu hỏi bên trong lời nhắc và các câu trả lời cho phép bên trong một lược đồ. Phần thân yêu cầu Decisions mang phiếu hỗ trợ thô dưới dạng input và câu hỏi dưới dạng choice với 2 đến 255 giá trị duy nhất; nó không có các trường temperature, reasoning, stream hoặc text, vì không có trường nào tồn tại trên điểm cuối đó.
Mỗi loại trả về gì
Responses trả về văn bản được tạo. Với một lược đồ nghiêm ngặt, văn bản đó là JSON hợp lệ, vì vậy sau khi phân tích cú pháp, bạn sẽ có một nhãn:
{"department": "billing"}
Nếu bạn muốn một số độ tin cậy, bạn thêm một trường vào lược đồ và yêu cầu mô hình viết một số; những gì trả về là văn bản được tạo trông giống như một xác suất, chứ không phải một giá trị được đo lường.
Decisions trả về nhãn cộng với phân phối đằng sau nó. Các số liệu dưới đây là ví dụ hướng dẫn của OpenAI cho đầu vào chính xác này:
{
"model": "gpt-6-luna",
"answers": [
{
"type": "choice",
"name": "department",
"choice": "billing",
"probabilities": [
{"value": "billing", "probability": 0.95},
{"value": "technical", "probability": 0.02},
{"value": "shipping", "probability": 0.01},
{"value": "other", "probability": 0.02}
],
"confidence": 0.93
}
]
}
Một đối tượng usage theo sau answers (hiển thị trong phần chi phí). Không cần bộ phân tích cú pháp, không cần biểu thức chính quy. Trường confidence là ngưỡng bạn đặt, và hướng dẫn của OpenAI là đặt ngưỡng đó từ các ví dụ đã được gắn nhãn của riêng bạn, vì không có số liệu chính xác hoặc hiệu chuẩn nào được công bố. Một lời từ chối đến dưới dạng {"type": "refusal", "name": "department"}; các câu hỏi khác trong cùng một yêu cầu vẫn nhận được câu trả lời.
Chi phí: tính toán một lần
Cả hai điểm cuối đều tính phí đầu vào Luna là 0,10 đô la cho mỗi 1 triệu token trong ngữ cảnh ngắn (tối đa 272K token đầu vào). Sự khác biệt nằm ở đầu ra. Lấy một phiếu hỗ trợ 500 token với 1.000.000 yêu cầu:
- Decisions: 500 / 1.000.000 x 0,10 đô la = 0,00005 đô la mỗi yêu cầu, tức là 50 đô la cho một triệu yêu cầu, không có chi phí đầu ra hoặc bộ nhớ đệm nào để thêm vào.
- Responses: 50 đô la đầu vào tương tự, cộng với đầu ra với giá 0,50 đô la cho mỗi 1 triệu. Một nhãn JSON 40 token là 40 / 1.000.000 x 0,50 đô la = 0,00002 đô la mỗi yêu cầu, hoặc 20 đô la cho một triệu. Sau đó thêm các token lý luận, mà Luna tính phí là đầu ra với cùng mức giá 0,50 đô la.
Vì vậy, khoảng cách rõ ràng chỉ trên nhãn là 50 đô la so với 70 đô la. Khoảng cách lớn hơn là ở phần lý luận, và cách trung thực nhất để nói là Decisions không tính phí bất kỳ token đầu ra nào; cả hai bộ đếm đều hiển thị 0 trong ví dụ tham chiếu của OpenAI:
"usage": {
"input_tokens": 42,
"input_tokens_details": {"cached_tokens": 0, "cache_write_tokens": 0},
"output_tokens": 0,
"output_tokens_details": {"reasoning_tokens": 0},
"total_tokens": 42
}
Hai lưu ý. Responses có những đòn bẩy mà Decisions không có: reasoning.effort giảm xuống none trên Luna, lưu vào bộ nhớ đệm lời nhắc giảm đầu vào lặp lại xuống còn 0,01 đô la cho mỗi 1 triệu, và API Batch giảm một nửa mức giá tiêu chuẩn. Không có điều nào trong số đó được ghi tài liệu cho Decisions. Và đầu vào ngữ cảnh dài (hơn 272K token) sẽ nhân đôi tỷ lệ đầu vào trên cả hai, vì vậy một yêu cầu Decisions dài là 0,20 đô la cho mỗi 1 triệu đầu vào (được lấy từ hệ số nhân của trang giá); xử lý khu vực cộng thêm 10%.
Tốc độ
OpenAI cho biết API Decisions nhanh hơn khoảng 10 lần so với API Responses. Không có con số độ trễ tuyệt đối nào được công bố, vì vậy hãy coi tuyên bố này là một định hướng hơn là một ngân sách và đo lường p50 và p95 của riêng bạn trước khi bạn di chuyển một luồng hoạt động. Một nhà phát triển trên diễn đàn OpenAI đã báo cáo rằng các quyết định đầu vào hình ảnh trả về trong khoảng 0,8 giây trên kết nối chậm; đó là một giai thoại, không phải một điểm chuẩn. Hướng này có vẻ hợp lý: Responses tạo ra các token, bao gồm cả lý luận, và bạn phải chờ token cuối cùng.
Quy tắc quyết định
Chọn Decisions khi đầu ra là một trong các trường hợp sau:
- Có/Không với xác suất (
predicate): “Tin nhắn này có phải là spam không?” - Một trong N danh mục không có thứ tự (
choice): phòng ban, ý định, mô hình hoặc công cụ nào sẽ gọi tiếp theo. Bao gồm một phương án dự phòng như “khác”. - Một cấp độ có thứ tự (
score): mức độ nghiêm trọng, ưu tiên, khẩn cấp. Điểm là trung bình có trọng số xác suất của các chỉ số cấp độ từ 0, vì vậy 1.1 có nghĩa là giữa cấp độ 1 và cấp độ 2, gần với 1. - Một cổng: so sánh
confidencehoặcprobabilityvới một ngưỡng và gửi các mục có độ tin cậy thấp đến hàng đợi của con người.
Chọn Responses khi bất kỳ điều nào sau đây là đúng:
- Bạn cần văn bản mà một người sẽ đọc: một bản tóm tắt, một câu trả lời, một lời giải thích.
- Bạn cần một đối tượng theo hình dạng riêng của bạn: các trường được trích xuất, cấu trúc lồng nhau, mảng có độ dài không xác định. Đó là lĩnh vực của Đầu ra có cấu trúc, và hướng dẫn của OpenAI cũng nói vậy.
- Mô hình nên yêu cầu gọi một công cụ với các đối số: gọi hàm.
- Bạn cần truyền phát, trạng thái hội thoại, hoặc một mô hình khác ngoài Luna.
- Một quyết định phụ thuộc vào quyết định khác và bạn muốn cả hai trong một lần đi/về. Decisions giữ nhiều câu hỏi độc lập trên một đầu vào, nhưng các quyết định phụ thuộc cần các yêu cầu riêng biệt.
Nhiều pipeline muốn cả hai: Decisions để phân loại và kiểm soát, Responses để viết câu trả lời.
Di chuyển trình phân loại từ Responses sang Decisions
Nếu bạn đã định tuyến phiếu hỗ trợ với lược đồ enum nghiêm ngặt, việc di chuyển là nhỏ:
- Giữ nguyên
input, chỉ còn phiếu hỗ trợ thô; câu hỏi chuyển ra khỏi lời nhắc. - Đặt câu hỏi vào
questionsdưới dạngchoice, với các giá trị enum của bạn làchoices[].valuevà mỗi giá trị có mộtdescriptionmột dòng. Các giá trị có thể là chuỗi hoặc boolean, vàtruevà"true"là khác biệt. - Xóa bộ phân tích cú pháp. Đọc
answers[0].choicevàanswers[0].confidence; các câu trả lời đến theo thứ tự bạn đã hỏi và phản ánhnamebạn đã đặt. Sau đó đặt ngưỡng từ một mẫu đã được gắn nhãn. - Kiểm tra đường dẫn đầu vào. Decisions chỉ chấp nhận tin nhắn người dùng: không có vai trò hệ thống hoặc trợ lý, không có lệnh gọi hàm, không có tệp, không có
file_id. Gộp các quy tắc lời nhắc hệ thống vàoinstructionshoặc mô tả lựa chọn. Hình ảnh được đưa vào dưới dạng URL dữ liệu base64; tài liệu tham khảo cũng liệt kê các URL HTTP(S) công khai, vì vậy hãy kiểm tra hình ảnh được lưu trữ trước. - Tách các chuỗi. “Phân loại, sau đó nếu là thanh toán thì quyết định tính đủ điều kiện hoàn tiền” trở thành hai yêu cầu.
Kiểm tra cả hai trong một dự án Apidog
Cách rõ ràng nhất để quyết định là chạy cả hai yêu cầu đối với cùng các phiếu hỗ trợ đã được gắn nhãn và so sánh. Trong Apidog, lưu khóa một lần dưới dạng một biến môi trường và tham chiếu {{OPENAI_API_KEY}} trong tiêu đề Authorization: Bearer của cả hai yêu cầu đã lưu, để không có khóa gốc nào xuất hiện trong một phần thân đã lưu.
Cung cấp cho cả hai yêu cầu cùng một khẳng định: phòng ban bằng billing. Trên yêu cầu Decisions, đó là một khẳng định JSONPath trên $.answers[0].choice, với $.answers[0].confidence lớn hơn 0.8 và $.usage.output_tokens bằng 0 bên cạnh. Trên yêu cầu Responses, nhãn nằm bên trong văn bản được tạo, vì vậy một tập lệnh ngắn sau yêu cầu sẽ phân tích cú pháp nó thành một biến mà khẳng định kiểm tra. Sau đó so sánh usage trên hai phản hồi: Decisions báo cáo không có token đầu ra và lý luận, Responses thì không.
Biến cặp này thành một kịch bản kiểm tra dựa trên dữ liệu qua một tệp CSV chứa văn bản phiếu hỗ trợ và phòng ban dự kiến, và quá trình chạy sẽ cho thấy mỗi điểm cuối định tuyến bao nhiêu phiếu hỗ trợ đúng cách trên ngưỡng tin cậy của bạn. Giả lập mảng answers để bộ định tuyến có thể được xây dựng trước, như trong phản hồi giả lập có điều kiện, và chạy kịch bản trong CI với Apidog CLI để một thay đổi về từ ngữ hoặc bí danh mô hình sẽ khiến kiểm tra thất bại thay vì định tuyến sai phiếu hỗ trợ. Xem kiểm tra ứng dụng LLM để biết thêm các mẫu khẳng định.
Câu hỏi thường gặp
API Responses có thể trả về xác suất như Decisions không? Không, không phải dưới dạng giá trị đo lường. Một trường confidence trong lược đồ JSON sẽ cho bạn một con số do mô hình viết, đó là văn bản được tạo. Decisions trả về xác suất trên các tùy chọn bạn cung cấp từ chính điểm cuối.
Tôi có thể sử dụng một mô hình khác ngoài GPT-6 Luna trên Decisions không? Không. Hướng dẫn nêu rõ gpt-6-luna là mô hình duy nhất hiện có. Xem tổng quan về GPT-6 Luna của chúng tôi.
Decisions khác với Jev của TypeSafe như thế nào? Cả hai đều trả về các câu trả lời có kiểu dữ liệu với xác suất và chỉ tính phí đầu vào; chúng khác nhau về giá, đầu vào và hình dạng phản hồi. Xem API Decisions so với Jev.
API Decisions có miễn phí không? Không. Nó tính phí 0,10 đô la cho mỗi 1 triệu token đầu vào, không có cấp miễn phí nào cho Decisions được ghi tài liệu. Để biết các cách miễn phí đến Luna, hãy xem cách sử dụng GPT-6 Luna miễn phí.
Bước tiếp theo
Lấy một trình phân loại bạn đang chạy qua Responses ngày nay, xây dựng lại nó thành một câu hỏi choice, và chạy cả hai trên 50 phiếu hỗ trợ đã được gắn nhãn trong Apidog với cùng một khẳng định. Nếu ngưỡng độ tin cậy được giữ vững và mức sử dụng cho thấy không có token đầu ra, bạn đã có câu trả lời. Tải Apidog, sau đó làm theo cách sử dụng API Decisions để thực hiện cuộc gọi đầu tiên và hướng dẫn kiểm tra đầy đủ.
