> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Chat Completion API 申请及使用

> Claude AI 集成指南 - XHuoAPI

Anthropic Claude to bardzo potężny system AI do rozmów, który po wprowadzeniu podpowiedzi potrafi w ciągu kilku sekund wygenerować płynne i naturalne odpowiedzi. Claude wyróżnia się w branży dzięki swoim doskonałym zdolnościom rozumienia i generowania języka, a obecnie jest szeroko stosowany w różnych branżach i dziedzinach, a jego wpływ staje się coraz bardziej znaczący. Niezależnie od tego, czy chodzi o codzienne rozmowy, kreatywne pisanie, czy profesjonalne doradztwo i programowanie, Claude może zapewnić zdumiewającą inteligentną pomoc, znacznie zwiększając wydajność i kreatywność ludzi.

Dokument ten głównie opisuje proces korzystania z API Claude Chat Completion, dzięki któremu możemy łatwo korzystać z oficjalnych funkcji rozmowy Claude.

## 申请流程

Aby korzystać z API Claude Chat Completion, najpierw można przejść na stronę [Claude Chat Completion API](https://api.xhuoapi.ai/documents/280928a2-2dce-419c-adb5-1ea835e8183a) i kliknąć przycisk „Acquire”, aby uzyskać potrzebne poświadczenia:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zalogowaniu zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę.

Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na bezpłatne korzystanie z tego API.

## 基本使用

Następnie możesz wypełnić odpowiednie treści na interfejsie, jak pokazano na obrazku:

<p>
  <img src="https://cdn.xhuoapi.ai/ejeq57.png" width="400" className="m-auto" />
</p>

Podczas pierwszego korzystania z tego interfejsu musimy wypełnić co najmniej trzy pola: jedno to `authorization`, które można wybrać bezpośrednio z rozwijanej listy. Kolejnym parametrem jest `model`, który oznacza wybór modelu z oficjalnej strony Claude, mamy tutaj głównie 20 modeli, szczegóły można zobaczyć w dostarczonych modelach. Ostatnim parametrem jest `messages`, `messages` to tablica naszych pytań, która jest tablicą, co oznacza, że można przesłać wiele pytań jednocześnie, każde pytanie zawiera `role` i `content`, gdzie `role` oznacza rolę pytającego, oferujemy trzy tożsamości: `user`, `assistant`, `system`. Drugim `content` jest konkretna treść naszego pytania.

Możesz również zauważyć, że po prawej stronie znajduje się odpowiedni kod do wywołania, który możesz skopiować i uruchomić, lub możesz bezpośrednio kliknąć przycisk „Try”, aby przetestować.

Często używane opcjonalne parametry:

* `max_tokens`: ogranicza maksymalną liczbę tokenów w jednej odpowiedzi.
* `temperature`: generuje losowość, w zakresie od 0 do 2, im wyższa wartość, tym bardziej rozproszone.
* `n`: ile kandydatów odpowiedzi generować jednocześnie.
* `response_format`: ustawienia formatu odpowiedzi.

<p>
  <img src="https://cdn.xhuoapi.ai/v6lbjo.png" width="400" className="m-auto" />
</p>

Po wywołaniu zauważamy, że wynik zwrotny wygląda następująco:

```json theme={null}
{
  "id": "msg_bdrk_01Q6WN27v95ypCa1kbanAQ6K",
  "model": "claude-opus-4-20250514",
  "object": "chat.completion",
  "created": 1768619365,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 12,
    "total_tokens": 20,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 0,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
```

Wynik zwrotny zawiera wiele pól, które są opisane poniżej:

* `id`, identyfikator generowanego zadania rozmowy, używany do unikalnej identyfikacji tego zadania rozmowy.
* `model`, wybrany model z oficjalnej strony Claude.
* `choices`, informacje o odpowiedziach udzielonych przez Claude na pytania.
* `usage`: statystyki dotyczące tokenów dla tej sesji pytań i odpowiedzi.

Wśród nich `choices` zawiera informacje o odpowiedziach Claude, a w nim `choices` to konkretne informacje o odpowiedzi Claude, co można zobaczyć na obrazku.

<p>
  <img src="https://cdn.xhuoapi.ai/2ulyhw.png" width="400" className="m-auto" />
</p>

Można zauważyć, że pole `content` w `choices` zawiera konkretną treść odpowiedzi Claude.

## 流式响应

Ten interfejs obsługuje również odpowiedzi strumieniowe, co jest bardzo przydatne w integracji z stronami internetowymi, umożliwiając wyświetlanie efektu literowego.

Aby uzyskać odpowiedź strumieniową, można zmienić parametr `stream` w nagłówku żądania na `true`.

Zmiana jak pokazano na obrazku, jednak kod wywołania musi być odpowiednio zmieniony, aby obsługiwał odpowiedzi strumieniowe.

<p>
  <img src="https://cdn.xhuoapi.ai/ueugot.png" width="400" className="m-auto" />
</p>

Po zmianie `stream` na `true`, API będzie zwracać odpowiednie dane JSON w wierszach, a na poziomie kodu musimy wprowadzić odpowiednie zmiany, aby uzyskać wyniki w wierszach.

Przykładowy kod wywołania w Pythonie:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/v1/chat/completions"

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

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

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

Efekt wyjściowy wygląda następująco:

```json theme={null}
data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {"content": ""}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {"content": "Cześć!"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {"content": " Jak mogę ci pomóc"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {"content": " dzisiaj?"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [{"delta": {}, "logprobs": null, "finish_reason": "stop", "index": 0}], "usage": null}

data: {"id": "msg_bdrk_01LPPqDjLKMgfSwTRMRty9VT", "object": "chat.completion.chunk", "created": 1768619445, "model": "claude-opus-4-20250514", "system_fingerprint": null, "choices": [], "usage": {"prompt_tokens": 8, "completion_tokens": 12, "total_tokens": 20, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 0}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0}}

data: [DONE]
```

Można zauważyć, że odpowiedź zawiera wiele `data`, a `data` wewnątrz `choices` to najnowsza treść odpowiedzi, zgodna z opisanymi wcześniej treściami. `choices` to nowa treść odpowiedzi, którą można zintegrować z systemem. Zakończenie strumieniowej odpowiedzi można ocenić na podstawie zawartości `data`; jeśli zawartość to `[DONE]`, oznacza to, że strumieniowa odpowiedź została zakończona. Zwracane wyniki `data` mają wiele pól, które są opisane poniżej:

* `id`, identyfikator generowanego zadania rozmowy, używany do unikalnej identyfikacji tego zadania.
* `model`, wybrany model z oficjalnej strony Claude.
* `choices`, informacje o odpowiedziach udzielonych przez Claude na podstawie zapytań.

JavaScript również jest obsługiwany, na przykład kod do strumieniowego wywołania w Node.js wygląda następująco:

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-opus-4-20250514",
    messages: [{ role: "user", content: "Cześć" }],
    stream: true,
  }),
};

