Sử dụng CometAPI POST /v1/chat/completions để gửi các cuộc hội thoại nhiều tin nhắn và nhận phản hồi từ LLM với các tùy chọn Streaming, temperature và max_tokens.
from openai import OpenAI
client = OpenAI(
base_url="https://api.cometapi.com/v1",
api_key="<COMETAPI_KEY>",
)
completion = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"},
],
)
print(completion.choices[0].message){
"id": "chatcmpl-DNA27oKtBUL8TmbGpBM3B3zhWgYfZ",
"object": "chat.completion",
"created": 1774412483,
"model": "gpt-4.1-nano-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Four",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 29,
"completion_tokens": 2,
"total_tokens": 31,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"service_tier": "default",
"system_fingerprint": "fp_490a4ad033"
}model.
base_url thành https://api.cometapi.com/v1.reasoning_effort chỉ áp dụng cho các reasoning model (o-series, GPT-5.1+), và một số model có thể không hỗ trợ logprobs hoặc n > 1.o1-pro), hãy sử dụng endpoint responses thay thế.| Vai trò | Mô tả |
|---|---|
system | Thiết lập hành vi và cá tính của assistant. Được đặt ở đầu cuộc hội thoại. |
developer | Thay thế system cho các model mới hơn (o1+). Cung cấp các chỉ dẫn mà model phải tuân theo bất kể đầu vào của người dùng. |
user | Tin nhắn từ người dùng cuối. |
assistant | Các phản hồi trước đó của model, được dùng để duy trì lịch sử hội thoại. |
tool | Kết quả từ các lệnh gọi tool/function. Phải bao gồm tool_call_id khớp với lệnh gọi tool gốc. |
developer thay cho system cho các tin nhắn chỉ dẫn. Cả hai đều hoạt động, nhưng developer cung cấp khả năng tuân theo chỉ dẫn mạnh hơn.content để gửi các tin nhắn multimodal:
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.png",
"detail": "high"
}
}
]
}
detail kiểm soát độ sâu phân tích hình ảnh:
low — nhanh hơn, dùng ít tokens hơn (chi phí cố định)high — phân tích chi tiết, tiêu thụ nhiều tokens hơnauto — model tự quyết định (mặc định)stream được đặt thành true, phản hồi sẽ được gửi dưới dạng Server-Sent Events (SSE). Mỗi sự kiện chứa một đối tượng chat.completion.chunk với nội dung được truyền tăng dần:
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
stream_options.include_usage thành true. Dữ liệu usage sẽ xuất hiện trong chunk cuối cùng trước [DONE].response_format:
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "result",
"strict": true,
"schema": {
"type": "object",
"properties": {
"answer": {"type": "string"},
"confidence": {"type": "number"}
},
"required": ["answer", "confidence"],
"additionalProperties": false
}
}
}
}
json_schema) đảm bảo đầu ra khớp chính xác với schema của bạn. Chế độ JSON Object (json_object) chỉ đảm bảo JSON hợp lệ — cấu trúc không được ép buộc.{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}
finish_reason: "tool_calls" và mảng message.tool_calls sẽ chứa tên function cùng các đối số. Sau đó, bạn thực thi function và gửi kết quả trở lại dưới dạng một message tool với tool_call_id tương ứng.
| Field | Mô tả |
|---|---|
id | Định danh completion duy nhất (ví dụ: chatcmpl-abc123). |
object | Luôn là chat.completion. |
model | Model đã tạo phản hồi này (có thể bao gồm hậu tố phiên bản). |
choices | Mảng các lựa chọn completion (thường là 1 trừ khi n > 1). |
choices[].message | Message phản hồi của assistant với role, content, và có thể có tool_calls. |
choices[].finish_reason | Lý do model dừng lại: stop, length, tool_calls, hoặc content_filter. |
usage | Chi tiết mức sử dụng Token: prompt_tokens, completion_tokens, total_tokens, và các số liệu phụ chi tiết. |
system_fingerprint | Dấu vân tay cấu hình backend để gỡ lỗi khả năng tái lập. |
Hỗ trợ tham số giữa các nhà cung cấp
| Parameter | OpenAI GPT | Claude (qua compat) | Gemini (qua compat) |
|---|---|---|---|
temperature | 0–2 | 0–1 | 0–2 |
top_p | 0–1 | 0–1 | 0–1 |
n | 1–128 | chỉ 1 | 1–8 |
stop | Tối đa 4 | Tối đa 4 | Tối đa 5 |
tools | ✅ | ✅ | ✅ |
response_format | ✅ | ✅ (json_schema) | ✅ |
logprobs | ✅ | ❌ | ❌ |
reasoning_effort | o-series, GPT-5.1+ | ❌ | ❌ (dùng thinking cho Gemini native) |
max_tokens và max_completion_tokens
max_tokens — Tham số cũ. Hoạt động với hầu hết các model nhưng đã bị deprecate đối với các model OpenAI mới hơn.max_completion_tokens — Tham số được khuyến nghị cho GPT-4.1, dòng GPT-5 và các model o-series. Bắt buộc với các reasoning model vì nó bao gồm cả output tokens và reasoning tokens.role system và developer
system — Role chỉ dẫn truyền thống. Hoạt động với tất cả các model.developer — Được giới thiệu cùng các model o1. Cung cấp khả năng tuân theo chỉ dẫn mạnh hơn cho các model mới hơn. Sẽ quay về hành vi của system trên các model cũ hơn.developer cho các dự án mới nhắm đến GPT-4.1+ hoặc các model o-series.429 Too Many Requests, hãy triển khai exponential backoff:
import time
import random
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://api.cometapi.com/v1",
api_key="<COMETAPI_KEY>",
)
def chat_with_retry(messages, max_retries=3):
for i in range(max_retries):
try:
return client.chat.completions.create(
model="gpt-5.4",
messages=messages,
)
except RateLimitError:
if i < max_retries - 1:
wait_time = (2 ** i) + random.random()
time.sleep(wait_time)
else:
raise
messages:
messages = [
{"role": "developer", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is Python?"},
{"role": "assistant", "content": "Python is a high-level programming language..."},
{"role": "user", "content": "What are its main advantages?"},
]
finish_reason có nghĩa là gì?| Value | Meaning |
|---|---|
stop | Hoàn tất tự nhiên hoặc chạm vào một stop sequence. |
length | Đạt giới hạn max_tokens hoặc max_completion_tokens. |
tool_calls | Model đã gọi một hoặc nhiều tool/function call. |
content_filter | Output đã bị lọc do chính sách nội dung. |
max_completion_tokens để giới hạn độ dài output.gpt-5.4-mini hoặc gpt-5.4-nano cho các tác vụ đơn giản hơn).usage.Bearer token authentication. Use your CometAPI key.
Model ID to use for this request. See the Models page for current options.
"gpt-4.1"
A list of messages forming the conversation. Each message has a role (system, user, assistant, or developer) and content (text string or multimodal content array).
Show child attributes
If true, partial response tokens are delivered incrementally via server-sent events (SSE). The stream ends with a data: [DONE] message.
Sampling temperature between 0 and 2. Higher values (e.g., 0.8) produce more random output; lower values (e.g., 0.2) make output more focused and deterministic. Recommended to adjust this or top_p, but not both.
0 <= x <= 2Nucleus sampling parameter. The model considers only the tokens whose cumulative probability reaches top_p. For example, 0.1 means only the top 10% probability tokens are considered. Recommended to adjust this or temperature, but not both.
0 <= x <= 1Number of completion choices to generate for each input message. Defaults to 1.
Up to 4 sequences where the API will stop generating further tokens. Can be a string or an array of strings.
Maximum number of tokens to generate in the completion. The total of input + output tokens is capped by the model's context length.
Number between -2.0 and 2.0. Positive values penalize tokens based on whether they have already appeared, encouraging the model to explore new topics.
-2 <= x <= 2Number between -2.0 and 2.0. Positive values penalize tokens proportionally to how often they have appeared, reducing verbatim repetition.
-2 <= x <= 2A JSON object mapping token IDs to bias values from -100 to 100. The bias is added to the model's logits before sampling. Values between -1 and 1 subtly adjust likelihood; -100 or 100 effectively ban or force selection of a token.
A unique identifier for your end-user. Helps with abuse detection and monitoring.
An upper bound for the number of tokens to generate, including visible output tokens and reasoning tokens. Use this instead of max_tokens for GPT-4.1+, GPT-5 series, and o-series models.
Specifies the output format. Use {"type": "json_object"} for JSON mode, or {"type": "json_schema", "json_schema": {...}} for strict structured output.
Show child attributes
A list of tools the model may call. Currently supports function type tools.
Show child attributes
Controls how the model selects tools. auto (default): model decides. none: no tools. required: must call a tool.
Whether to return log probabilities of the output tokens.
Number of most likely tokens to return at each position (0-20). Requires logprobs to be true.
0 <= x <= 20Controls the reasoning effort for o-series and GPT-5.1+ models.
low, medium, high Options for streaming. Only valid when stream is true.
Show child attributes
Specifies the processing tier.
auto, default, flex, priority Successful chat completion response.
Unique completion identifier.
"chatcmpl-abc123"
chat.completion "chat.completion"
Unix timestamp of creation.
1774412483
The model used (may include version suffix).
"gpt-5.4-2025-07-16"
Array of completion choices.
Show child attributes
Show child attributes
"default"
"fp_490a4ad033"
from openai import OpenAI
client = OpenAI(
base_url="https://api.cometapi.com/v1",
api_key="<COMETAPI_KEY>",
)
completion = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"},
],
)
print(completion.choices[0].message){
"id": "chatcmpl-DNA27oKtBUL8TmbGpBM3B3zhWgYfZ",
"object": "chat.completion",
"created": 1774412483,
"model": "gpt-4.1-nano-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Four",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 29,
"completion_tokens": 2,
"total_tokens": 31,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"service_tier": "default",
"system_fingerprint": "fp_490a4ad033"
}