Hoppa till huvudinnehåll
Anthropic Claude är ett mycket kraftfullt AI-konversationssystem som kan generera flytande och naturliga svar på bara några sekunder genom att mata in en prompt. Claude Messages API är Anthropics officiella inbyggda API-format, som skiljer sig från OpenAI:s kompatibla format (Chat Completion) genom att använda Anthropics egna begäran och svarstruktur, vilket gör det möjligt att bättre utnyttja Claudes unika förmågor, såsom multimodal innehållsinmatning, verktygsanrop, djup tänkande (Extended Thinking) och andra avancerade funktioner. Detta dokument beskriver huvudsakligen användningsflödet för Claude Messages API, vilket gör att vi kan använda ett inbyggt gränssnitt som är i linje med Anthropics officiella för att anropa Claudes konversationsfunktioner.

Ansökningsprocess

För att använda Claude Messages API kan du först gå till Claude Messages API sidan och klicka på “Acquire”-knappen för att få de nödvändiga autentiseringsuppgifterna: Om du inte har loggat in eller registrerat dig kommer du automatiskt att omdirigeras till inloggningssidan där du uppmanas att registrera dig och logga in. Efter att ha loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan. Vid första ansökan kommer det att finnas en gratis kvot som gör att du kan använda API:et kostnadsfritt.

Grundläggande Användning

Begärans väg för Claude Messages API är /v1/messages, vilket är i linje med Anthropics officiella API. Vi behöver minst tillhandahålla tre obligatoriska parametrar:
  • model: Välj vilken Claude-modell som ska användas, som claude-opus-4-20250514, claude-sonnet-4-20250514 etc.
  • messages: Inmatningsmeddelande-array, där varje meddelande innehåller role (roll) och content (innehåll), där role stöder user och assistant.
  • max_tokens: Maximalt antal utdata-token, som används för att begränsa längden på ett enstaka svar.
Vanliga valfria parametrar:
  • system: Systemprompt, som används för att ställa in modellens beteende och roll.
  • temperature: Genereringsslumptal, mellan 0-1, där ett högre värde ger mer spridda svar.
  • stream: Om strömmande svar ska användas, sätts till true för att uppnå ett ord-för-ord-returresultat.
  • stop_sequences: Anpassade stoppsekvenser, modellen slutar generera när den stöter på dessa texter.
  • top_p: Kärnprovningsparameter, som tillsammans med temperature kontrollerar den genererade slumpmässigheten.
  • top_k: Prover endast från de K mest sannolika alternativen.
  • tools: Verktygsdefinition, som gör att modellen kan anropa externa funktioner.
  • tool_choice: Kontrollerar hur modellen använder de tillhandahållna verktygen.

cURL Exempel

curl -X POST 'https://api.acedata.cloud/v1/messages' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer {token}' \
  -H 'content-type: application/json' \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Hello, Claude"
      }
    ]
  }'

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
        {"role": "user", "content": "Hello, Claude"}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Efter anropet returneras följande resultat:
{
  "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hi! My name is Claude. How can I help you today?"
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 12,
    "output_tokens": 15
  }
}
Förklaring av returresultatsfält:
  • id: Den unika identifieraren för detta meddelande.
  • type: Alltid message.
  • role: Alltid assistant.
  • content: Svarsinnehållsarray, där varje element innehåller type (som text) och motsvarande innehåll.
  • model: Namnet på modellen som hanterar begäran.
  • stop_reason: Anledningen till att det stoppades, möjliga värden inkluderar end_turn (normal avslutning), max_tokens (nått maximal längd), stop_sequence (stött på stoppsekvens), tool_use (verktygsanrop).
  • stop_sequence: Om det stoppades på grund av en anpassad stoppsekvens, visas den matchande stoppsekvensens text.
  • usage: Token-användningsstatistik, inklusive input_tokens (antal inmatningstoken) och output_tokens (antal utmatningstoken).

Systemprompt

Claude Messages API stöder att ställa in systemprompt genom system-fältet, vilket används för att definiera modellens beteende, roll och kontext.

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "system": "Du är en professionell kinesisk översättningsassistent, vänligen översätt användarens inmatade engelska till kinesiska.",
    "messages": [
        {"role": "user", "content": "The quick brown fox jumps over the lazy dog."}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Genom att ställa in system-prompten kan man exakt kontrollera Claudes roll och beteende.

Strömmande Svar

Detta gränssnitt stöder också strömmande svar, genom att sätta stream-parametern till true kan man få ett steg-för-steg-returresultat, vilket är mycket lämpligt för att implementera ord-för-ord-visning på en webbsida.

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "stream": True,
    "messages": [
        {"role": "user", "content": "Hello, Claude"}
    ]
}

response = requests.post(url, json=payload, headers=headers, stream=True)
for line in response.iter_lines():
    if line:
        print(line.decode("utf-8"))
