Szybki start: Pierwsze żądanie
Zacznij od wskazania klienta na nasz adres bazowy. Użyj https://api.grockapi.com/v1 i ustaw swój klucz API w nagłówku. Identyfikator modelu to zawsze uncensored. Działa z dowolnym SDK kompatybilnym z OpenAI.
Uwierzytelnianie wymaga ważnego tokena Bearer. Przekaż go jako Authorization: Bearer YOUR_API_KEY. Jeśli klucz jest brakujący lub nieprawidłowy, natychmiast otrzymasz błąd 401.
Wykonaj swoje pierwsze wywołanie, aby przetestować łączność. Ciało żądania musi zawierać nazwę modelu i tablicę wiadomości.
Obsługiwane parametry i tryby
Skonfiguruj zachowanie generowania za pomocą standardowych parametrów. Możesz dostosować temperaturę dla większej kreatywności lub top_p dla próbkowania jądra. Użyj parametru stop, aby zdefiniować konkretne sekwencje, które zatrzymają generowanie.
Ustaw seed dla deterministycznych wyników podczas debugowania. Penalties obecności i częstotliwości pomagają zmniejszyć powtarzalność. Model obsługuje do 100 000 tokenów w oknie kontekstowym.
Maksymalna liczba tokenów wyjściowych wynosi 16 000 na żądanie. Pozostaw max_tokens nieustawione, aby skorzystać z domyślnego limitu wyjściowego 2 048. Błędy i odrzucenia nie pobierają kredytu.
Strumieniowanie i zużycie tokenów
Włącz strumieniowanie, ustawiając stream: true. API zwraca fragmenty za pośrednictwem zdarzeń wysyłanych serwerowo (SSE). Każdy fragment zawiera częściową treść i metadane.
Szczegóły zużycia tokenów pojawiają się w ostatnim fragmencie. Pozwala to na dokładne śledzenie kosztów w czasie rzeczywistym. Ostatni fragment zawiera pełne statystyki zużycia dla żądania.
Obsługuj poprawnie zamknięcie strumienia, aby uniknąć wycieków zasobów. Zawsze przetwarzaj ostatni fragment, aby uzyskać dokładne dane rozliczeniowe.
Wywoływanie funkcji (Narzędzia)
Zdefiniuj narzędzia w ciele żądania. Określ nazwy narzędzi, opisy oraz schematy parametrów. Model zwraca wywołania narzędzi, gdy jest to stosowne.
Użyj parametru tool_choice, aby wymusić lub zezwolić na określone zachowania. Możesz ustawić go na auto, required lub konkretne identyfikatory narzędzi.
Przetwarzaj wywołania narzędzi w logice aplikacji. Wyślij wynik narzędzia z powrotem do modelu, aby kontynuować rozmowę. Umożliwia to złożone wieloetapowe przepływy pracy bez zewnętrznego parsowania.
Tryb JSON i ograniczenia
Wymuś dane strukturalne, ustawiając response_format na json_object. Model zwróci format JSON bez znaczników bloków kodu.
Ten tryb jest idealny do parsowania danych do aplikacji. Upewnij się, że Twój schemat jest jasny, aby poprawić dokładność. Nieprawidłowe struktury JSON mogą powodować błędy parsowania w Twoim kliencie.
Połącz tryb JSON z kontrolą temperatury dla spójnego formatowania. Użyj sekwencji stop, aby zapobiec znakom końcowym po zamykającym nawiasie klamrowym.
Limity szybkości i kwoty
Każdy klucz API jest ograniczony do 300 żądań na minutę. Możesz uruchomić do 8 żądań równoległych jednocześnie. Maksymalny rozmiar ciała żądania wynosi 8 MB.
Błąd 429 oznacza, że przekroczyłeś limit szybkości. Poczekaj przed ponowną próbą lub zmniejsz współbieżność. Jeden aktywny klucz istnieje na konto; wygenerowanie nowego klucza zastępuje stary.
Monitoruj swoje zużycie poprzez ostatni chunk strumieniowania lub nagłówki odpowiedzi. Błędy takie jak 402 (brak środków) lub 401 (nieprawidłowy klucz) są darmowe i nie są doliczane do Twojego limitu.
cURL
curl https://api.grockapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "calculate the sum of two and three"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.grockapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.grockapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Strumieniowanie
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)