Punkt końcowy czatu

Wysyłaj wiadomości do swojego agenta i odbieraj odpowiedzi AI programowo.

Punkt końcowy czatu pozwala wysyłać wiadomości do agenta i odbierać odpowiedzi AI. Użyj go, aby budować niestandardowe interfejsy czatu lub integrować funkcje agenta z własnymi aplikacjami.

Punkt końcowy

POST /api/v1/chat

Uwierzytelnianie

Wymaga uwierzytelnienia za pomocą tokenu Bearer.

Authorization: Bearer YOUR_API_KEY

Treść żądania

{
  "chatbotId": "uuid",
  "messages": [
    { "role": "user", "content": "What are your pricing plans?" }
  ],
  "conversationId": "optional-id",
  "stream": false
}

Parametry

PoleTypWymaganeOpis
chatbotIdciąg znaków (UUID)TakIdentyfikator Twojego agenta
messagestablicaTakTablica obiektów wiadomości (1–100 elementów)
conversationIdciąg znaków (maks. 16 znaków)NieIdentyfikator referencyjny zwrócony w nagłówku x-conversation-id poprzedniego wywołania. Nieprawidłowe lub brakujące wartości powodują, że serwer przydziela nowy identyfikator.
streamwartość logicznaNieWłącza odpowiedź strumieniową (domyślnie: false)

Obiekt wiadomości

PoleTypWartościOpis
roleciąg znaków"user", "assistant"Kto wysłał wiadomość
contentciąg znaków1–32000 znakówTreść wiadomości

Limity

  • Maksymalnie 100 wiadomości na żądanie
  • Maksymalnie 32 000 znaków na wiadomość

Odpowiedź

Bez przesyłania strumieniowego (domyślnie)

Sukces (200):

{
  "text": "Our pricing starts at $29.99/month for the Hobby plan..."
}

Nagłówki obejmują:

X-Conversation-ID: abc123

Przesyłanie strumieniowe

Ustaw "stream": true, aby uzyskać odpowiedź strumieniową.

Sukces (200):

Content-Type: text/plain; charset=utf-8

Odpowiedź przesyła zwykły tekst strumieniowo w miarę jego generowania. Użyj tego podejścia do aktualizacji interfejsu w czasie rzeczywistym.

Przykładowe żądania

Podstawowe żądanie

curl -X POST 'https://your-domain.com/api/v1/chat' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "chatbotId": "123e4567-e89b-12d3-a456-426614174000",
    "messages": [
      {"role": "user", "content": "What are your pricing plans?"}
    ]
  }'

Konwersacja wieloetapowa

curl -X POST 'https://your-domain.com/api/v1/chat' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "chatbotId": "123e4567-e89b-12d3-a456-426614174000",
    "conversationId": "conv_abc123",
    "messages": [
      {"role": "user", "content": "What are your pricing plans?"},
      {"role": "assistant", "content": "We offer three plans..."},
      {"role": "user", "content": "Tell me more about the Pro plan"}
    ]
  }'

Odpowiedź strumieniowa

curl -X POST 'https://your-domain.com/api/v1/chat' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "chatbotId": "123e4567-e89b-12d3-a456-426614174000",
    "messages": [{"role": "user", "content": "Hello"}],
    "stream": true
  }'

Odpowiedzi błędów

StatusWiadomośćPrzyczyna
400Invalid JSON bodyZniekształcony JSON
400Invalid request bodyBrakujące lub nieprawidłowe pola
401Missing or invalid Authorization headerNagłówek nie został podany lub ma nieprawidłowy format
401Invalid API keyKlucz nie został rozpoznany
403API access requires a Hobby plan or above with active billingPlan lub stan rozliczeń nie pozwala na dostęp do API
403Chatbot does not belong to this accountAgent należy do innego konta
404Chatbot not foundNieprawidłowy identyfikator agenta
429Rate limit exceededZbyt wiele żądań

Format odpowiedzi błędu

{
  "message": "Invalid request body",
  "details": {
    "chatbotId": ["Required"]
  }
}

Przykłady kodu

Node.js

async function sendMessage(chatbotId, message) {
  const response = await fetch('https://your-domain.com/api/v1/chat', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      chatbotId,
      messages: [{ role: 'user', content: message }],
    }),
  });

  if (!response.ok) {
    throw new Error(`API error: ${response.status}`);
  }

  const data = await response.json();
  return data.text;
}

Python

import requests

def send_message(chatbot_id: str, message: str) -> str:
    response = requests.post(
        'https://your-domain.com/api/v1/chat',
        headers={
            'Authorization': f'Bearer {API_KEY}',
            'Content-Type': 'application/json',
        },
        json={
            'chatbotId': chatbot_id,
            'messages': [{'role': 'user', 'content': message}],
        },
    )
    response.raise_for_status()
    return response.json()['text']

Node.js z przesyłaniem strumieniowym

async function streamMessage(chatbotId, message) {
  const response = await fetch('https://your-domain.com/api/v1/chat', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      chatbotId,
      messages: [{ role: 'user', content: message }],
      stream: true,
    }),
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

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

    const text = decoder.decode(value);
    process.stdout.write(text); // Print as it streams
  }
}

Zarządzanie konwersacją

Rozpoczynanie konwersacji

Pomiń conversationId, aby rozpocząć nową konwersację. Nagłówek odpowiedzi X-Conversation-ID zwraca nowy identyfikator.

Kontynuowanie konwersacji

Dołącz conversationId oraz wszystkie poprzednie wiadomości, aby zachować kontekst.

Historia wiadomości

W każdym żądaniu musisz podać poprzednie wiadomości. API jest bezstanowe — nie przechowujemy historii konwersacji na serwerze pomiędzy żądaniami.

Kolejne kroki