fetch("https://api.xhuoapi.ai/v1/v1/chat/completions", options)
  .then((response) => response.json())
  .then((response) => console.log(response))
  .catch((err) => console.error(err));
```

Przykładowy kod w Javie:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "claude-opus-4-20250514");
jsonObject.put("messages", [{"role":"user","content":"Cześć"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.xhuoapi.ai/v1/v1/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

Inne języki można dostosować samodzielnie, zasada jest taka sama.

## Wieloetapowa rozmowa

Jeśli chcesz zintegrować funkcję wieloetapowej rozmowy, musisz przesłać wiele zapytań w polu `messages`, a konkretne przykłady wielu zapytań są pokazane na poniższym obrazku:

<p>
  <img src="https://cdn.xhuoapi.ai/odwx82.png" width="400" className="m-auto" />
</p>

Przykładowy kod wywołania w Pythonie:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/v1/chat/completions"

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

payload = {
    "model": "claude-opus-4-20250514",
    "messages": [{"role":"user","content":"Cześć"},{"role":"assistant","content":"Cześć! Jak mogę ci pomóc dzisiaj?"},{"role":"user","content":"Co powiedziałem przed chwilą?"}]
}

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

Przesyłając wiele zapytań, można łatwo zrealizować wieloetapową rozmowę, uzyskując następującą odpowiedź:

```json theme={null}
{
  "id": "msg_bdrk_01Y1wfQmd89g968TVbFu57Yc",
  "model": "claude-opus-4-20250514",
  "object": "chat.completion",
  "created": 1768619674,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Powiedziałeś \"Cześć\" - to była twoja pierwsza wiadomość do mnie w naszej rozmowie."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 29,
    "completion_tokens": 20,
    "total_tokens": 49,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 0,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
```

Można zauważyć, że `choices` zawiera informacje zgodne z podstawowym użyciem, które obejmuje konkretne treści odpowiedzi Claude na wiele rozmów, co pozwala na odpowiadanie na odpowiednie pytania na podstawie treści wielu rozmów.

## Głęboki model myślenia

Modele claude-opus-4-20250514-thinking i claude-sonnet-4-20250514-thinking różnią się od innych modeli, ponieważ mogą prowadzić głębokie myślenie w odpowiedzi na pytania i zwracać wyniki procesu myślenia. W artykule tym zaprezentujemy funkcję głębokiego myślenia na konkretnym przykładzie, a następnie można wypełnić odpowiednie treści w interfejsie API Claude Chat Completion, jak pokazano na obrazku:

<p>
  <img src="https://cdn.xhuoapi.ai/d1a4wq.png" width="400" className="m-auto" />
</p>

Jednocześnie można zauważyć, że po prawej stronie znajduje się odpowiedni kod wywołania, który można skopiować i uruchomić, lub można bezpośrednio kliknąć przycisk „Try”, aby przetestować.

<p>
  <img src="https://cdn.xhuoapi.ai/21nmzq.png" width="400" className="m-auto" />
</p>

Po wywołaniu odkrywamy, że zwrócone wyniki są następujące:

```json theme={null}
{
  "id": "msg_018J4YaRoGHtbsTVb4Vvz7oH",
  "object": "chat.completion",
  "created": 1755444014,
  "model": "claude-sonnet-4-20250514-thinking",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Sinus 30 stopni to **1/2** lub **0.5**.\n\nTo jedna z podstawowych wartości trygonometrycznych. W trójkącie 30-60-90 boki są w proporcji 1:√3:2, gdzie bok naprzeciwko kąta 30° ma długość 1, a przeciwprostokątna ma długość 2, co daje nam sin(30°) = 1/2.",
        "reasoning_content": "Użytkownik pyta o sinus 30 stopni. To podstawowe pytanie z trygonometrii.\n\nSinus 30 stopni to znana wartość. W trójkącie 30-60-90 boki są w proporcji 1:√3:2.\n\nDla kąta 30°:\n- Bok naprzeciwko wynosi 1\n- Przeciwprostokątna wynosi 2\n- Zatem sin(30°) = naprzeciw/przeciwprostokątna = 1/2 = 0.5\n\nTo jedna z standardowych wartości trygonometrycznych, które są powszechnie zapamiętywane."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 60,
    "completion_tokens": 239,
    "total_tokens": 299,
    "prompt_tokens_details": {
      "cached_tokens_details": {}
    },
    "completion_tokens_details": {}
  }
}
```

Można zauważyć, że odpowiedzi w `choices` są wynikiem głębokiego myślenia, a także zawierają odpowiednie treści procesu myślenia, gdzie w `content` `reasoning_content` oznacza proces myślenia modelu. Odpowiedzi w `choices` muszą być renderowane za pomocą składni `markdown`, aby uzyskać najlepsze doświadczenie, co również podkreśla potężną zaletę funkcji łączenia naszego modelu.

## Model wizualny

claude-sonnet-4-20250514 to wielomodalny model językowy opracowany przez Claude, który na bazie claude-4 zyskał zdolność rozumienia wizualnego. Model ten może jednocześnie przetwarzać tekst i obrazy, osiągając zrozumienie i generowanie w różnych modalnościach.

Przetwarzanie tekstu za pomocą modelu claude-sonnet-4-20250514 jest zgodne z podstawowym użyciem opisanym powyżej, poniżej krótko przedstawimy, jak korzystać z możliwości przetwarzania obrazów modelu.

Możliwości przetwarzania obrazów modelu claude-sonnet-4-20250514 są głównie realizowane poprzez dodanie pola `type` do oryginalnej treści `content`, dzięki czemu można określić, czy przesyłany jest tekst, czy obraz, co pozwala na wykorzystanie zdolności przetwarzania obrazów modelu claude-sonnet-4-20250514. Poniżej omówimy, jak wywołać tę funkcję za pomocą dwóch metod: Curl i Python.

* Metoda skryptu Curl

```
curl -X POST 'https://api.xhuoapi.ai/v1/v1/chat/completions' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
    "model": "claude-sonnet-4-20250514",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Co jest na tym obrazie?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://cdn.xhuoapi.ai/ueugot.png"
            }
          }
        ]
      }
    ]
  }'
