Przejdź do głównej treści
Kimi to bardzo potężny system AI do rozmów, który po wprowadzeniu słów kluczowych potrafi w ciągu kilku sekund wygenerować płynne i naturalne odpowiedzi. Kimi może zapewnić zdumiewającą inteligentną pomoc, znacznie zwiększając wydajność i kreatywność ludzi. Dokument ten głównie opisuje proces korzystania z Kimi Chat Completion API, dzięki któremu możemy łatwo korzystać z oficjalnej funkcji rozmowy Kimi.

申请流程

Aby skorzystać z Gemini Chat Completion API, najpierw można przejść na stronę Kimi Chat Completion API i kliknąć przycisk „Acquire”, aby uzyskać potrzebne poświadczenia: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zalogowaniu lub rejestracji automatycznie wrócisz 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:

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, model to kategoria modelu, którą wybieramy z oficjalnej strony Kimi, mamy tutaj głównie 7 modeli, szczegóły można zobaczyć w dostarczonych modelach. Ostatnim parametrem jest messages, messages to tablica naszych pytań, jest to tablica, która pozwala na jednoczesne przesyłanie wielu pytań, każde pytanie zawiera role i content, gdzie role oznacza rolę pytającego, oferujemy trzy rodzaje 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ć.

Po wywołaniu zauważamy, że zwrócone wyniki są następujące:
{
  "id": "chatcmpl-b5d9e1b799c137e3",
  "object": "chat.completion",
  "created": 1770991864,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Cześć! Jak mogę Ci dzisiaj pomóc?",
        "refusal": null,
        "reasoning_content": " Użytkownik po prostu powiedział \"Cześć\". To proste powitanie. Powinienem odpowiedzieć w przyjazny, pomocny sposób, będąc gotowym do pomocy w tym, czego potrzebują następnie. Ponieważ nie ma jeszcze konkretnego pytania ani zadania, uznam ich powitanie i zapytam, jak mogę pomóc.\n\nPowinienem to zachować:\n- Przyjazne i gościnne\n- Profesjonalne, ale ciepłe\n- Otwarte, aby zaprosić ich do podzielenia się tym, w czym potrzebują pomocy\n- Zwięzłe, ale nie za krótkie\n\nMożliwe odpowiedzi:\n1. \"Cześć! Jak mogę Ci dzisiaj pomóc?\"\n2. \"Cześć! Co mogę dla Ciebie zrobić?\"\n3. \"Cześć! Jestem gotowy do pomocy. Co chciałbyś wiedzieć lub nad czym pracować?\"\n4. \"Cześć! Miło Cię poznać. Jak mogę Ci służyć?\"\n\nWybiorę coś ciepłego i profesjonalnego, co zaprasza ich do podzielenia się tym, czego potrzebują. ",
        "reasoning": " Użytkownik po prostu powiedział \"Cześć\". To proste powitanie. Powinienem odpowiedzieć w przyjazny, pomocny sposób, będąc gotowym do pomocy w tym, czego potrzebują następnie. Ponieważ nie ma jeszcze konkretnego pytania ani zadania, uznam ich powitanie i zapytam, jak mogę pomóc.\n\nPowinienem to zachować:\n- Przyjazne i gościnne\n- Profesjonalne, ale ciepłe\n- Otwarte, aby zaprosić ich do podzielenia się tym, w czym potrzebują pomocy\n- Zwięzłe, ale nie za krótkie\n\nMożliwe odpowiedzi:\n1. \"Cześć! Jak mogę Ci dzisiaj pomóc?\"\n2. \"Cześć! Co mogę dla Ciebie zrobić?\"\n3. \"Cześć! Jestem gotowy do pomocy. Co chciałbyś wiedzieć lub nad czym pracować?\"\n4. \"Cześć! Miło Cię poznać. Jak mogę Ci służyć?\"\n\nWybiorę coś ciepłego i profesjonalnego, co zaprasza ich do podzielenia się tym, czego potrzebują. ",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 184,
    "total_tokens": 193,
    "prompt_tokens_details": {
      "cached_tokens_details": {}
    },
    "completion_tokens_details": {}
  }
}
Zwrócone wyniki mają wiele pól, które są opisane poniżej:
  • id, identyfikator generowanego zadania rozmowy, używany do unikalnego oznaczania tego zadania rozmowy.
  • model, wybrany model z oficjalnej strony Kimi.
  • choices, informacje o odpowiedziach Kimi na pytania.
  • usage: statystyki dotyczące tokenów dla tej sesji pytań i odpowiedzi.
