Tham Khảo API
Chat Completions
Tạo Chat Completions, truyền phát phản hồi, gọi công cụ và xử lý hình ảnh — tất cả thông qua một endpoint duy nhất tương thích OpenAI với hơn 200 mô hình.
Endpoint
POST https://api.tokspan.com/v1/chat/completionsVí Dụ Nhanh
Cùng một API, mọi mô hình. Chọn ngôn ngữ của bạn:
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
response = client.chat.completions.create(model="gpt-4o", messages=[{"role":"user","content":"Hello"}])
print(response.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.TOKSPAN_API_KEY, baseURL: 'https://api.tokspan.com/v1' });
const response = await client.chat.completions.create({ model: 'gpt-4o', messages: [{ role: 'user', content: 'Hello' }] });
console.log(response.choices[0].message.content);curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}'Nội Dung Yêu Cầu
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| model | string | Có | ID mô hình (ví dụ: gpt-4o, claude-opus-4-8). Xem Mô Hình để biết danh mục đầy đủ. |
| messages | array | Có | Mảng các đối tượng message với role (system / user / assistant / tool) và content. |
| temperature | number | Không | Nhiệt độ lấy mẫu (0–2). Càng cao = càng ngẫu nhiên. Mặc định tùy theo mô hình. |
| max_tokens | integer | Không | Số token tối đa để tạo. Nếu bỏ qua, mô hình sẽ tự quyết định dựa trên ngữ cảnh còn lại. |
| stream | boolean | Không | Bật streaming SSE. Mặc định: false. Xem Streaming bên dưới. |
| top_p | number | Không | Nucleus sampling — thay thế cho temperature (0–1). |
| stop | string / array | Không | Một hoặc nhiều chuỗi mà tại đó mô hình ngừng tạo. |
| frequency_penalty | number | Không | Giảm lặp lại token (−2.0 đến 2.0). |
| presence_penalty | number | Không | Tăng khả năng xuất hiện chủ đề mới (−2.0 đến 2.0). |
| seed | integer | Không | Hạt giống lấy mẫu xác định để có đầu ra tái lập được. |
| response_format | object | Không | Buộc đầu ra JSON: {"type": "json_object"} hoặc {"type": "json_schema", "json_schema": {...}}. |
| tools | array | Không | Định nghĩa tool/function cho function calling. Xem Gọi Công Cụ bên dưới. |
| tool_choice | string / object | Không | Kiểm soát lựa chọn tool: "auto", "none", "required", hoặc một đối tượng tool cụ thể. |
| n | integer | Không | Số lượng completion cần tạo. Mặc định: 1. |
| user | string | Không | Định danh người dùng cuối cho mục đích giám sát lạm dụng. |
Ví Dụ Yêu Cầu & Phản Hồi
{
"model": "gpt-4o",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "What is the capital of France?" }
],
"temperature": 0.7,
"max_tokens": 256
}{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4o",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris."
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 8,
"total_tokens": 33
}
}Các Trường Phản Hồi
| Trường | Kiểu | Mô Tả |
|---|---|---|
| id | string | Định danh yêu cầu duy nhất — sử dụng khi liên hệ hỗ trợ |
| object | string | Luôn là "chat.completion" |
| created | integer | Unix timestamp (giây) của thời điểm phản hồi được tạo |
| model | string | Mô hình thực tế đã phục vụ yêu cầu (hữu ích khi tự động chuyển đổi dự phòng hoặc định tuyến đang hoạt động) |
| choices | array | Mảng các lựa chọn completion. Mỗi lựa chọn có index, message (role + content), và finish_reason (stop / length / tool_calls / content_filter) |
| usage | object | Số lượng token: prompt_tokens, completion_tokens, total_tokens. Xem Mức Sử Dụng Token bên dưới. |
Hiểu Về Mức Sử Dụng Token
Đối tượng usage báo cáo token đã tiêu thụ cho mục đích thanh toán:
prompt_tokens— Token trong các message đầu vào của bạn (bao gồm system prompt, lịch sử hội thoại và mọi phương tiện đính kèm được quy đổi thành token tương đương)completion_tokens— Token được mô hình tạo ra trong phản hồitotal_tokens— Tổng của prompt + completion tokens = số tiền bạn bị tính phí
Đối với đầu vào đa phương thức (hình ảnh, âm thanh), các nhà cung cấp quy đổi phương tiện thành token tương đương. GPT-4o tính ~85 token cho ảnh độ phân giải thấp và ~170+ cho độ phân giải cao. Bảng điều khiển của bạn hiển thị số token cuối cùng và chi phí cho mỗi yêu cầu.
Phản Hồi Streaming (SSE)
Đặt stream: true để nhận token theo thời gian thực khi mô hình tạo ra chúng. TokSpan sử dụng Server-Sent Events (SSE) tiêu chuẩn — hoàn toàn tương thích với định dạng streaming của OpenAI.
Ví Dụ
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a story."}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Tell me a story."}],
"stream": true
}'Định Dạng SSE Chunk
Mỗi chunk là một đối tượng JSON có tiền tố data:. Luồng kết thúc bằng data: [DONE]:
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":" world"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]Mỗi chunk chứa một đối tượng delta (không phải message). Trường content có thể trống hoặc không có trong chunk cuối cùng. Chunk cuối cùng có finish_reason được đặt và delta trống.
Streaming Với Gọi Công Cụ
Khi mô hình gọi một function trong quá trình streaming, các chunk gọi công cụ đến trong delta với tool_calls — tên function và tham số được truyền tải tăng dần. Tích lũy tất cả các chunk cho một tool_call_id nhất định để tập hợp lời gọi function hoàn chỉnh, sau đó gửi lại một message role: "tool".
Gọi Công Cụ / Function Calling
TokSpan hỗ trợ function calling tương thích OpenAI trên tất cả các mô hình có khả năng. Định nghĩa tool của bạn trong yêu cầu và mô hình sẽ phản hồi bằng lời gọi function JSON có cấu trúc để code của bạn thực thi.
Định Nghĩa Công Cụ
Truyền một mảng tools với các định nghĩa function. Mỗi function cần có name, description và JSON Schema parameters:
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
}]Phản Hồi Của Mô Hình Với Gọi Công Cụ
Khi mô hình quyết định gọi một function, phản hồi sẽ bao gồm tool_calls thay vì nội dung văn bản:
{
"role": "assistant",
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"Paris\"}"
}
}]
}Quy Trình Gọi Công Cụ Hoàn Chỉnh
- Gửi yêu cầu với định nghĩa
tools - Nhận
tool_callstrong phản hồi — trích xuất tên function và tham số - Thực thi function trong code của bạn (gọi API thời tiết, truy vấn cơ sở dữ liệu, v.v.)
- Gửi kết quả trở lại dưới dạng message với
role: "tool", tham chiếu đếntool_call_id - Mô hình phản hồi bằng câu trả lời ngôn ngữ tự nhiên tích hợp kết quả công cụ
Mô Hình Được Hỗ Trợ
Gọi công cụ được hỗ trợ bởi: GPT-4o, GPT-4.1, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 2.5 Pro, Gemini 2.5 Flash, DeepSeek V3, Mistral Large 3, Llama 4, Qwen3 và nhiều mô hình khác. Xem trang Mô Hình để biết chi tiết khả năng từng mô hình.
tool_choice: "required" để buộc mô hình luôn gọi một công cụ (hữu ích cho pipeline agent khi phản hồi văn bản nên là ngoại lệ).Thị Giác / Đầu Vào Hình Ảnh
Đối với các mô hình đa phương thức như GPT-4o và Claude 4 Vision, bao gồm hình ảnh dưới dạng URL hoặc dữ liệu base64 trong mảng content:
{
"model": "gpt-4o",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "What's in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}]
}Định dạng hình ảnh được hỗ trợ: PNG, JPEG, WebP, GIF (không hoạt ảnh). Kích thước tối đa tùy theo mô hình — thường là 20MB mỗi ảnh. Đối với mô hình Claude, tài liệu PDF cũng được hỗ trợ làm đầu vào trực quan.
Chế Độ JSON / Đầu Ra Có Cấu Trúc
Buộc mô hình trả về JSON hợp lệ bằng cách đặt response_format:
- Chế độ JSON:
{"type": "json_object"}— Mô hình trả về JSON hợp lệ. Bạn phải bao gồm từ "JSON" trong system prompt của mình. - Đầu ra có cấu trúc:
{"type": "json_schema", "json_schema": {...}}— Mô hình trả về JSON khớp chính xác schema của bạn. Được hỗ trợ bởi GPT-4o và các mô hình mới hơn.
response_format được đặt, mô hình truyền tải các token JSON. Phản hồi hoàn chỉnh là JSON hợp lệ sau khi tất cả các chunk được tập hợp — hãy xác thực sau khi luồng kết thúc.