Przejdź do głównej treści
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 natywnie obsługuje Anthropic Messages API, zapewniając bezpośredni dostęp do modeli Claude ze wszystkimi funkcjami specyficznymi dla Anthropic. Użyj tego endpointu do możliwości dostępnych wyłącznie w Claude, takich jak extended thinking, prompt caching i effort control.
Do uwierzytelniania obsługiwane są zarówno nagłówki x-api-key, jak i Authorization: Bearer. Oficjalne SDK Anthropic domyślnie używają x-api-key.

Szybki start

Aby używać oficjalnego SDK Anthropic z CometAPI, ustaw bazowy 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)

Włącz extended thinking

Włącz rozumowanie Claude krok po kroku za pomocą parametru thinking. Odpowiedź zawiera bloki treści thinking, które pokazują wewnętrzne rozumowanie Claude przed ostateczną odpowiedzią.
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 wymaga minimalnej wartości budget_tokens wynoszącej 1,024. Tokeny thinking są wliczane do limitu max_tokens — ustaw max_tokens wystarczająco wysoko, aby pomieścić zarówno thinking, jak i odpowiedź.

Buforowanie promptów

Aby zmniejszyć opóźnienia i koszty przy kolejnych żądaniach, buforuj duże systemowe prompty lub prefiksy konwersacji. Dodaj cache_control do bloków treści, które mają być buforowane:
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..."}],
)
Użycie cache jest raportowane w polu usage odpowiedzi:
  • cache_creation_input_tokens — tokeny zapisane do cache (rozliczane według wyższej stawki)
  • cache_read_input_tokens — tokeny odczytane z cache (rozliczane według obniżonej stawki)
Prompt caching wymaga minimum 1,024 tokens w buforowanym bloku treści. Krótsza treść nie będzie buforowana.

Streamowanie odpowiedzi

Aby streamować odpowiedzi za pomocą Server-Sent Events (SSE), ustaw stream: true. Zdarzenia docierają w tej kolejności:
  1. message_start — zawiera metadane wiadomości i początkowe użycie
  2. content_block_start — oznacza początek każdego bloku content
  3. content_block_delta — przyrostowe fragmenty tekstu (text_delta)
  4. content_block_stop — oznacza koniec każdego bloku content
  5. message_delta — końcowy stop_reason i pełne usage
  6. message_stop — sygnalizuje koniec strumienia
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="")

Kontrolowanie poziomu wysiłku

Aby kontrolować, ile wysiłku Claude wkłada w wygenerowanie odpowiedzi, użyj 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"
)

Używanie narzędzi serwerowych

Claude obsługuje narzędzia po stronie serwera, które działają na infrastrukturze Anthropic:
Pobieraj i analizuj content z adresów 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}
    ],
)

Przykład odpowiedzi

Typowa odpowiedź z endpointu Anthropic w 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
  }
}

Porównanie z endpointem kompatybilnym z OpenAI

FunkcjaAnthropic Messages (/v1/messages)OpenAI-Compatible (/v1/chat/completions)
Extended thinkingparametr thinking z budget_tokensNiedostępne
Prompt cachingcache_control w blokach contentNiedostępne
Kontrola poziomu wysiłkuoutput_config.effortNiedostępne
Web fetch/searchNarzędzia serwerowe (web_fetch, web_search)Niedostępne
Nagłówek autoryzacjix-api-key lub Bearertylko Bearer
Format odpowiedziFormat Anthropic (bloki content)Format OpenAI (choices, message)
ModeleTylko ClaudeMulti-provider (GPT, Claude, Gemini itp.)

Autoryzacje

x-api-key
string
header
wymagane

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

Nagłówki

anthropic-version
string
domyślnie:2023-06-01

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

Przykład:

"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.

Treść

application/json
model
string
wymagane

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

Przykład:

"claude-sonnet-4-6"

messages
object[]
wymagane

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
wymagane

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.

Wymagany zakres: x >= 1
Przykład:

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
domyślnie: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.

Wymagany zakres: 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.

Wymagany zakres: 0 <= x <= 1
top_k
integer

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

Wymagany zakres: x >= 0
stream
boolean
domyślnie: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.

Dostępne opcje:
auto,
standard_only

Odpowiedź

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.

Dostępne opcje:
message
role
enum<string>

Always assistant.

Dostępne opcje:
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.

Dostępne opcje:
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.