Vai al contenuto principale
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>",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<string>",
      "thinking": "<string>",
      "signature": "<string>",
      "id": "<string>",
      "name": "<string>",
      "input": {}
    }
  ],
  "model": "<string>",
  "stop_reason": "end_turn",
  "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
    }
  }
}

Panoramica

CometAPI supporta nativamente l’API Anthropic Messages, offrendoti accesso diretto ai modelli Claude con tutte le funzionalità specifiche di Anthropic. Usa questo endpoint per capacità esclusive di Claude come extended thinking, prompt caching e controllo dell’effort.

Avvio rapido

Usa l’SDK ufficiale di Anthropic — ti basta impostare l’URL di base su CometAPI:
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)
Sono supportate sia le intestazioni x-api-key sia Authorization: Bearer per l’autenticazione. Gli SDK ufficiali di Anthropic usano x-api-key per impostazione predefinita.

Extended Thinking

Abilita il ragionamento passo dopo passo di Claude con il parametro thinking. La risposta include blocchi di contenuto thinking che mostrano il ragionamento interno di Claude prima della risposta finale.
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 richiede un valore minimo di budget_tokens pari a 1,024. I token di thinking vengono conteggiati nel limite max_tokens — imposta max_tokens a un valore sufficientemente alto per includere sia il thinking sia la risposta.

Prompt Caching

Memorizza nella cache prompt di sistema di grandi dimensioni o prefissi di conversazione per ridurre latenza e costo nelle richieste successive. Aggiungi cache_control ai blocchi di contenuto che devono essere memorizzati nella 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..."}],
)
L’utilizzo della cache viene riportato nel campo usage della risposta:
  • cache_creation_input_tokens — token scritti nella cache (fatturati a una tariffa più alta)
  • cache_read_input_tokens — token letti dalla cache (fatturati a una tariffa ridotta)
Il prompt caching richiede un minimo di 1,024 token nel blocco di contenuto memorizzato nella cache. I contenuti più brevi non verranno memorizzati nella cache.

Streaming

Trasmetti le risposte in Streaming usando Server-Sent Events (SSE) impostando stream: true. Gli eventi arrivano in questo ordine:
  1. message_start — contiene i metadati del messaggio e l’utilizzo iniziale
  2. content_block_start — indica l’inizio di ciascun blocco di contenuto
  3. content_block_delta — frammenti di testo incrementali (text_delta)
  4. content_block_stop — indica la fine di ciascun blocco di contenuto
  5. message_deltastop_reason finale e usage completo
  6. message_stop — segnala la fine dello 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="")

Controllo dell’effort

Controlla quanto effort Claude mette nella generazione di una risposta con 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"
)

Server Tools

Claude supporta strumenti lato server che vengono eseguiti sull’infrastruttura di Anthropic:
Recupera e analizza contenuti da 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}
    ],
)

Esempio di risposta

Una risposta tipica dall’endpoint Anthropic di 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
  }
}

Differenze principali rispetto all’endpoint compatibile con OpenAI

FunzionalitàAnthropic Messages (/v1/messages)OpenAI-Compatible (/v1/chat/completions)
Extended thinkingparametro thinking con budget_tokensNon disponibile
Prompt cachingcache_control sui blocchi di contenutoNon disponibile
Controllo dell’effortoutput_config.effortNon disponibile
Web fetch/searchServer tools (web_fetch, web_search)Non disponibile
Header di autenticazionex-api-key o BearerSolo Bearer
Formato della rispostaformato Anthropic (content blocks)formato OpenAI (choices, message)
ModelliSolo ClaudeMulti-provider (GPT, Claude, Gemini, ecc.)

Autorizzazioni

x-api-key
string
header
obbligatorio

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

Intestazioni

anthropic-version
string
predefinito:2023-06-01

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

Esempio:

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

Corpo

application/json
model
string
obbligatorio

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

Esempio:

"claude-sonnet-4-6"

messages
object[]
obbligatorio

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
obbligatorio

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.

Intervallo richiesto: x >= 1
Esempio:

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
predefinito: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.

Intervallo richiesto: 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.

Intervallo richiesto: 0 <= x <= 1
top_k
integer

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

Intervallo richiesto: x >= 0
stream
boolean
predefinito: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.

Opzioni disponibili:
auto,
standard_only

Risposta

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.

Opzioni disponibili:
message
role
enum<string>

Always assistant.

Opzioni disponibili:
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.

Opzioni disponibili:
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.