DOSTĘP Wczesny (Early Access): Funkcjonalności, ceny i parametry mogą ulec zmianie w przyszłości.
Opierając się na zoptymalizowanej architekturze opartej o Blibs, nasza kompatybilna z OpenAI API dostarcza wysokowydajne wnioskowanie dużych modeli językowych — bez konieczności posiadania dedykowanych zasobów GPU po Twojej stronie. Hostowana wyłącznie w centrach danych UE, zapewnia płynną integrację z Twoimi aplikacjami, jednocześnie przestrzegając rygorystycznych wymogów zgodności z RODO (GDPR). Wykorzystując skalowalną infrastrukturę Trooper.AI, rozwiązanie eliminuje ograniczenia sprzętowe, umożliwiając kosztowo efektywny wdrożenie zarówno dla startupów, jak i przedsiębiorstw. Niezależnie od tego, czy budujesz czatboty, dopasowujesz modele czy wdrażasz pracownie AI generatywnej, nasza API oferuje odpowiedzi o niskim czasie reakcji przy niezwykle wysokiej niezawodności klasy enterprise.
Stworzone z myślą o elastyczności, usługa integruje się płynnie z istniejącymi procesami za pomocą prostych punktów końcowych, wspierając przetwarzanie w partiach oraz zapytania w czasie rzeczywistym. Oparta na trwałym magazynie danych i zaawansowanych protokołach bezpieczeństwa – takich jak zasady firewallowe czy ochrona przed atakami typu DDoS – platforma gwarantuje nieprzerwaną dostępność dla krytycznych zadań związanych z AI. Zapoznaj się poniżej z naszymi dopasowanymi konfiguracjami, aby sprostać wymaganiom Twojego projektu.
Nasze podstawowe cenniki przedstawiono poniżej. Dodatkowe opłaty mogą obowiązywać w zależności od kraju przy zamówieniu API Blib. Możesz również skorzystać z naszych regularnych promocji Extra Credits!
| Trasa | Model | Kontekst | Input/1M | Output/1M | +33% Akcja promocyjna | Zalety |
|---|---|---|---|---|---|---|
| żywy | Google Gemma 4 2,3 mld + 0,15 mld (wizja) + 0,3 mld (dźwięk) | 20,380 | €0.029 | €0.049 | Tekst, Wizja, Dźwięk, Rozumowanie, Narzędzia, JSON | |
| clara | Mistral Ministral 3 13,5 mld + 0,4 mld (wzrok) | 9,248 | €0.139 | €0.249 | Model UE, Wizja, Narzędzia, Tekst, JSON | |
| nikola | NVIDIA Nemotron 3 Nano 30B MoE (128 ekspertów, 6 aktywnych przy 3,5 mld) | 20,480 | €0.159 | €0.319 | Tekst, Rozumowanie, Narzędzia, Kodowanie, JSON |
* Aktualna promocja daje Ci +33% dodatkowych kredytów za wpłatę od €150 w tym miesiącu. Zapłać €150, a otrzymasz €200 na konto!
Zanim zaczniesz korzystać z naszej API, musisz zamówić swój API Blib na naszej stronie: Zamów API Blib
Możesz wybrać swój Model i swoją Region, a po wdrożeniu wybranego modelu powinieneś zobaczyć coś podobnego w swoim Panelu Zarządzania:
Oferujemy darmowy system prompt o długości do 1024 znaków. Darmowy system prompt jest dostępny wyłącznie przez panel administracyjny! Dynamiczne wiadomości systemowe przesyłane za pośrednictwem API są opłacane zgodnie z zasadami standardowymi. Kliknij Akcje, aby zobaczyć okno edycji system prompta:
Zacznij już teraz, zamów swoje API Blib:
Jeśli chcesz porównać nasze LLM Endpointy z innymi platformami LLM, możesz skorzystać z naszego darmowego narzędzia Benchmark Jakości LLM. Oto jak wygląda:
Sprawdź dowolny kompatybilny z OpenAI endpoint modeli językowych za pomocą 25 automatycznych testów jakościowych – logiczne myślenie, kodowanie, wielojęzyczność, strukturalne wyniki, wywołania narzędzi i więcej.
https://eu.router.trooper.ai/v1
Regionalne endpointy dla lokalizacji danych na poziomie kraju:
| Domena | Region |
|---|---|
eu.router.trooper.ai |
UE (wszystkie centra danych UE) |
de.router.trooper.ai |
tylko Niemcy |
nl.router.trooper.ai |
tylko dla Holandii |
Wszystkie żądania wymagają tokena typu Bearer. Pobierz swój klucz API z panelu zarządzania.
Authorization: Bearer YOUR_TROOPER_KEY
Aktywuj trasy na stronie trooper.ai/order-apiblib . Każda trasa udostępnia nazwę modelu, którą użyjesz w wywołaniach API.
| Trasa | Model podstawowy | Zalety |
|---|---|---|
| żywy | Google Gemma 4 | Najtańsze. Obsługa tekstu, obrazów, dźwięku i rozumowania. Duże obciążenia pracą. |
| clara | Mistral Ministral 3 | Oparty na wizji. Szybki przepływ danych, silne wsparcie języków UE. |
| nikola | NVIDIA Nemotron 3 Nano | Silnik wnioskowania. Generowanie kodu, wywoływanie funkcji, praca agentów. |
/v1/chat/completionsStandardowy punkt końcowy kompatybilny z OpenAI dla generowania odpowiedzi w trybie czatu.
/v1/modelsWyświetla aktywowane modele. Wymaga autoryzacji. Zwraca jedynie modele dopasowane do regionu domeny, z której dokonywasz połączenia.
Każdy obiekt modelu zawiera:
| Pole | Typ | Opis |
|---|---|---|
id |
łańcuch | Nazwa Twojej trasy (używana jako model (w żądaniu). |
object |
łańcuch | Zawsze "model". |
owned_by |
łańcuch | Identyfikator właściciela. |
created |
liczba całkowita | Czas utworzenia w formacie Unix. |
base_models |
tablica |
Podstawowy(-e) nazwa(e) modelu. |
context_length |
liczba całkowita | Maksymalne okno kontekstu (tokeny) |
max_tokens |
liczba całkowita | Maksymalna liczba wygenerowanych tokenów. |
capabilities |
obiekt | Flagi funkcjonalne dla tego modelu (patrz poniżej). |
supported_parameters |
tablica |
Parametry akceptowane przez ten model. |
Obiekt możliwości:
| Własność | Typ | Opis |
|---|---|---|
thinking |
bool | Obsługuje reasoning_effort oraz rozumowanie krok po kroku. |
tools |
bool | Obsługuje wywołania funkcji / narzędzia. |
vision |
bool | Obsługuje wejścia obrazów i plików PDF. |
audio |
bool | Obsługuje wejścia audio. |
json_mode |
bool | Obsługuje response_format (tryb JSON / wyjściowe struktury danych) |
token_budget |
bool | Wsparcie dla jawnego kontrolowania budżetu tokenów myślenia. |
Użyj capabilities.thinking aby ustalić, czy model obsługuje parametry rozumowania przed ich wysłaniem.
Przykładowa odpowiedź:
{
"object": "list",
"data": [
{
"id": "clara",
"object": "model",
"owned_by": "trooper_42",
"created": 1700000000,
"base_models": ["Ministral-3"],
"context_length": 131072,
"max_tokens": 131072,
"capabilities": {
"tools": true,
"vision": true,
"audio": false,
"thinking": false,
"json_mode": true,
"token_budget": false
},
"supported_parameters": [
"temperature", "top_p", "max_tokens", "stream",
"response_format", "tools", "tool_choice"
]
}
]
}
/healthZwraca dostępność punktu końcowego oraz informacje o regionie.
Wszystkie parametry zgodne są z formatem OpenAI Chat Completions API.
| Parametr | Typ | Opis |
|---|---|---|
model |
łańcuch | Nazwa Twojej trasy (np. "clara", "nikola", "liv") |
messages |
tablica | Tablica obiektów wiadomości (role + content) |
| Parametr | Typ | Domyślne | Opis |
|---|---|---|---|
max_tokens |
liczba całkowita | domyślnie ustawione (32–4096) | Maksymalna liczba tokenów wyjściowych. Automatycznie dostosowywana do okna kontekstowego trasy. |
max_completion_tokens |
liczba całkowita | — | Alias dla max_tokens. |
stream |
bool | false |
Włącz strumieniowanie SSE. |
temperature |
liczba | domyślny model | Temperatura próbkowania (0–2). |
top_p |
liczba | domyślny model | Wybieranie jądra. |
response_format |
obiekt | — | {"type": "json_object"} or {"type": "json_schema", "json_schema": {...}} |
tools |
tablica | — | Definicje narzędzi wywoływania funkcji (format OpenAI) |
tool_choice |
łańcuch/obiekt | — | Steruje wyborem narzędzia ("auto", "none", lub konkretny narzędzie. |
reasoning |
obiekt | — | `{"wykonywanie": "brak"} |
reasoning_effort |
łańcuch | — | Skrót: "none", "medium", "high". |
reasoning.exclude |
bool | false |
Usunięcie treści rozumowania z odpowiedzi. |
Strumieniowe przesyłanie danych w standardzie Server-Sent Events (SSE), pełnie kompatybilne z biblioteką OpenAI SDK.
{ "stream": true }
Format odpowiedzi: data: {...}\n\n wiersze, zakończone przez data: [DONE]\n\n.
Żądaj wyjściu w strukturze JSON. Upewnij się nie tylko o ustawieniu żądania JSON w treści wiadomości, ale także koniecznie ustaw co najmniej response_format na `json_object`!
Jeśli model nie wygeneruje poprawnego JSON, nie poniesiesz żadnych kosztów.
{ "response_format": { "type": "json_object" } }
Z schematem:
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "my_schema",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" }
},
"required": ["name", "age"]
}
}
}
}
Wyślij obrazy za pomocą URL lub w formacie base64. Pliki PDF są automatycznie konwertowane na strony obrazów po stronie serwera.
{
"messages": [{
"role": "user",
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } },
{ "type": "text", "text": "Describe this image." }
]
}]
}
Base64:
{
"type": "image_url",
"image_url": { "url": "data:image/png;base64,iVBOR..." }
}
Prześlij pliki audio w wiadomościach multimodalnych. Obsługiwane na liv.
Kontroluj, czy i w jakim stopniu model rozumuje (łańcuch myślenia) przed udzieleniem odpowiedzi.
| Wartość | Wpływ |
|---|---|
"none" |
Wylączone myślenie — najszybsze odpowiedzi, najmniejsze zużycie tokenów. |
"low" |
Myślenie wyłączone — tak jak "brak". |
"medium" |
Włączone — model rozumuje krok po kroku przed udzieleniem odpowiedzi. Dobry kompromis między jakością a szybkością. |
"high" |
Włączone + dogłębne — model jest instruowany, aby myśleć bardzo starannie i w dużym szczegółowości. Najlepsze dla skomplikowanych obliczeń matematycznych, logiki oraz kodu. Jeśli ustawiono max_tokens, musi wynosić co najmniej 4 096, w przeciwnym razie żądanie zostanie odrzucone. |
Włącz myślenie na poziomie standardowym:
{ "reasoning_effort": "medium" }
Włącz myślenie na głębokim poziomie dla maksymalnej jakości:
{ "reasoning_effort": "high" }
Albo poprzez reasoning obiekt:
{ "reasoning": { "effort": "high" } }
Wyłącz myślenie jawnie:
{ "reasoning_effort": "none" }
Aby usunąć uzasadnienie z odpowiedzi (myślenie nadal zachodzi, ale tokeny uzasadnienia nie są zwracane):
{ "reasoning": { "effort": "high", "exclude": true } }
Zachowanie myślenia można również skonfigurować na poziomie trasy w panelu zarządzania. Ustawienie panela kontroluje domyślne zachowanie oraz sposób zwracania rozumowania:
"reasoning_effort": "medium" lub "high"rozumowanie_treść.<myśl> w treści odpowiedzi.Odzyskiwanie z myślenia: jeśli model wpadnie w pętlę rozumowania, routowanie automatycznie odzyskuje kontrolę i zwraca użyteczną odpowiedź.
Standardowy format narzędzi OpenAI. Działa z wszystkimi ścieżkami.
{
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"]
}
}
}],
"tool_choice": "auto"
}
Jeśli Twoje wejście przekroczy okno kontekstowe, routery automatycznie kompresują środkową część rozmowy, aby wszystko zmieściło się w nim — nie wymagana jest ręczna cięcia. Zawsze otrzymasz odpowiedź.
Darmowy wstępny komunikat systemu można skonfigurować dla każdej trasy w panelu zarządzania. Jest automatycznie dodawany do każdego żądania i nie jest opłacany.
Standardowa struktura odpowiedzi OpenAI:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "clara",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you?"
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 8,
"total_tokens": 20
}
}
Włączając rozumowanie, odpowiedź może zawierać reasoning_content obok content.
W każdej odpowiedzi zawarty jest x-transaction-id nagłówek do celów rozliczeniowych i debugowania.
Błędy są zgodne z formatem otoczki błędów OpenAI:
{
"error": {
"message": "The model 'nonexistent' does not exist.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
| Kod statusu HTTP | Kod | Opis |
|---|---|---|
| 400 | invalid_value |
Brak modelu, klucza API, zbyt krótki wejście lub nieprawidłowa wartość max_tokens. |
| 403 | invalid_api_key |
Nieprawidłowy klucz API lub niewystarczający budżet. |
| 404 | model_not_found |
Model nie istnieje lub nie jest aktywowany. |
| 404 | region_mismatch |
Model niedostępny w żądanym regionie. |
| 500 | — | Błąd wewnętrznego routera. |
| 503 | — | Brak dostępnych endpointów w żądanym regionie. |
Zobacz popularne przykłady kodu pokazujące, jak korzystać z kompatybilnej z OpenAI API dla inferencji modeli językowych (LLM). Wartość router.trooper.ai należy zastąpić adresem końcowym (endpoint URL) podanym w Twoim zamówieniu API.
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "Summarize this document."}],
max_tokens=1024
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://router.trooper.ai/v1",
apiKey: "YOUR_TROOPER_KEY",
});
const response = await client.chat.completions.create({
model: "nikola",
messages: [{ role: "user", content: "Write a unit test for this function." }],
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
stream = client.chat.completions.create(
model="liv",
messages=[{"role": "user", "content": "Explain quantum computing."}],
max_tokens=2048,
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
import json
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{"role": "user", "content": "List the 3 largest EU countries as JSON with name and population."}],
max_tokens=512,
response_format={"type": "json_object"}
)
data = json.loads(response.choices[0].message.content)
print(data)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
response = client.chat.completions.create(
model="clara",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/invoice.png"}},
{"type": "text", "text": "Extract all line items from this invoice as JSON."}
]
}],
max_tokens=2048,
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
from openai import OpenAI
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
}]
response = client.chat.completions.create(
model="nikola",
messages=[{"role": "user", "content": "What's the weather in Berlin?"}],
tools=tools,
tool_choice="auto",
max_tokens=512
)
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
print(tool_calls[0].function.name, tool_calls[0].function.arguments)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="clara",
max_tokens=1024
)
response = llm.invoke("Extract all dates from the following text: ...")
print(response.content)
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
api_base="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY",
model="nikola",
max_tokens=2048
)
response = llm.complete("Explain the EU AI Act in simple terms.")
print(response.text)
curl https://router.trooper.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_TROOPER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "clara",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 512
}'
Zmiana jednej linii — zaktualizuj adres URL i klucz API:
# Before (OpenAI)
client = OpenAI(api_key="sk-...")
# After (Trooper.AI)
client = OpenAI(
base_url="https://router.trooper.ai/v1",
api_key="YOUR_TROOPER_KEY"
)
Wszystko pozostało bez zmian: format żądania, schemat odpowiedzi, strumieniowanie, narzędzia oraz tryb JSON.