Strömmande svar returneras i Server-Sent Events (SSE) format, där varje rad inleds med event: och data:. Typer av strömmande händelser inkluderar:
  • message_start: Meddelande börjar, innehåller grundläggande information om meddelandet och modellens namn.
  • content_block_start: Innehållsblock börjar.
  • content_block_delta: Innehållsblockets inkrementella uppdatering, innehåller nygenererade textstycken.
  • content_block_stop: Innehållsblock slutar.
  • message_delta: Inkrementell uppdatering på meddelandenivå, innehåller stop_reason och slutlig usage information.
  • message_stop: Meddelande slutar.
Utdataeffekten ser ut som följer:
event: message_start
data: {"type":"message_start","message":{"id":"msg_01XFDUDYJgAACzvnptvVoYEL","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-20250514","stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":12,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hej"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"! Mitt namn är"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Claude. Hur kan jag hjälpa dig idag?"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":15}}

event: message_stop
data: {"type":"message_stop"}
Kan ses, att den strömmande responsen innehåller content_block_delta händelser som inkluderar stegvis genererat textinnehåll, genom att sammanfoga alla text_delta kan man få den fullständiga svaret.

JavaScript Exempel

const options = {
  method: "POST",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-sonnet-4-20250514",
    max_tokens: 1024,
    stream: true,
    messages: [{ role: "user", content: "Hej, Claude" }],
  }),
};

const response = await fetch("https://api.acedata.cloud/v1/messages", options);
const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  console.log(decoder.decode(value));
}

Flera rundor av dialog

Om du vill integrera flera rundor av dialogfunktionalitet, behöver du växla mellan user och assistant roller i messages arrayen och inkludera tidigare dialoghistorik.

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
        {"role": "user", "content": "Hej, mitt namn är Alice."},
        {"role": "assistant", "content": "Hej Alice! Trevligt att träffas. Hur kan jag hjälpa dig idag?"},
        {"role": "user", "content": "Vad är mitt namn?"}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Resultatet blir som följer:
{
  "id": "msg_01Y1wfQmd89g968TVbFu57Yc",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ditt namn är Alice, som du just berättade för mig!"
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 40,
    "output_tokens": 14
  }
}
Genom att skicka den fullständiga dialoghistoriken i messages, kan Claude kombinera kontexten för att ge exakta svar.

Djup tänkande modell

Claude stöder Extended Thinking (djup tänkande) funktionalitet, vilket gör att modellen kan utföra intern resonemang innan den svarar, vilket ökar noggrannheten vid hantering av komplexa frågor. För att använda denna funktion måste thinking parametern skickas.

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 16000,
    "thinking": {
        "type": "enabled",
        "budget_tokens": 10000
    },
    "messages": [
        {"role": "user", "content": "Vad är sinus av 30 grader? Visa ditt resonemang."}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Resultatet blir som följer:
{
  "id": "msg_018J4YaRoGHtbsTVb4Vvz7oH",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "thinking",
      "thinking": "Användaren frågar efter sinus av 30 grader. Detta är en grundläggande trigonometrifråga.\n\nI en 30-60-90 triangel är sidorna i förhållandet 1:√3:2.\n\nFör en 30° vinkel:\n- Den motsatta sidan är 1\n- Hypotenusan är 2\n- Så sin(30°) = motsatt/hypotenusa = 1/2 = 0.5"
    },
    {
      "type": "text",
      "text": "Sinus av 30 grader är **1/2** eller **0.5**.\n\nDetta är ett av de grundläggande trigonometriska värdena. I en 30-60-90 triangel är sidorna i förhållandet 1:√3:2, där sidan motsatt till 30° vinkeln har längd 1 och hypotenusan har längd 2, vilket ger oss sin(30°) = 1/2."
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 28,
    "output_tokens": 239
  }
}
Det kan ses att content arrayen innehåller två innehållsblock:
  • type: "thinking": modellens interna tänkande process, som visar resonemanget.
  • type: "text": det slutliga svaret.
Viktiga punkter:
  • När thinking används, måste max_tokens vara större än budget_tokens, eftersom budget_tokens är den tokenbudget som tilldelas tänkande processen.
  • Ju större budget_tokens, desto mer utrymme har modellen för djupare resonemang, vilket är lämpligt för att hantera komplexa frågor.

Visuell modell

Claude stöder multimodal inmatning och kan samtidigt hantera text och bilder. I Messages API kan du använda visuella funktioner genom att ställa in content som en array och inkludera bildinnehållsblock.

Använda Base64-kodad bild

import base64
import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

# Läs och koda bilden
with open("image.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "Vad finns i denna bild?"
                }
            ]
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

Använda URL-bild