```

* Metoda skryptu Python

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/v1/chat/completions"

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

payload = {
    "model": "claude-sonnet-4-20250514",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text", "text": "Co jest na tym obrazie?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://cdn.xhuoapi.ai/ueugot.png"
                    }
                },
            ],
        }
    ]
}

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

Następnie można uzyskać poniższy wynik, w którym informacje o polach są zgodne z powyższym opisem:

```json theme={null}
{
  "id": "msg_bdrk_01NCrxpZmV17bhQJJRQEFEb9",
  "model": "claude-sonnet-4-20250514",
  "object": "chat.completion",
  "created": 1768628904,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Ten obraz przedstawia interfejs konfiguracji żądania API dla tego, co wydaje się być usługą zakończenia czatu AI. Oto kluczowe elementy:\n\n**Parametry ciała żądania:**\n\n1. **model** (wymagany ciąg) - Ustawiony na \"claude-opus-4-202505...\" - określa, który model AI ma być użyty\n\n2. **messages** (wymagana tablica) - Zawiera historię rozmowy z:\n   - **role** (wymagany ciąg) - Ustawiony na \"user\" \n   - **content** (wymagany ciąg) - Zawiera \"Hello\" jako treść wiadomości\n\n3. **stream** (boolean) - Ustawiony na \"true\" - umożliwia częściowe zmiany wiadomości, jak w ChatGPT\n\n4. **max_tokens** (liczba) - Pole do ustawienia maksymalnej liczby tokenów, które mogą być generowane w odpowiedzi\n\n5. **n** (liczba) - Określa, ile wyborów zakończenia czatu ma być generowanych dla każdego wejścia\n\nInterfejs ma ciemny motyw z białym tekstem na czarnych/szaro-ciemnych tle. W prawym dolnym rogu znajduje się przycisk „Fill Example” oraz różne menu rozwijane i pola wejściowe do konfigurowania parametrów żądania API. Widoczna jest czerwona ikona kosza/usuń, prawdopodobnie do usuwania wpisów wiadomości."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1570,
    "completion_tokens": 252,
    "total_tokens": 1822,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 0,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
```

Można zauważyć, że treść odpowiedzi opiera się na obrazach, dlatego za pomocą powyższych dwóch metod można łatwo wykorzystać zdolności przetwarzania tekstu i obrazów modelu claude-3-7-sonnet-20250219.

## Obsługa błędów

Podczas wywoływania API, jeśli wystąpi błąd, API zwróci odpowiedni kod błędu i informacje. Na przykład:

* `400 token_mismatched`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `400 api_not_implemented`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `401 invalid_token`: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
* `429 too_many_requests`: Zbyt wiele żądań, przekroczono limit szybkości.
* `500 api_error`: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

### Przykład odpowiedzi błędu

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Wnioski

Dzięki temu dokumentowi zrozumieliście, jak łatwo zrealizować funkcje czatu oficjalnego Claude za pomocą API Claude Chat Completion. Mamy nadzieję, że ten dokument pomoże Wam lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.