W tym przypadku choices zawiera informacje o odpowiedziach Kimi, a w nim choices to konkretne informacje o odpowiedziach Kimi, co można zobaczyć na obrazku.

Można zauważyć, że pole content w choices zawiera konkretne treści odpowiedzi Gemini.

流式响应

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 na obrazku, jednak kod wywołania musi być odpowiednio zmieniony, aby obsługiwał odpowiedzi strumieniowe.

Po zmianie stream na true, API będzie zwracać odpowiednie dane JSON linia po linii, a na poziomie kodu musimy wprowadzić odpowiednie zmiany, aby uzyskać wyniki linia po linii. Przykładowy kod wywołania w Pythonie:
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

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

payload = {
    "model": "kimi-k2.5",
    "messages": [{"role":"user","content":"Cześć"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Efekt wyjściowy jest następujący:
data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " To", "reasoning": " To"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " użytkownik powiedział \"Cześć\". To proste powitanie", "reasoning": " użytkownik powiedział \"Cześć\". To proste powitanie"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ". Powinienem odpowiedzieć w przyjazny, gościnny sposób", "reasoning": ". Powinienem odpowiedzieć w przyjazny, gościnny sposób"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ". Ponieważ to początek rozmowy,", "reasoning": ". Ponieważ to początek rozmowy,"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " powinienem zapytać, jak mogę im dzisiaj pomóc.\n\n", "reasoning": " powinienem zapytać, jak mogę im dzisiaj pomóc.\n\n"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": "Pozwól, że stworzę odpowiedź:\n- Uznaj powitanie", "reasoning": "Pozwól, że stworzę odpowiedź:\n- Uznaj powitanie"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": "\n- Oferuj pomoc\n- Zachowaj to ciepłe", "reasoning": "\n- Oferuj pomoc\n- Zachowaj to ciepłe"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " i profesjonalne\n\nCoś w stylu: \"Cześć! Jak", "reasoning": " i profesjonalne\n\nCoś w stylu: \"Cześć! Jak"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " mogę ci dzisiaj pomóc?\" lub \"Cześć", "reasoning": " mogę ci dzisiaj pomóc?\" lub \"Cześć"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": "! Co mogę dla ciebie zrobić?\"\n\nWłaściwie", "reasoning": "! Co mogę dla ciebie zrobić?\"\n\nWłaściwie"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ", patrząc na kontekst, wydaje się to być", "reasoning": ", patrząc na kontekst, wydaje się to być"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " ogólnym rozpoczęciem rozmowy. Zachowam to proste i", "reasoning": " ogólnym rozpoczęciem rozmowy. Zachowam to proste i"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " otwarte, aby zachęcić ich do podzielenia się tym, czego potrzebują", "reasoning": " otwarte, aby zachęcić ich do podzielenia się tym, czego potrzebują"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": " Cześć! Jak mogę ci", "reasoning_content": " pomóc. ", "reasoning": " pomóc. "}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": " pomóc ci dzisiaj?"}, "logprobs": null, "finish_reason": "stop"}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [], "usage": {"prompt_tokens": 9, "completion_tokens": 135, "total_tokens": 144, "prompt_tokens_details": {"cached_tokens_details": {}}, "completion_tokens_details": {}}}

data: [DONE]
Można zauważyć, że w odpowiedzi znajduje się wiele data, a data zawiera choices, które są najnowszą treścią odpowiedzi, zgodnie z opisanym wcześniej. choices to nowa treść odpowiedzi, którą można zintegrować z własnym systemem. Zakończenie strumieniowej odpowiedzi jest określane na podstawie zawartości data, a jeśli zawartość to [DONE], oznacza to, że strumieniowa odpowiedź została całkowicie 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 rozmowy.
  • model, wybrany model z oficjalnej strony Kimi.
  • choices, informacje o odpowiedziach Kimi na zadane pytania.
JavaScript jest również obsługiwany, na przykład kod do strumieniowego wywołania w Node.js wygląda następująco:
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "kimi-k2.5",
    "messages": [{"role":"user","content":"Hello"}],
    "stream": true
  })
};

