Tạo cuộc trò chuyện
BazaarLink trả về phản hồi chuẩn hóa và loại bỏ các trường riêng của upstream. usage.cost là số USD tính cho khách hàng cho yêu cầu này. Dùng BazaarLink request ID opaque từ id phản hồi hoặc header x-request-id với GET /v1/generation; phản hồi không stream cũng có ID đó trong x-generation-id. Số liệu có thể xuất hiện sau vài giây; thử lại 404 trong thời gian ngắn. Yêu cầu Chat, Messages và Responses không stream kéo dài (khoảng 12 giây trở lên) có thể có khoảng trắng keep-alive trước JSON body. Trình phân tích JSON tiêu chuẩn xử lý được khoảng trắng đầu. Audio chat dùng endpoint này; yêu cầu đầu ra âm thanh bằng modalities:["text","audio"] và audio:{voice,format}. GET /v1/models?output_modalities=audio chỉ lọc các mô hình có đầu ra âm thanh, không phải mọi mô hình nhận âm thanh đầu vào; mô hình nhận âm thanh và trả văn bản vẫn nằm trong danh sách text. Nhãn khả năng không đảm bảo có tuyến khả dụng; hãy chọn mô hình trong danh sách công khai và các tham số nó hỗ trợ. Đầu ra chỉ có âm thanh, TTS, STT và các chế độ tạo không tính theo token nằm ngoài quy ước này.
/v1/chat/completionsXác thực
Authorizationbắt buộcAPI key dưới dạng bearer token trong header Authorization.
Body
modelbắt buộcModel cần dùng, có tiền tố nhà cung cấp, ví dụ "openai/gpt-4o". GET /v1/models liệt kê id như "claude-sonnet-4.6" và alias chuẩn như "anthropic/claude-sonnet-4.6". Yêu cầu chấp nhận cả hai dạng; dùng giá trị trong danh sách.
"openai/gpt-4o"messagesbắt buộcMảng các tin nhắn hội thoại, ít nhất một. Mỗi tin nhắn có role (system/user/assistant/tool) và content.
contentĐặt âm thanh đầu vào trong messages[].content[]: {"type":"input_audio","input_audio":{"data":"<raw base64>","format":"wav"}}. Dùng base64 thô cho data, không dùng data URI; định dạng hỗ trợ tùy theo mô hình. Đừng dùng input_audio ở cấp cao nhất: nó không có cơ chế xác thực riêng và không có quy ước giữ trước hạn mức.
[{"type":"input_audio","input_audio":{"data":"<raw base64>","format":"wav"}}]modelsDanh sách model dự phòng — thử theo thứ tự, chỉ dùng khi nhóm ứng viên của model chính đã cạn.
streamtrue để phản hồi dạng luồng SSE; bỏ qua hoặc false trả về một phản hồi JSON đơn. Luồng âm thanh trả các đoạn data (âm thanh base64) và transcript trong choices[].delta.audio; phản hồi không streaming dùng choices[].message.audio. Mô hình cũng có thể cung cấp id và expires_at. Hãy gom các đoạn rồi giải mã theo audio.format; định dạng streaming tùy theo mô hình.
temperatureNhiệt độ lấy mẫu — càng cao càng ngẫu nhiên, càng thấp càng xác định. Giá trị lấy mẫu được chuyển tiếp mà không kiểm tra phạm vi; model có thể giới hạn hoặc bỏ qua giá trị ngoài phạm vi hỗ trợ.
max_tokensSố token tối đa mà phản hồi có thể tạo ra.
max_completion_tokensBí danh của max_tokens với ngữ nghĩa giống hệt.
top_pNgưỡng lấy mẫu nhân (nucleus sampling).
top_kGiới hạn lấy mẫu trong K token có xác suất cao nhất.
frequency_penaltyPhạt token dựa trên tần suất đã xuất hiện.
presence_penaltyPhạt token dựa trên việc đã từng xuất hiện hay chưa, bất kể số lần.
repetition_penaltyHệ số phạt lặp lại — cơ chế riêng biệt với frequency/presence penalty.
min_pNgưỡng xác suất tối thiểu tương đối so với token có khả năng cao nhất.
top_aMột cơ chế lấy mẫu cắt ngưỡng động khác, co giãn ngưỡng theo bình phương xác suất cao nhất.
seedSeed lấy mẫu xác định; không phải nhà cung cấp nào cũng đảm bảo khả năng tái tạo.
nSố lượng phản hồi cần tạo.
stopChuỗi khiến việc tạo dừng lại, tối đa 4.
toolsDanh sách định nghĩa tool/hàm mà model có thể gọi.
tool_choiceKiểm soát việc model có/thế nào bị buộc gọi tool.
parallel_tool_callsCó cho phép gọi tool song song khi cung cấp tools hay không. Mặc định true. Chỉ áp dụng cho mô hình họ OpenAI — bị loại bỏ âm thầm khi mô hình đích không phải của OpenAI, không phải lỗi.
response_formatRàng buộc định dạng đầu ra, ví dụ {type:"json_object"} hoặc {type:"json_schema"} kèm JSON Schema.
logit_biasÁnh xạ ID token đến giá trị thiên lệch [-100, 100] được thêm trước khi lấy mẫu. Chỉ áp dụng cho mô hình họ OpenAI — bị loại bỏ âm thầm khi mô hình đích không phải của OpenAI, không phải lỗi.
logprobsTrả về log xác suất của mỗi token đầu ra. Chỉ áp dụng cho mô hình họ OpenAI — bị loại bỏ âm thầm khi mô hình đích không phải của OpenAI, không phải lỗi.
top_logprobsSố token có khả năng nhất trả về cho mỗi vị trí (cần logprobs: true). Chỉ áp dụng cho mô hình họ OpenAI — bị loại bỏ âm thầm khi mô hình đích không phải của OpenAI, không phải lỗi.
userĐịnh danh người dùng cuối cho giám sát và phát hiện lạm dụng. Không ảnh hưởng thanh toán. Chỉ áp dụng cho mô hình họ OpenAI — bị loại bỏ âm thầm khi mô hình đích không phải của OpenAI, không phải lỗi.
reasoningĐối tượng điều khiển suy luận của model reasoning (ví dụ {effort, max_tokens}).
reasoning_effortTrường viết tắt phẳng của reasoning.effort.
lowmediumhighinclude_reasoningtrue trả về nội dung suy nghĩ trong message.reasoning (delta.reasoning khi streaming); false tắt suy nghĩ cho các mô hình suy nghĩ theo mặc định (xem phần reasoning), nên không bị tính phí suy nghĩ. Khi không gửi reasoning_effort, reasoning hay thinking, chỉ các mô hình đó suy nghĩ và trả về theo mặc định; mô hình khác chỉ trả về khi được yêu cầu.
image_configTùy chọn tạo/chỉnh sửa ảnh (dùng khi modalities gồm image).
modalitiesCác modality đầu ra được yêu cầu. Có image sẽ định tuyến qua luồng tạo ảnh. Audio chat dùng ["text","audio"] cùng đối tượng audio và cần mô hình hỗ trợ đầu ra cả văn bản lẫn âm thanh.
textimageaudio["text","audio"]audioTùy chọn đầu ra âm thanh, dùng cùng modalities:["text","audio"]. Giá trị voice và format được hỗ trợ tùy theo mô hình.
{"voice":"alloy","format":"wav"}voiceGiọng nói mà mô hình hỗ trợ, ví dụ alloy.
"alloy"formatĐịnh dạng đầu ra mà mô hình hỗ trợ, ví dụ wav; streaming thường dùng pcm16, tùy theo mô hình hỗ trợ.
"wav"pluginsMảng plugin (ví dụ {id:"web"} để bật tìm kiếm web). Chỉ một số tuyến model hỗ trợ, nơi khác không có tác dụng; :online bật tìm kiếm web trên tuyến được hỗ trợ. Tìm kiếm qua plugins, :online hoặc web_search_options có thể phát sinh phí bổ sung từ upstream, tính trên khóa được dùng: khóa nền tảng của BazaarLink hoặc khóa BYOK của bạn.