Ustawienia narzędzi agentowych
Narzędzia agentowe na każdym kroku wysyłają zawartość plików, wynik poleceń i całą historię rozmowy. Przy tak dużym prompcie na pierwszy token można czekać kilkadziesiąt sekund. Jeśli Twoja aplikacja podda się wcześniej, zapytanie i tak jest liczone, a Ty nic nie dostajesz. Ustaw timeout, streaming, ponowienia i rozmiar kontekstu tak, jak opisano poniżej.
Dlaczego to ważne
- Zapytania przerwane przed nadejściem odpowiedzi i tak są liczone. Gdy tylko zapytanie dotrze, serwer AI zaczyna przetwarzać cały prompt. Jeśli Twoja aplikacja przerwie je wcześniej (timeout, przycisk stop, zerwane połączenie), koszt przetwarzania już powstał, a Ty nie dostajesz odpowiedzi.
- Ogromne prompty potrzebują ponad 30 sekund do pierwszego tokena. Prompty agentowe o rozmiarze setek KB z tysiącami wiadomości mogą przekroczyć domyślny limit wielu aplikacji (30 lub 60 sekund), zanim pojawi się choćby jeden token.
- Streaming utrzymuje połączenie przy życiu. Przy włączonym streamingu nasz serwer od razu wysyła nagłówki, a potem co 10 sekund sygnał keepalive, czekając na odpowiedź. Przerwać połączenie może wciąż całkowity limit czasu Twojej aplikacji, więc ustaw go na co najmniej 300 sekund.
- Do dużego kontekstu wybierz szybki model. Przy długich sesjach lub dużych repozytoriach używaj szybszego modelu, a duże modele zostaw na kroki, które naprawdę ich wymagają. Porównaj je na stronie Cennik.
Wskazówki dla każdego narzędzia
- Timeout
- Co najmniej 300 sekund. Uważaj na jednostkę: część narzędzi używa sekund (
300), inne milisekund (300000). - Streaming
- Włącz go. Bez streamingu żadne dane nie płyną, dopóki odpowiedź nie będzie kompletna, więc proxy i aplikacje poddają się szybciej.
- Ponowienia
- Trzymaj je nisko (0–3). Ponowienie po timeoucie to nowe zapytanie, które też jest płatne. Zamiast zwiększać liczbę ponowień, najpierw popraw timeout.
- Kontekst
- Trzymaj go małym. Używaj automatycznego compact/podsumowania, zaczynaj nową sesję dla każdego zadania i wykluczaj duże foldery (node_modules, build, data).
Claude Code
- Base URL i klucz
- Postępuj według przewodnika Claude Code:
ANTHROPIC_BASE_URL=https://ai.geraikita.com(bez /v1) iANTHROPIC_AUTH_TOKEN= Twój klucz gk-. Zmienne możesz umieścić w blokuenvpliku~/.claude/settings.json. - Timeout
API_TIMEOUT_MS(milisekundy): jak długo każda próba czeka na nagłówki odpowiedzi, domyślnie 600000 (10 minut). Nie obniżaj go; jeśli kiedyś go zmniejszyłeś, przywróć co najmniej300000.- Streaming
- Zawsze używa streamingu. Nie ma ustawienia, które by go wyłączało.
- Ponowienia
CLAUDE_CODE_MAX_RETRIES, domyślnie 10, łącznie z timeoutami przed rozpoczęciem streamowania odpowiedzi. Przy dużych promptach ustaw 2–3, aby jeden krok nie był naliczany w kółko.- Kontekst
/compactpodsumowuje rozmowę,/clearzaczyna nową. Auto-compact jest domyślnie włączony (autoCompactEnabled); niższa wartośćCLAUDE_AUTOCOMPACT_PCT_OVERRIDE(np. 60) uruchamia compact wcześniej.
{
"env": {
"ANTHROPIC_BASE_URL": "https://ai.geraikita.com",
"ANTHROPIC_AUTH_TOKEN": "gk-xxxxxxxx",
"API_TIMEOUT_MS": "600000",
"CLAUDE_CODE_MAX_RETRIES": "3",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
}
}Cline
- Base URL i klucz
- Postępuj według przewodnika Cline: provider OpenAI Compatible (Base URL
https://ai.geraikita.com/v1) albo Anthropic z Use custom base URLhttps://ai.geraikita.com. - Timeout
- Oficjalna dokumentacja Cline nie oferuje ustawienia timeoutu dla providerów OpenAI Compatible ani Anthropic (Request Timeout dotyczy tylko Ollamy). Żeby pierwszy token pojawił się szybko: zmniejsz kontekst i wybierz szybszy model przy dużym kontekście.
- Streaming
- Brak ustawienia streamingu w oficjalnej dokumentacji; nic nie trzeba zmieniać.
- Ponowienia
- Brak ustawienia ponowień w oficjalnej dokumentacji.
- Kontekst
- Auto Compact podsumowuje automatycznie, gdy kontekst jest prawie pełny.
/smol(alias/compact) podsumowuje ręcznie,/newtaskprzenosi podsumowanie do nowego zadania. Ustaw Context Window size w Model Configuration zgodnie z modelem.
Roo Code
- Base URL i klucz
- Uwaga: rozszerzenie Roo Code zostało oficjalnie wycofane 15 maja 2026 r. Jeśli nadal go używasz: provider OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, Twój klucz gk- (tak samo jak w Cline). - Timeout
roo-cline.apiRequestTimeoutw settings.json VS Code, w sekundach (domyślnie 600, zakres 0–3600, 0 = bez limitu). Nie schodź poniżej300.- Streaming
- Upewnij się, że w profilu OpenAI Compatible opcja Enable streaming pozostaje zaznaczona.
- Ponowienia
- Przy włączonym Auto-Approve nieudane zapytania są automatycznie ponawiane z rosnącym opóźnieniem; nie ma osobnego przełącznika.
- Kontekst
- Intelligent Context Condensing (Settings → Context): obniż próg z domyślnych 100%, aby kondensacja zaczynała się wcześniej, albo kliknij Condense Context. Wykluczaj duże foldery za pomocą
.rooignore.
Kilo Code
- Base URL i klucz
- Settings → Providers → Custom provider → OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, Twój klucz gk-. Albo użyj pliku~/.config/kilo/kilo.jsoncjak w przykładzie poniżej. - Timeout
options.timeoutw providerze (milisekundy) obejmuje czekanie na nagłówki i pierwszy bajt. Domyślnie 300000, czyli na samej granicy; ustaw600000. Nie ustawiaj zbyt niskiegochunkTimeout.- Streaming
- Brak ustawienia streamingu w oficjalnej dokumentacji; nic nie trzeba zmieniać.
- Ponowienia
- Brak ustawienia ponowień w oficjalnej dokumentacji.
- Kontekst
compaction.auto(domyślnietrue) i/compact. Musisz ustawićlimit.contextdla każdego modelu (mniejsza liczba = wcześniejszy compact): bez tego auto-compaction nie działa. Wykluczaj duże foldery za pomocą.kilocodeignorelub reguł uprawnień.
{
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"name": "Geraikita AI",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "gk-xxxxxxxx",
"timeout": 600000
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 128000, "output": 16000 }
}
}
}
},
"compaction": { "auto": true }
}Cursor
- Base URL i klucz
- Cursor Settings → Models → OpenAI API key. Oficjalna dokumentacja Cursora nie opisuje własnego base URL; jeśli Twoja wersja Cursora pokazuje Override OpenAI Base URL, wpisz
https://ai.geraikita.com/v1. Własny klucz API działa tylko dla modeli czatu (Tab nadal używa wbudowanych modeli Cursora), a zapytania przechodzą przez serwery Cursora. - Timeout
- Brak regulowanego timeoutu w oficjalnej dokumentacji. Zamiast tego: zmniejsz kontekst, zaczynaj nowy czat dla każdego zadania i wybierz szybki model, żeby pierwszy token dotarł przed limitem aplikacji.
- Streaming
- Obsługiwane przez Cursora; brak ustawienia.
- Ponowienia
- Brak ustawienia ponowień w oficjalnej dokumentacji.
- Kontekst
- Cursor automatycznie podsumowuje starsze części rozmowy, gdy kontekst jest prawie pełny. Zaczynaj nowy czat przy każdej zmianie zadania i wykluczaj duże pliki za pomocą
.cursorignore.
OpenCode
- Base URL i klucz
- Postępuj według przewodnika OpenCode: provider
@ai-sdk/openai-compatiblezbaseURLhttps://ai.geraikita.com/v1. - Timeout
- W
provider.geraikita.options(milisekundy):headerTimeout(czekanie na nagłówki, domyślnie 300000) ichunkTimeout(przerwa między fragmentami streamu, domyślnie 300000).timeout(limit całkowity) jest domyślnie wyłączony; jeśli go ustawiasz, użyj co najmniej300000. - Streaming
- Zawsze używa streamingu. Nie ma ustawienia, które by go wyłączało.
- Ponowienia
- Brak ustawienia ponowień w oficjalnej dokumentacji. Jeśli zapytania ciągle się zrywają, popraw timeout i zmniejsz kontekst.
- Kontekst
compaction.auto(domyślnietrue) automatycznie podsumowuje sesję, gdy kontekst jest pełny./compactpodsumowuje ręcznie,/newzaczyna nową sesję.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "{env:GERAIKITA_API_KEY}",
"headerTimeout": 300000,
"chunkTimeout": 300000
}
}
},
"compaction": { "auto": true }
}Continue
- Base URL i klucz
- W
config.yaml:provider: openai,apiBase: https://ai.geraikita.com/v1,apiKey= Twój klucz gk-. - Timeout
requestOptions.timeoutw sekundach (domyślnie 7200). Użyj co najmniej300, nie 300000.- Streaming
- Provider
openaizawsze używa streamingu. - Ponowienia
- Brak ustawienia ponowień w oficjalnej dokumentacji.
- Kontekst
defaultCompletionOptions.contextLengthimaxTokensograniczają rozmiar kontekstu i odpowiedzi. Zaczynaj nowy czat dla każdego zadania; Continue CLI ma/compacti/clear.
models:
- name: Claude Sonnet 5 (Geraikita)
provider: openai
model: claude-sonnet-5
apiBase: https://ai.geraikita.com/v1
apiKey: gk-xxxxxxxx
requestOptions:
timeout: 600 # sekundy, nie milisekundy
defaultCompletionOptions:
contextLength: 64000 # mniej = historia jest przycinana
maxTokens: 8192n8n
- Base URL i klucz
- Poświadczenia OpenAI: ustaw Base URL na
https://ai.geraikita.com/v1i podaj swój klucz API gk-. Poświadczenia Anthropic: Base URLhttps://ai.geraikita.com. - Timeout
- Węzeł OpenAI Chat Model → Options → Timeout (milisekundy). Domyślnie 60000 (60 sekund), co jest częstą przyczyną przerwań po 60 sekundach; ustaw co najmniej
300000. Węzeł HTTP Request → Options → Timeout też jest w milisekundach. Self-hosted: nie ustawiajEXECUTIONS_TIMEOUT(sekundy) niżej niż to. - Streaming
- AI Agent → Options → Enable Streaming (domyślnie włączone; wymaga Chat Trigger lub Webhooka z Response Mode Streaming). Anthropic Chat Model → Stream Responses. OpenAI Chat Model nie ma opcji streamingu, więc polegaj na odpowiednio długim Timeout.
- Ponowienia
- OpenAI Chat Model → Options → Max Retries, domyślnie 2. Ponowienia po timeoucie też są płatne; najpierw popraw Timeout.
- Kontekst
- Węzeł podrzędny Simple Memory → Context Window Length = ile wcześniejszych interakcji jest wysyłanych. Trzymaj tę wartość nisko, np. 5–10.
OpenAI SDK (Python i Node.js)
- Base URL i klucz
base_url/baseURL=https://ai.geraikita.com/v1,api_key/apiKey= Twój klucz gk-. Podstawowy przykład znajdziesz w sekcji Pierwsze zapytanie.- Timeout
timeout: sekundy w Pythonie, milisekundy w Node.js. Domyślna wartość SDK to 10 minut i jest w porządku, o ile nie obniżysz jej poniżej 300 sekund.- Streaming
stream=True(Python) /stream: true(Node.js).- Ponowienia
max_retries/maxRetries, domyślnie 2, łącznie z ponawianiem zapytań, które przekroczyły timeout. Przy dużych promptach ustaw 0–1.- Kontekst
- Wysyłaj tylko potrzebną historię: przycinaj stare wiadomości lub podsumowuj je przed wysłaniem.
from openai import OpenAI
client = OpenAI(
base_url="https://ai.geraikita.com/v1",
api_key="gk-xxxxxxxx",
timeout=600.0, # sekundy
max_retries=1, # ponowienia po timeoucie też są płatne
)
stream = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Halo!"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Anthropic SDK (Python i Node.js)
- Base URL i klucz
base_url/baseURL=https://ai.geraikita.com(bez /v1, SDK samo dokleja /v1/messages),api_key/apiKey= Twój klucz gk-.- Timeout
timeout: sekundy w Pythonie, milisekundy w Node.js; domyślnie 10 minut. SDK odrzuca zapytania bez streamingu, które mogą trwać dłużej niż około 10 minut, więc używaj streamingu.- Streaming
client.messages.stream(...)albostream=True/stream: truewmessages.create.- Ponowienia
max_retries/maxRetries, domyślnie 2. Przy dużych promptach ustaw 0–1.- Kontekst
- Wysyłaj tylko potrzebną historię; ogranicz
max_tokensdo tego, czego wymaga odpowiedź.
import anthropic
client = anthropic.Anthropic(
base_url="https://ai.geraikita.com", # bez /v1
api_key="gk-xxxxxxxx",
timeout=600.0, # sekundy
max_retries=1, # ponowienia po timeoucie też są płatne
)
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Halo!"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)curl
- Base URL i klucz
- Nagłówek
Authorization: Bearer gk-...dohttps://ai.geraikita.com/v1/chat/completions. Podstawowy przykład znajdziesz w sekcji Pierwsze zapytanie. - Timeout
- Bez
--max-timecurl nie ogranicza całkowitego czasu. Jeśli go używasz, ustaw co najmniej300(sekundy). - Streaming
"stream": truew body oraz-N(--no-buffer), aby fragmenty odpowiedzi pojawiały się od razu.- Ponowienia
--retrydomyślnie wynosi 0 i ponawia też po timeoutach. Nie dodawaj go przy dużych promptach.- Kontekst
- Body budujesz sam: wysyłaj tylko potrzebne wiadomości.
curl https://ai.geraikita.com/v1/chat/completions \
--max-time 600 -N \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","stream":true,"messages":[{"role":"user","content":"Halo!"}]}'Zasady rozliczeń
Zapytania anulowane po stronie kupującego (timeout aplikacji, przycisk stop, zerwane połączenie) przed nadejściem odpowiedzi i tak są płatne. Pusty wynik jest rekompensowany tylko przy problemach po naszej stronie (pusta odpowiedź lub błąd serwera albo brak wyniku przez ≥60 sekund). Obowiązuje od 1 listopada 2026 r.
Regulamin, Artykuł 10FAQ
Moja aplikacja przekroczyła timeout i wynik był pusty. Czy i tak płacę?
Tak, jeśli Twoja aplikacja przerwała zapytanie przed nadejściem odpowiedzi: serwer AI już przetworzył Twój prompt. Wynika to z Regulaminu i obowiązuje od 1 listopada 2026 r.
Kiedy pusty wynik jest rekompensowany?
Gdy problem leży po naszej stronie: serwer zwraca pustą odpowiedź lub błąd albo przez 60 sekund lub dłużej nie ma żadnego wyniku.
Czemu po prostu nie zwiększyć liczby ponowień?
Każde ponowienie to nowe zapytanie. Jeśli przyczyną jest zbyt krótki timeout, ponowienia tylko powtarzają opłatę bez rezultatu. Zwiększ timeout do co najmniej 300 sekund i włącz streaming.
Mój prompt jest ogromny. Co pomoże najbardziej?
Podsumuj lub zacznij nową sesję, wyklucz duże foldery i używaj szybszego modelu przy dużym kontekście. Porównaj modele na stronie Cennik.