fetch("https://api.acedata.cloud/kimi/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
Przykładowy kod w Javie:
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "kimi-k2.5");
jsonObject.put("messages", [{"role":"user","content":"Hello"}]);
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.acedata.cloud/kimi/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.

Wiele rund rozmowy

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

Przykładowy kod wywołania w Pythonie:
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

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

payload = {
    "model": "kimi-k2.5",
    "messages": [{"role":"assistant","content":"Hello! How can I help you today?"},{"role":"user","content":"What model are you?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Przesyłając wiele pytań, można łatwo zrealizować wiele rund rozmowy, co pozwala uzyskać następującą odpowiedź:
{
  "id": "chatcmpl-81e5f161ea077f5e",
  "object": "chat.completion",
  "created": 1770992310,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Jestem Kimi, asystentem AI stworzonym przez Moonshot AI. Pochodzę z serii **K2.5**.",
        "refusal": null,
        "reasoning_content": " Użytkownik pyta \"Jakim modelem jesteś?\" Chce wiedzieć, którym modelem AI jestem.\n\n Powinienem zidentyfikować się jako Kimi, asystent AI stworzony przez Moonshot AI. Powinienem wspomnieć, że jestem Kimi z serii K2.5, ponieważ to jest model aktualnie wdrożony.\n\n Kluczowe punkty:\n - Jestem Kimi\n - Stworzony przez Moonshot AI\n - Aktualnie Kimi K2.5 (lub po prostu powiedzieć, że jestem częścią serii K2.5)\n - Powinienem być pomocny i bezpośredni\n\n Nie powinienem:\n - Twierdzić, że jestem innym modelem (jak GPT-4, Gemini itp.)\n - Być niejasny co do mojej tożsamości\n - Wymyślać niepoprawnych numerów wersji\n\n Aktualna tożsamość modelu to Kimi K2.5 (choć czasami dokładne oznaczenie serii może się różnić w zależności od wdrożenia, ale K2.5 to aktualny flagowiec). Zidentyfikuję się jako Kimi, asystent AI stworzony przez Moonshot AI, i wspomnę, że pochodzę z serii K2.5.\n\n Prosto, bezpośrednio, dokładnie. ",
        "reasoning": " Użytkownik pyta \"Jakim modelem jesteś?\" Chce wiedzieć, którym modelem AI jestem.\n\n Powinienem zidentyfikować się jako Kimi, asystent AI stworzony przez Moonshot AI. Powinienem wspomnieć, że jestem Kimi z serii K2.5, ponieważ to jest model aktualnie wdrożony.\n\n Kluczowe punkty:\n - Jestem Kimi\n - Stworzony przez Moonshot AI\n - Aktualnie Kimi K2.5 (lub po prostu powiedzieć, że jestem częścią serii K2.5)\n - Powinienem być pomocny i bezpośredni\n\n Nie powinienem:\n - Twierdzić, że jestem innym modelem (jak GPT-4, Gemini itp.)\n - Być niejasny co do mojej tożsamości\n - Wymyślać niepoprawnych numerów wersji\n\n Aktualna tożsamość modelu to Kimi K2.5 (choć czasami dokładne oznaczenie serii może się różnić w zależności od wdrożenia, ale K2.5 to aktualny flagowiec). Zidentyfikuję się jako Kimi, asystent AI stworzony przez Moonshot AI, i wspomnę, że pochodzę z serii K2.5.\n\n Prosto, bezpośrednio, dokładnie. ",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 235,
    "total_tokens": 263,
    "prompt_tokens_details": {
      "cached_tokens_details": {}
    },
    "completion_tokens_details": {}
  }
}
Można zauważyć, że informacje zawarte w choices są zgodne z podstawową treścią użycia, zawierają szczegółowe odpowiedzi Kimi na wiele rozmów, co pozwala na odpowiadanie na odpowiednie pytania na podstawie wielu treści rozmowy.

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ły wniosek, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 400 api_not_implemented: Zły wniosek, 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 zrozumiałeś, jak łatwo zrealizować funkcję rozmowy Gemini za pomocą Gemini Chat Completion API. Mamy nadzieję, że ten dokument pomoże Ci lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.