Documentazione

Impostazioni degli strumenti agentici

Gli strumenti agentici inviano a ogni passaggio il contenuto dei file, l’output dei comandi e tutta la cronologia della conversazione. Un prompt così grande può richiedere decine di secondi prima che arrivi il primo token. Se la tua app si arrende prima, la richiesta viene comunque conteggiata ma non ricevi nulla. Imposta timeout, streaming, retry e dimensione del contesto come indicato qui sotto.

Perché è importante

  • Le richieste interrotte prima che arrivi la risposta vengono comunque conteggiate. Appena arriva una richiesta, il server IA inizia a elaborare l’intero prompt. Se la tua app la abbandona prima (timeout, pulsante stop, connessione persa), il costo dell’elaborazione è già stato sostenuto, ma non ricevi alcuna risposta.
  • I prompt enormi richiedono più di 30 secondi prima del primo token. I prompt agentici da centinaia di KB con migliaia di messaggi possono superare il limite predefinito di molte app (30 o 60 secondi) prima che esca anche un solo token.
  • Lo streaming tiene viva la connessione. Con lo streaming attivo, il nostro server invia subito gli header e poi un segnale keepalive ogni 10 secondi mentre attende la risposta. Ciò che può ancora interromperla è il limite di tempo totale della tua app, quindi impostalo ad almeno 300 secondi.
  • Scegli un modello veloce per i contesti grandi. Per sessioni lunghe o repo grandi, usa un modello più veloce e tieni i modelli grandi per i passaggi che ne hanno davvero bisogno. Confrontali nella pagina Prezzi.

Linee guida per tutti gli strumenti

Timeout
Almeno 300 secondi. Attenzione all’unità: alcuni strumenti usano i secondi (300), altri i millisecondi (300000).
Streaming
Attivalo. Senza streaming non passa alcun dato finché la risposta non è completa, quindi proxy e app si arrendono prima.
Retry
Tienili bassi (0–3). Un retry dopo un timeout è una nuova richiesta, addebitata anch’essa. Correggi prima il timeout invece di aumentare i retry.
Contesto
Tienilo piccolo. Usa il compact/riepilogo automatico, avvia una nuova sessione per ogni attività ed escludi le cartelle grandi (node_modules, build, data).

Claude Code

