Tạo phản hồi hội thoại
Tạo phản hồi trò chuyện tương thích với OpenAI, hỗ trợ truyền phản hồi theo luồng, hình ảnh, gọi công cụ và điều chỉnh suy luận.
POST /v1/chat/completions
curl https://api.unquant.io/v1/chat/completions \
-H "Authorization: Bearer $UNQUANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3-flash",
"messages":[{"role":"user","content":"Hello!"}]}'Các trường trong yêu cầu
modelchuỗiBắt buộcglm-5.3-flash hoặc qwen-3.8-flash-next.
messagesmảngBắt buộcCác vai trò gồm system, user, assistant và tool. Nội dung là một chuỗi hoặc một mảng gồm các phần text và image_url.
streamluận lýTruyền phản hồi theo luồng dưới dạng sự kiện do máy chủ gửi.
stream_optionsđối tượng{"include_usage": true} thêm một phần dữ liệu cuối cùng chứa số lượng token.
max_tokenssố nguyênGiới hạn tối đa cho độ dài phản hồi.
max_completion_tokenssố nguyênTương đương max_tokens.
temperaturesốMức độ ngẫu nhiên khi lấy mẫu.
top_psốLấy mẫu từ tập token có tổng xác suất đạt ngưỡng chỉ định.
top_ksố nguyênLấy mẫu từ k token có xác suất cao nhất.
min_psốXác suất tương đối tối thiểu của một token.
seedsố nguyênGiá trị khởi tạo để có thể tái lập kết quả lấy mẫu.
stopchuỗi hoặc mảngCác chuỗi ký tự báo hiệu dừng.
frequency_penaltysốÁp dụng mức phạt cho token theo tần suất đã xuất hiện.
presence_penaltysốÁp dụng mức phạt cho mọi token đã từng xuất hiện.
repetition_penaltysốHệ số phạt lặp lại theo phép nhân.
toolsmảngCác hàm mà mô hình có thể gọi, theo định dạng của OpenAI.
tool_choicechuỗi hoặc đối tượngauto, none, required hoặc một hàm được chỉ định theo tên.
parallel_tool_callsluận lýCho phép gọi nhiều công cụ trong một lượt.
response_formatđối tượngĐầu ra ở định dạng JSON.
logprobsluận lýTrả về logarit xác suất của các token.
top_logprobssố nguyênSố lựa chọn thay thế được trả về cho mỗi token.
nsố nguyênPhải là 1: mỗi yêu cầu chỉ tạo một phản hồi.
reasoning_effortchuỗiCả hai mô hình đều hỗ trợ none, low hoặc high; GLM-5.3-Flash còn hỗ trợ max.
chat_template_kwargsđối tượngCác tùy chọn bật/tắt của mẫu trò chuyện, chẳng hạn như {"enable_thinking": false}.
Các trường khác sẽ bị bỏ qua.
Phản hồi
response.choices[0].message.contentSố liệu sử dụng được trả về để bạn tự theo dõi; chúng không bao giờ được dùng để tính phí.
Truyền phản hồi theo luồng
Khi đặt "stream": true, phản hồi được gửi dưới dạng sự kiện do máy chủ gửi, theo định dạng từng phần dữ liệu của OpenAI, và kết thúc bằng data: [DONE]. Đọc văn bản từ choices[0].delta.content.
Hình ảnh
Cả hai mô hình đều nhận hình ảnh qua các phần image_url chứa URL dữ liệu base64 (data:image/png;base64,..., JPEG hoặc WebP). Hệ thống không tải ảnh từ liên kết URL và sẽ trả về lỗi 400 nếu bạn gửi loại liên kết này.
{"role": "user", "content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
]}Gọi công cụ
Truyền tools như khi dùng API OpenAI. Khi mô hình gọi công cụ, phản hồi sẽ có finish_reason: "tool_calls" và message.tool_calls; hãy chạy công cụ, thêm một tin nhắn tool chứa kết quả cùng tool_call_id tương ứng, rồi gọi API lần nữa.
Suy luận
Cả hai mô hình đều suy luận trước khi trả lời và đều hỗ trợ reasoning_effort: none để trả lời trực tiếp, low để suy luận ở mức nhẹ hoặc high cho các bài toán khó hơn; GLM-5.3-Flash còn có mức max và mặc định dùng high. Nội dung suy luận được trả về riêng trong reasoning_content, không bao giờ trộn vào content. Bạn cũng có thể tắt suy luận bằng "thinking": {"type": "disabled"} hoặc "chat_template_kwargs": {"enable_thinking": false}.
Xử lý đồng thời
Gói của bạn quy định số yêu cầu có thể chạy cùng lúc, tính chung trên tất cả khóa API của bạn. Yêu cầu vượt giới hạn này sẽ nhận mã 429 ngay lập tức và không được đưa vào hàng đợi; các yêu cầu đang chạy không bị ảnh hưởng.