API Endpoint5 phút đọcCập nhật 04/11/2026
Chat Completions API
Endpoint chính POST /v1/chat/completions chuẩn OpenAI — hỗ trợ streaming, function calling, vision và system prompts.
#chat#completions#/v1/chat/completions#streaming#tools
#Thông số Endpoint
Gửi yêu cầu hội thoại tới mô hình ngôn ngữ lớn (LLM). Tương thích 100% với đặc tả OpenAPI của OpenAI Chat Completions.
| Thuộc tính | Giá trị |
|---|---|
| HTTP Method | POST |
| Endpoint URL | https://apivien.com/v1/chat/completions |
| Content-Type | application/json |
| Authorization | Bearer <YOUR_API_KEY> |
#Các tham số trong Request Body
| Tham số | Kiểu dữ liệu | Bắt buộc | Mô tả | Mặc định |
|---|---|---|---|---|
| model | string | Bắt buộc | Mã định danh mô hình (VD: `deepseek/deepseek-v3.2`, `apivien/claude-opus-5`, `gpt-4o`). | - |
| messages | array | Bắt buộc | Danh sách các tin nhắn ngữ cảnh trong cuộc trò chuyện, mỗi phần tử gồm role và content. | - |
| stream | boolean | Tùy chọn | Nếu là true, server sẽ trả về Server-Sent Events (SSE) theo thời gian thực từng token. | false |
| temperature | number | Tùy chọn | Độ ngẫu nhiên/sáng tạo (0 đến 2). Giá trị thấp cho kết quả chính xác, giá trị cao cho sáng tạo. | 1.0 |
| max_tokens | integer | Tùy chọn | Giới hạn số lượng token tối đa mà mô hình được phép sinh ra trong câu trả lời. | Model default |
| tools | array | Tùy chọn | Danh sách các function/tool mà mô hình có thể kích hoạt gọi lại (Tool Calling). | - |
#Lưu ý quan trọng cho từng dòng mô hình
Quy tắc tham số cho Claude & Thinking Models
- **Model Claude Opus / Sonnet đời mới**: Không truyền tham số `temperature` và `top_p` cùng lúc. Tốt nhất hãy để mặc định nếu không có yêu cầu đặc thù. - **Bắt buộc bật Streaming**: Đối với DeepSeek-R1, o3-mini và Claude 3.7 Thinking, luôn thiết lập `stream: true` để tránh timeout 120s từ mạng.
#Ví dụ gọi Chat Streaming với Python & JavaScript
from openai import OpenAI
client = OpenAI(
base_url="https://apivien.com/v1",
api_key="apivien-live-YOUR_API_KEY"
)
stream = client.chat.completions.create(
model="deepseek/deepseek-v3.2",
messages=[{"role": "user", "content": "Viết một bài thơ ngắn về lập trình viên."}],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content or ""
print(content, end="", flush=True)
print()