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) eANTHROPIC_AUTH_TOKEN= la tua chiave gk-. Puoi mettere le variabili nel bloccoenvdi~/.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 almeno300000.- 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
/compactriassume la conversazione,/clearne avvia una nuova. L’auto-compact è attivo per impostazione predefinita (autoCompactEnabled); unCLAUDE_AUTOCOMPACT_PCT_OVERRIDEpiù basso (es. 60) compatta prima.
{
"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 URLhttps://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,/newtaskporta 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.apiRequestTimeoutnel settings.json di VS Code, in secondi (predefinito 600, intervallo 0–3600, 0 = nessun limite). Non scendere sotto300.- 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.jsonccome nell’esempio qui sotto. - Timeout
options.timeoutsul provider (millisecondi) copre l’attesa degli header e del primo byte. Il predefinito è 300000, proprio al limite; imposta600000. Non impostarechunkTimeouttroppo basso.- Streaming
- Nessuna impostazione di streaming nella documentazione ufficiale; niente da cambiare.
- Retry
- Nessuna impostazione di retry nella documentazione ufficiale.
- Contesto
compaction.auto(predefinitotrue) e/compact. Devi impostarelimit.contextper ogni modello (un numero più piccolo compatta prima): senza, la compattazione automatica non parte. Escludi le cartelle grandi con.kilocodeignoreo regole di permesso.
{
"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-compatibleconbaseURLhttps://ai.geraikita.com/v1. - Timeout
- In
provider.geraikita.options(millisecondi):headerTimeout(attesa degli header, predefinito 300000) echunkTimeout(intervallo tra i chunk dello stream, predefinito 300000).timeout(limite complessivo) è disattivato per impostazione predefinita; se lo imposti, usa almeno300000. - 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(predefinitotrue) riassume automaticamente la sessione quando il contesto è pieno./compactriassume manualmente,/newavvia una nuova sessione.
{
"$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.timeoutin secondi (predefinito 7200). Usa almeno300, non 300000.- Streaming
- Il provider
openaiusa sempre lo streaming. - Retry
- Nessuna impostazione di retry nella documentazione ufficiale.
- Contesto
defaultCompletionOptions.contextLengthemaxTokenslimitano la dimensione del contesto e della risposta. Avvia una nuova chat per ogni attività; la CLI di Continue ha/compacte/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 # secondi, non millisecondi
defaultCompletionOptions:
contextLength: 64000 # più piccolo = cronologia tagliata
maxTokens: 8192n8n
- Base URL e chiave
- Credenziali OpenAI: imposta Base URL su
https://ai.geraikita.com/v1e la tua chiave API gk-. Credenziali Anthropic: Base URLhttps://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 impostareEXECUTIONS_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(...), oppurestream=True/stream: truesumessages.create.- Retry
max_retries/maxRetries, predefinito 2. Per i prompt grandi imposta 0–1.- Contesto
- Invia solo la cronologia necessaria; limita
max_tokensa 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-...versohttps://ai.geraikita.com/v1/chat/completions. Un esempio di base si trova in Prima richiesta. - Timeout
- Senza
--max-timecurl non limita la durata totale. Se lo usi, imposta almeno300(secondi). - Streaming
"stream": truenel 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.
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 10Domande 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.