```python
import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://cdn.acedata.cloud/ueugot.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Vad finns i den här bilden?"
                }
            ]
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

cURL Exempel

curl -X POST 'https://api.acedata.cloud/v1/messages' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer {token}' \
  -H 'content-type: application/json' \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "image",
            "source": {
              "type": "url",
              "url": "https://cdn.acedata.cloud/ueugot.png"
            }
          },
          {
            "type": "text",
            "text": "Vad'\''s i den här bilden?"
          }
        ]
      }
    ]
  }'
Stödda bildformat inkluderar: image/jpeg, image/png, image/gif, image/webp. Exempel på returresultat:
{
  "id": "msg_01NCrxpZmV17bhQJJRQEFEb9",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Den här bilden visar ett API-förfrågningskonfigurationsgränssnitt för vad som verkar vara en AI-chattkompletteringstjänst. Gränssnittet inkluderar parametrar för modellval, meddelanden, strömningläge och inställningar för max tokens."
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 1570,
    "output_tokens": 52
  }
}

Verktygsanrop (Tool Use)

Claude Messages API stöder inbyggd verktygsanropsfunktionalitet, vilket gör att modellen kan anropa fördefinierade verktyg/funktioner vid behov.

Python Exempel

import requests

url = "https://api.acedata.cloud/v1/messages"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "tools": [
        {
            "name": "get_weather",
            "description": "Hämta det aktuella vädret på en given plats",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Staden och staten, t.ex. San Francisco, CA"
                    }
                },
                "required": ["location"]
            }
        }
    ],
    "messages": [
        {"role": "user", "content": "Hur är vädret i San Francisco?"}
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
När modellen beslutar att anropa ett verktyg kommer content i returresultatet att innehålla en innehållsblock av typen tool_use:
{
  "id": "msg_01Aq9w938a90dw8q",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Låt mig kolla vädret i San Francisco för dig."
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lgs",
      "name": "get_weather",
      "input": {
        "location": "San Francisco, CA"
      }
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "tool_use",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 120,
    "output_tokens": 68
  }
}
Observera att stop_reason är tool_use, vilket indikerar att modellen behöver anropa ett verktyg. När du får detta resultat måste du utföra verktygsfunktionen och återföra resultatet i form av tool_result till modellen:
payload = {
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "tools": [
        {
            "name": "get_weather",
            "description": "Hämta det aktuella vädret på en given plats",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Staden och staten, t.ex. San Francisco, CA"
                    }
                },
                "required": ["location"]
            }
        }
    ],
    "messages": [
        {"role": "user", "content": "Hur är vädret i San Francisco?"},
        {
            "role": "assistant",
            "content": [
                {"type": "text", "text": "Låt mig kolla vädret i San Francisco för dig."},
                {"type": "tool_use", "id": "toolu_01A09q90qw90lq917835lgs", "name": "get_weather", "input": {"location": "San Francisco, CA"}}
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "tool_result",
                    "tool_use_id": "toolu_01A09q90qw90lq917835lgs",
                    "content": "Soligt, 22°C"
                }
            ]
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Modellen kommer att generera det slutliga naturliga språksvaret baserat på resultatet från verktyget.

Skillnader mellan Chat Completion API

Ace Data Cloud erbjuder två typer av Claude API-format, de huvudsakliga skillnaderna är som följer:
FunktionMessages API (/v1/messages)Chat Completion API (/v1/chat/completions)
FormatAnthropic inbyggt formatOpenAI kompatibelt format
SystempromptSeparat system fältGenom messages med role: "system"
Svarstrukturcontent array (stödjer flera typer)choices array (innehåller message)
StrömformatSSE-händelser (flera händelsetyper)SSE data rader
Djup tänkandeInbyggd thinking parameterUtlöses genom särskilt modellnamn (t.ex. -thinking suffix)
VerktygsanropInbyggda tools + input_schemaOpenAI kompatibelt functions format
Token statistikinput_tokens / output_tokensprompt_tokens / completion_tokens
Om ditt system redan är integrerat med OpenAI-formatet kan du använda Chat Completion API för att sömlöst växla. Om du behöver använda Claudes fulla inbyggda kapabiliteter rekommenderas det att använda Messages API.

Felhantering

Vid anrop av API:et, om ett fel uppstår, kommer API:et att returnera motsvarande felkod och information. Till exempel:
  • 400 token_mismatched: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obemyndigad, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests: För många förfrågningar, du har överskridit hastighetsgränsen.
  • 500 api_error: Internt serverfel, något gick fel på servern.

Exempel på felrespons

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "hämtning misslyckades"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Slutsats

Genom detta dokument har du fått en förståelse för hur man använder Claude Messages API för att anropa Claudes samtalsfunktioner i Anthropic inhemskt format. Messages API stöder grundläggande samtal, systempromptar, strömmande svar, flerrundiga samtal, djupgående tänkande, visuell förståelse och verktygsanrop med flera rika funktioner. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.