Base URL e chiave
Segui la guida di Claude Code: ANTHROPIC_BASE_URL = https://ai.geraikita.com (senza /v1) e ANTHROPIC_AUTH_TOKEN = la tua chiave gk-. Puoi mettere le variabili nel blocco env di ~/.claude/settings.json.
Timeout
API_TIMEOUT_MS (millisecondi): quanto ogni tentativo attende gli header della risposta, predefinito 600000 (10 minuti). Non abbassarlo; se in passato l’hai ridotto, riportalo ad almeno 300000.
Streaming
Usa sempre lo streaming. Non esiste un’impostazione per disattivarlo.
Retry
CLAUDE_CODE_MAX_RETRIES, predefinito 10, inclusi i timeout prima che la risposta inizi lo streaming. Per i prompt grandi imposta 2–3, così un singolo passaggio non viene addebitato più e più volte.
Contesto
/compact riassume la conversazione, /clear ne avvia una nuova. L’auto-compact è attivo per impostazione predefinita (autoCompactEnabled); un CLAUDE_AUTOCOMPACT_PCT_OVERRIDE più basso (es. 60) compatta prima.
~/.claude/settings.json
{
  "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 e chiave
Segui la guida di Cline: provider OpenAI Compatible (Base URL https://ai.geraikita.com/v1) oppure Anthropic con Use custom base URL https://ai.geraikita.com.
Timeout
La documentazione ufficiale di Cline non offre un’impostazione di timeout per i provider OpenAI Compatible o Anthropic (Request Timeout vale solo per Ollama). Per far uscire presto il primo token: riduci il contesto e scegli un modello più veloce per i contesti grandi.
Streaming
Nessuna impostazione di streaming nella documentazione ufficiale; niente da cambiare.
Retry
Nessuna impostazione di retry nella documentazione ufficiale.
Contesto
Auto Compact riassume automaticamente quando il contesto è quasi pieno. /smol (alias /compact) riassume manualmente, /newtask porta un riepilogo in una nuova attività. Imposta Context Window size in Model Configuration in base al modello.

Roo Code

Base URL e chiave
Nota: l’estensione Roo Code è stata chiusa ufficialmente il 15 maggio 2026. Se la usi ancora: provider OpenAI Compatible, Base URL https://ai.geraikita.com/v1, la tua chiave gk- (come per Cline).
Timeout
roo-cline.apiRequestTimeout nel settings.json di VS Code, in secondi (predefinito 600, intervallo 0–3600, 0 = nessun limite). Non scendere sotto 300.
Streaming
Assicurati che Enable streaming resti spuntato nel profilo OpenAI Compatible.
Retry
Con Auto-Approve attivo, le richieste fallite vengono ritentate automaticamente con attese crescenti; non c’è un interruttore separato.
Contesto
Intelligent Context Condensing (Settings → Context): abbassa la soglia rispetto al 100% predefinito così la condensazione parte prima, oppure premi Condense Context. Escludi le cartelle grandi con .rooignore.

Kilo Code

Base URL e chiave
Settings → Providers → Custom provider → OpenAI Compatible, Base URL https://ai.geraikita.com/v1, la tua chiave gk-. Oppure usa il file ~/.config/kilo/kilo.jsonc come nell’esempio qui sotto.
Timeout
options.timeout sul provider (millisecondi) copre l’attesa degli header e del primo byte. Il predefinito è 300000, proprio al limite; imposta 600000. Non impostare chunkTimeout troppo basso.
Streaming
Nessuna impostazione di streaming nella documentazione ufficiale; niente da cambiare.
Retry
Nessuna impostazione di retry nella documentazione ufficiale.
Contesto
compaction.auto (predefinito true) e /compact. Devi impostare limit.context per ogni modello (un numero più piccolo compatta prima): senza, la compattazione automatica non parte. Escludi le cartelle grandi con .kilocodeignore o regole di permesso.
~/.config/kilo/kilo.jsonc
{
  "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 e chiave
Cursor Settings → Models → OpenAI API key. La documentazione ufficiale di Cursor non descrive una base URL personalizzata; se la tua versione di Cursor mostra Override OpenAI Base URL, inserisci https://ai.geraikita.com/v1. La tua chiave API funziona solo per i modelli di chat (Tab continua a usare i modelli integrati di Cursor) e le richieste passano dai server di Cursor.
Timeout
Nessuna impostazione di timeout regolabile nella documentazione ufficiale. In alternativa: riduci il contesto, avvia una nuova chat per ogni attività e scegli un modello veloce, così il primo token arriva prima del limite dell’app.
Streaming
Gestito da Cursor; nessuna impostazione.
Retry
Nessuna impostazione di retry nella documentazione ufficiale.
Contesto
Cursor riassume automaticamente le parti più vecchie della conversazione quando il contesto è quasi pieno. Avvia una nuova chat ogni volta che cambi attività ed escludi i file grandi con .cursorignore.

OpenCode

Base URL e chiave
Segui la guida di OpenCode: provider @ai-sdk/openai-compatible con baseURL https://ai.geraikita.com/v1.
Timeout
In provider.geraikita.options (millisecondi): headerTimeout (attesa degli header, predefinito 300000) e chunkTimeout (intervallo tra i chunk dello stream, predefinito 300000). timeout (limite complessivo) è disattivato per impostazione predefinita; se lo imposti, usa almeno 300000.
Streaming
Usa sempre lo streaming. Non esiste un’impostazione per disattivarlo.
Retry
Nessuna impostazione di retry nella documentazione ufficiale. Se le richieste continuano a cadere, correggi il timeout e riduci il contesto.
Contesto
compaction.auto (predefinito true) riassume automaticamente la sessione quando il contesto è pieno. /compact riassume manualmente, /new avvia una nuova sessione.
~/.config/opencode/opencode.json
{
  "$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 e chiave
In config.yaml: provider: openai, apiBase: https://ai.geraikita.com/v1, apiKey = la tua chiave gk-.
Timeout
requestOptions.timeout in secondi (predefinito 7200). Usa almeno 300, non 300000.
Streaming
Il provider openai usa sempre lo streaming.
Retry
Nessuna impostazione di retry nella documentazione ufficiale.
Contesto
defaultCompletionOptions.contextLength e maxTokens limitano la dimensione del contesto e della risposta. Avvia una nuova chat per ogni attività; la CLI di Continue ha /compact e /clear.
~/.continue/config.yaml
models:
  - name: Claude Sonnet 5 (Geraikita)
    provider: openai
    model: claude-sonnet-5
    apiBase: https://ai.geraikita.com/v1
    apiKey: gk-xxxxxxxx
    requestOptions:
      timeout: 600        # secondi, non millisecondi
    defaultCompletionOptions:
      contextLength: 64000  # più piccolo = cronologia tagliata
      maxTokens: 8192

n8n

Base URL e chiave
Credenziali OpenAI: imposta Base URL su https://ai.geraikita.com/v1 e la tua chiave API gk-. Credenziali Anthropic: Base URL https://ai.geraikita.com.
Timeout
Nodo OpenAI Chat Model → Options → Timeout (millisecondi). Il predefinito è 60000 (60 secondi), causa frequente di interruzioni a 60 secondi; imposta almeno 300000. Anche il nodo HTTP Request → Options → Timeout è in millisecondi. Self-hosted: non impostare EXECUTIONS_TIMEOUT (secondi) più basso di così.
Streaming
AI Agent → Options → Enable Streaming (attivo per impostazione predefinita; richiede un Chat Trigger o un Webhook con Response Mode Streaming). Anthropic Chat Model → Stream Responses. L’OpenAI Chat Model non ha un’opzione di streaming, quindi affidati a un Timeout abbastanza lungo.
Retry
OpenAI Chat Model → Options → Max Retries, predefinito 2. Anche i retry dopo un timeout vengono addebitati; correggi prima il Timeout.
Contesto
Sotto-nodo Simple Memory → Context Window Length = quante interazioni passate vengono inviate. Tienilo basso, es. 5–10.

SDK OpenAI (Python e Node.js)

Base URL e chiave
base_url / baseURL = https://ai.geraikita.com/v1, api_key / apiKey = la tua chiave gk-. Un esempio di base si trova in Prima richiesta.
Timeout
timeout: secondi in Python, millisecondi in Node.js. Il predefinito dell’SDK è 10 minuti, che va bene finché non lo abbassi sotto 300 secondi.
Streaming
stream=True (Python) / stream: true (Node.js).
Retry
max_retries / maxRetries, predefinito 2, incluso il nuovo tentativo delle richieste in timeout. Per i prompt grandi imposta 0–1.
Contesto
Invia solo la cronologia necessaria: taglia i messaggi vecchi o riassumili prima dell’invio.
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.geraikita.com/v1",
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # secondi
    max_retries=1,   # anche i retry dopo un timeout vengono addebitati
)
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)

SDK Anthropic (Python e Node.js)

Base URL e chiave
base_url / baseURL = https://ai.geraikita.com (senza /v1, l’SDK aggiunge /v1/messages da sé), api_key / apiKey = la tua chiave gk-.
Timeout
timeout: secondi in Python, millisecondi in Node.js; predefinito 10 minuti. L’SDK rifiuta le richieste senza streaming che si prevede durino più di circa 10 minuti, quindi usa lo streaming.
Streaming
client.messages.stream(...), oppure stream=True / stream: true su messages.create.
Retry
max_retries / maxRetries, predefinito 2. Per i prompt grandi imposta 0–1.
Contesto
Invia solo la cronologia necessaria; limita max_tokens a quanto serve alla risposta.
import anthropic

client = anthropic.Anthropic(
    base_url="https://ai.geraikita.com",   # senza /v1
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # secondi
    max_retries=1,   # anche i retry dopo un timeout vengono addebitati
)
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 e chiave
Header Authorization: Bearer gk-... verso https://ai.geraikita.com/v1/chat/completions. Un esempio di base si trova in Prima richiesta.
Timeout
Senza --max-time curl non limita la durata totale. Se lo usi, imposta almeno 300 (secondi).
Streaming
"stream": true nel body, più -N (--no-buffer) così i chunk della risposta compaiono subito.
Retry
--retry è 0 per impostazione predefinita e ritenta anche in caso di timeout. Non aggiungerlo per i prompt grandi.
Contesto
Il body lo costruisci tu: invia solo i messaggi necessari.
bash
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!"}]}'

Condizioni di addebito

Le richieste annullate dal lato dell’acquirente (timeout dell’app, pulsante stop, connessione caduta) prima che arrivi la risposta vengono comunque addebitate. L’output vuoto viene compensato solo per problemi da parte nostra (risposta vuota o errore dal server, oppure nessun output per ≥60 secondi). Valido dal 1º novembre 2026.

Termini e Condizioni, Articolo 10

Domande frequenti

La mia app è andata in timeout e l’output era vuoto. Mi viene comunque addebitato?

Sì, se la tua app ha interrotto prima che arrivasse la risposta: il server IA aveva già elaborato il tuo prompt. È previsto dai Termini e condizioni e si applica dal 1º novembre 2026.

Quando viene compensato un output vuoto?

Quando il problema è da parte nostra: il server restituisce una risposta vuota o un errore, oppure non c’è alcun output per 60 secondi o più.

Perché non aumentare semplicemente i retry?

Ogni retry è una nuova richiesta. Se la causa è un timeout troppo breve, i retry ripetono solo l’addebito senza risultato. Alza il timeout ad almeno 300 secondi e attiva lo streaming.

Il mio prompt è enorme. Cosa aiuta di più?

Riassumere o avviare una nuova sessione, escludere le cartelle grandi e usare un modello più veloce per i contesti grandi. Confronta i modelli nella pagina Prezzi.