Chuyển đến nội dung chính
POST
/
v1
/
messages
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.cometapi.com",
    api_key="<COMETAPI_KEY>",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="You are a helpful assistant.",
    messages=[
        {"role": "user", "content": "Hello, world"}
    ],
)

print(message.content[0].text)
{
  "id": "<string>",
  "content": [
    {
      "text": "<string>",
      "thinking": "<string>",
      "signature": "<string>",
      "id": "<string>",
      "name": "<string>",
      "input": {}
    }
  ],
  "model": "<string>",
  "stop_sequence": "<string>",
  "usage": {
    "input_tokens": 123,
    "output_tokens": 123,
    "cache_creation_input_tokens": 123,
    "cache_read_input_tokens": 123,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 123,
      "ephemeral_1h_input_tokens": 123
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

CometAPI hỗ trợ API Anthropic Messages một cách nguyên bản, cho phép bạn truy cập trực tiếp vào các model Claude với đầy đủ các tính năng đặc thù của Anthropic. Hãy dùng endpoint này cho các khả năng dành riêng cho Claude như extended thinking, prompt caching và effort control.
Cả header x-api-keyAuthorization: Bearer đều được hỗ trợ để xác thực. Các SDK Anthropic chính thức mặc định sử dụng x-api-key.

Bắt đầu nhanh

Để sử dụng SDK Anthropic chính thức với CometAPI, hãy đặt base URL:
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.cometapi.com",
    api_key="<COMETAPI_KEY>",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content[0].text)

Bật extended thinking

Bật khả năng suy luận từng bước của Claude bằng tham số thinking. Phản hồi sẽ bao gồm các khối nội dung thinking hiển thị phần suy luận nội bộ của Claude trước câu trả lời cuối cùng.
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000,
    },
    messages=[
        {"role": "user", "content": "Prove that there are infinitely many primes."}
    ],
)

for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking[:200]}...")
    elif block.type == "text":
        print(f"Answer: {block.text}")
Thinking yêu cầu budget_tokens tối thiểu là 1,024. Thinking tokens được tính vào giới hạn max_tokens của bạn — hãy đặt max_tokens đủ cao để chứa cả phần thinking và phần phản hồi.

Lưu cache Prompt

Để giảm độ trễ và chi phí cho các request tiếp theo, hãy lưu cache các system prompt lớn hoặc tiền tố hội thoại. Thêm cache_control vào các khối nội dung cần được lưu cache:
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are an expert code reviewer. [Long detailed instructions...]",
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": "Review this code..."}],
)
Việc sử dụng cache được báo cáo trong trường usage của phản hồi:
  • cache_creation_input_tokens — số tokens được ghi vào cache (tính phí ở mức cao hơn)
  • cache_read_input_tokens — số tokens được đọc từ cache (tính phí ở mức thấp hơn)
Prompt caching yêu cầu tối thiểu 1,024 tokens trong khối nội dung được lưu cache. Nội dung ngắn hơn mức này sẽ không được lưu cache.

Stream phản hồi

Để stream phản hồi bằng Server-Sent Events (SSE), đặt stream: true. Các sự kiện đến theo thứ tự sau:
  1. message_start — chứa metadata của message và usage ban đầu
  2. content_block_start — đánh dấu điểm bắt đầu của mỗi khối nội dung
  3. content_block_delta — các đoạn văn bản tăng dần (text_delta)
  4. content_block_stop — đánh dấu kết thúc của mỗi khối nội dung
  5. message_deltastop_reason cuối cùng và usage đầy đủ
  6. message_stop — báo hiệu kết thúc stream
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=256,
    messages=[{"role": "user", "content": "Hello"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="")

Kiểm soát effort

Để kiểm soát mức độ effort mà Claude dùng để tạo phản hồi, sử dụng output_config.effort:
message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Summarize this briefly."}
    ],
    output_config={"effort": "low"},  # "low", "medium", or "high"
)

Sử dụng server tools

Claude hỗ trợ các tool phía máy chủ chạy trên hạ tầng của Anthropic:
Tìm nạp và phân tích nội dung từ URL:
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Analyze the content at https://arxiv.org/abs/1512.03385"}
    ],
    tools=[
        {"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}
    ],
)

Ví dụ phản hồi

Một phản hồi điển hình từ endpoint Anthropic của CometAPI:
{
  "id": "msg_bdrk_01UjHdmSztrL7QYYm7CKBDFB",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello!"
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 19,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 0
    },
    "output_tokens": 4
  }
}

So sánh với endpoint tương thích OpenAI

Tính năngAnthropic Messages (/v1/messages)OpenAI-Compatible (/v1/chat/completions)
Extended thinkingTham số thinking với budget_tokensKhông khả dụng
Prompt cachingcache_control trên các khối contentKhông khả dụng
Kiểm soát effortoutput_config.effortKhông khả dụng
Web fetch/searchServer tools (web_fetch, web_search)Không khả dụng
Header xác thựcx-api-key hoặc BearerChỉ Bearer
Định dạng phản hồiĐịnh dạng Anthropic (các khối content)Định dạng OpenAI (choices, message)
ModelsChỉ ClaudeNhiều nhà cung cấp (GPT, Claude, Gemini, v.v.)

Ủy quyền

x-api-key
string
header
bắt buộc

Your CometAPI key passed via the x-api-key header. Authorization: Bearer <key> is also supported.

Tiêu đề

anthropic-version
string
mặc định:2023-06-01

The Anthropic API version to use. Defaults to 2023-06-01.

Ví dụ:

"2023-06-01"

anthropic-beta
string

Comma-separated list of beta features to enable. Examples: max-tokens-3-5-sonnet-2024-07-15, pdfs-2024-09-25, output-128k-2025-02-19.

Nội dung

application/json
model
string
bắt buộc

The Claude model to use. See the Models page for current Claude model IDs.

Ví dụ:

"claude-sonnet-4-6"

messages
object[]
bắt buộc

The conversation messages. Must alternate between user and assistant roles. Each message's content can be a string or an array of content blocks (text, image, document, tool_use, tool_result). There is a limit of 100,000 messages per request.

max_tokens
integer
bắt buộc

The maximum number of tokens to generate. The model may stop before reaching this limit. When using thinking, the thinking tokens count towards this limit.

Phạm vi bắt buộc: x >= 1
Ví dụ:

1024

system

System prompt providing context and instructions to Claude. Can be a plain string or an array of content blocks (useful for prompt caching).

temperature
number
mặc định:1

Controls randomness in the response. Range: 0.0–1.0. Use lower values for analytical tasks and higher values for creative tasks. Defaults to 1.0.

Phạm vi bắt buộc: 0 <= x <= 1
top_p
number

Nucleus sampling threshold. Only tokens with cumulative probability up to this value are considered. Range: 0.0–1.0. Use either temperature or top_p, not both.

Phạm vi bắt buộc: 0 <= x <= 1
top_k
integer

Only sample from the top K most probable tokens. Recommended for advanced use cases only.

Phạm vi bắt buộc: x >= 0
stream
boolean
mặc định:false

If true, stream the response incrementally using Server-Sent Events (SSE). Events include message_start, content_block_start, content_block_delta, content_block_stop, message_delta, and message_stop.

stop_sequences
string[]

Custom strings that cause the model to stop generating when encountered. The stop sequence is not included in the response.

thinking
object

Enable extended thinking — Claude's step-by-step reasoning process. When enabled, the response includes thinking content blocks before the answer. Requires a minimum budget_tokens of 1,024.

tools
object[]

Tools the model may use. Supports client-defined functions, web search (web_search_20250305), web fetch (web_fetch_20250910), code execution (code_execution_20250522), and more.

tool_choice
object

Controls how the model uses tools.

metadata
object

Request metadata for tracking and analytics.

output_config
object

Configuration for output behavior.

service_tier
enum<string>

The service tier to use. auto tries priority capacity first, standard_only uses only standard capacity.

Tùy chọn có sẵn:
auto,
standard_only

Phản hồi

200 - application/json

Successful response. When stream is true, the response is a stream of SSE events.

id
string

Unique identifier for this message (e.g., msg_01XFDUDYJgAACzvnptvVoYEL).

type
enum<string>

Always message.

Tùy chọn có sẵn:
message
role
enum<string>

Always assistant.

Tùy chọn có sẵn:
assistant
content
object[]

The response content blocks. May include text, thinking, tool_use, and other block types.

model
string

The specific model version that generated this response (e.g., claude-sonnet-4-6).

stop_reason
enum<string>

Why the model stopped generating.

Tùy chọn có sẵn:
end_turn,
max_tokens,
stop_sequence,
tool_use,
pause_turn
stop_sequence
string | null

The stop sequence that caused the model to stop, if applicable.

usage
object

Token usage statistics.