Configurações de ferramentas agênticas
Ferramentas agênticas enviam, a cada passo, o conteúdo dos arquivos, a saída dos comandos e todo o histórico da conversa. Um prompt desse tamanho pode levar dezenas de segundos até o primeiro token chegar. Se o seu app desistir antes, a requisição conta mesmo assim, mas você não recebe nada. Configure timeout, streaming, retries e tamanho do contexto como mostrado abaixo.
Por que isso importa
- Requisições cortadas antes de a resposta chegar contam mesmo assim. Assim que uma requisição chega, o servidor de IA começa a processar o prompt inteiro. Se o seu app a abandonar antes (timeout, botão de parar, conexão perdida), o custo do processamento já foi gerado, mas você não recebe resposta.
- Prompts enormes precisam de mais de 30 segundos até o primeiro token. Prompts agênticos de centenas de KB com milhares de mensagens podem ultrapassar o limite padrão de muitos apps (30 ou 60 segundos) antes de sair um único token.
- O streaming mantém a conexão viva. Com o streaming ativado, nosso servidor envia os headers na hora e depois um sinal de keepalive a cada 10 segundos enquanto espera a resposta. O que ainda pode cortá-la é o limite de tempo total do seu app, então defina-o como pelo menos 300 segundos.
- Escolha um modelo rápido para contextos grandes. Para sessões longas ou repositórios grandes, use um modelo mais rápido e deixe os modelos grandes para os passos que realmente precisam deles. Compare-os na página de Preços.
Diretrizes para todas as ferramentas
- Timeout
- Pelo menos 300 segundos. Atenção à unidade: algumas ferramentas usam segundos (
300), outras milissegundos (300000). - Streaming
- Ative-o. Sem streaming, nenhum dado trafega até a resposta estar completa, então proxies e apps desistem mais cedo.
- Retries
- Mantenha-os baixos (0–3). Um retry depois de um timeout é uma nova requisição, que também é cobrada. Corrija primeiro o timeout em vez de aumentar os retries.
- Contexto
- Mantenha-o pequeno. Use o compact/resumo automático, inicie uma nova sessão por tarefa e exclua pastas grandes (node_modules, build, data).
Claude Code
- Base URL e chave
- Siga o guia do Claude Code:
ANTHROPIC_BASE_URL=https://ai.geraikita.com(sem /v1) eANTHROPIC_AUTH_TOKEN= sua chave gk-. Você pode colocar as variáveis no blocoenvdo~/.claude/settings.json. - Timeout
API_TIMEOUT_MS(milissegundos): quanto tempo cada tentativa espera pelos headers da resposta, padrão 600000 (10 minutos). Não diminua; se você já o reduziu, volte para pelo menos300000.- Streaming
- Sempre usa streaming. Não há configuração para desativá-lo.
- Retries
CLAUDE_CODE_MAX_RETRIES, padrão 10, incluindo timeouts antes de a resposta começar o streaming. Para prompts grandes, defina 2–3 para que um mesmo passo não seja cobrado várias vezes.- Contexto
/compactresume a conversa,/clearinicia uma nova. O auto-compact vem ativado por padrão (autoCompactEnabled); umCLAUDE_AUTOCOMPACT_PCT_OVERRIDEmais baixo (ex.: 60) compacta mais cedo.
{
"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 chave
- Siga o guia do Cline: provider OpenAI Compatible (Base URL
https://ai.geraikita.com/v1) ou Anthropic com Use custom base URLhttps://ai.geraikita.com. - Timeout
- A documentação oficial do Cline não oferece configuração de timeout para os providers OpenAI Compatible ou Anthropic (Request Timeout é só para o Ollama). Para o primeiro token sair rápido: reduza o contexto e escolha um modelo mais rápido para contextos grandes.
- Streaming
- Nenhuma configuração de streaming na documentação oficial; nada a alterar.
- Retries
- Nenhuma configuração de retry na documentação oficial.
- Contexto
- Auto Compact resume automaticamente quando o contexto está quase cheio.
/smol(alias/compact) resume manualmente,/newtaskleva um resumo para uma nova tarefa. Ajuste Context Window size em Model Configuration de acordo com o modelo.
Roo Code
- Base URL e chave
- Observação: a extensão Roo Code foi oficialmente encerrada em 15 de maio de 2026. Se você ainda a usa: provider OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, sua chave gk- (igual ao Cline). - Timeout
roo-cline.apiRequestTimeoutno settings.json do VS Code, em segundos (padrão 600, intervalo 0–3600, 0 = sem limite). Não use menos que300.- Streaming
- Garanta que Enable streaming continue marcado no perfil OpenAI Compatible.
- Retries
- Com o Auto-Approve ativado, requisições com falha são repetidas automaticamente com intervalos crescentes; não há um botão separado.
- Contexto
- Intelligent Context Condensing (Settings → Context): reduza o limite a partir dos 100% padrão para a condensação começar mais cedo, ou clique em Condense Context. Exclua pastas grandes com
.rooignore.
Kilo Code
- Base URL e chave
- Settings → Providers → Custom provider → OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, sua chave gk-. Ou use o arquivo~/.config/kilo/kilo.jsonccomo no exemplo abaixo. - Timeout
options.timeoutno provider (milissegundos) cobre a espera pelos headers e pelo primeiro byte. O padrão é 300000, bem no limite; defina600000. Não definachunkTimeoutbaixo demais.- Streaming
- Nenhuma configuração de streaming na documentação oficial; nada a alterar.
- Retries
- Nenhuma configuração de retry na documentação oficial.
- Contexto
compaction.auto(padrãotrue) e/compact. Você precisa definirlimit.contextpor modelo (um número menor compacta mais cedo): sem ele, a compactação automática não roda. Exclua pastas grandes com.kilocodeignoreou regras de permissão.
{
"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 chave
- Cursor Settings → Models → OpenAI API key. A documentação oficial do Cursor não descreve uma base URL personalizada; se a sua versão do Cursor mostrar Override OpenAI Base URL, informe
https://ai.geraikita.com/v1. Sua própria chave de API só funciona com modelos de chat (o Tab continua com os modelos nativos do Cursor), e as requisições passam pelos servidores do Cursor. - Timeout
- Nenhuma configuração de timeout ajustável na documentação oficial. Em vez disso: reduza o contexto, inicie um novo chat por tarefa e escolha um modelo rápido para o primeiro token chegar antes do limite do app.
- Streaming
- Gerenciado pelo Cursor; sem configuração.
- Retries
- Nenhuma configuração de retry na documentação oficial.
- Contexto
- O Cursor resume automaticamente as partes antigas da conversa quando o contexto está quase cheio. Inicie um novo chat sempre que trocar de tarefa e exclua arquivos grandes com
.cursorignore.
OpenCode
- Base URL e chave
- Siga o guia do OpenCode: provider
@ai-sdk/openai-compatiblecombaseURLhttps://ai.geraikita.com/v1. - Timeout
- Em
provider.geraikita.options(milissegundos):headerTimeout(espera pelos headers, padrão 300000) echunkTimeout(intervalo entre chunks do stream, padrão 300000).timeout(limite geral) vem desativado por padrão; se você defini-lo, use pelo menos300000. - Streaming
- Sempre usa streaming. Não há configuração para desativá-lo.
- Retries
- Nenhuma configuração de retry na documentação oficial. Se as requisições continuarem caindo, corrija o timeout e reduza o contexto.
- Contexto
compaction.auto(padrãotrue) resume a sessão automaticamente quando o contexto enche./compactresume manualmente,/newinicia uma nova sessão.
{
"$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 chave
- No
config.yaml:provider: openai,apiBase: https://ai.geraikita.com/v1,apiKey= sua chave gk-. - Timeout
requestOptions.timeoutem segundos (padrão 7200). Use pelo menos300, não 300000.- Streaming
- O provider
openaisempre usa streaming. - Retries
- Nenhuma configuração de retry na documentação oficial.
- Contexto
defaultCompletionOptions.contextLengthemaxTokenslimitam o tamanho do contexto e da resposta. Inicie um novo chat por tarefa; a CLI do Continue tem/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 # segundos, não milissegundos
defaultCompletionOptions:
contextLength: 64000 # menor = histórico é cortado
maxTokens: 8192n8n
- Base URL e chave
- Credenciais OpenAI: defina Base URL como
https://ai.geraikita.com/v1e sua chave de API gk-. Credenciais Anthropic: Base URLhttps://ai.geraikita.com. - Timeout
- Nó OpenAI Chat Model → Options → Timeout (milissegundos). O padrão é 60000 (60 segundos), causa comum de cortes aos 60 segundos; defina pelo menos
300000. O nó HTTP Request → Options → Timeout também é em milissegundos. Self-hosted: não definaEXECUTIONS_TIMEOUT(segundos) abaixo disso. - Streaming
- AI Agent → Options → Enable Streaming (ativado por padrão; precisa de um Chat Trigger ou de um Webhook com Response Mode Streaming). Anthropic Chat Model → Stream Responses. O OpenAI Chat Model não tem opção de streaming, então conte com um Timeout longo o suficiente.
- Retries
- OpenAI Chat Model → Options → Max Retries, padrão 2. Retries depois de um timeout também são cobrados; corrija primeiro o Timeout.
- Contexto
- Sub-nó Simple Memory → Context Window Length = quantas interações anteriores são enviadas. Mantenha baixo, ex.: 5–10.
SDK da OpenAI (Python e Node.js)
- Base URL e chave
base_url/baseURL=https://ai.geraikita.com/v1,api_key/apiKey= sua chave gk-. Há um exemplo básico em Primeira requisição.- Timeout
timeout: segundos no Python, milissegundos no Node.js. O padrão do SDK é 10 minutos, o que está ótimo desde que você não o reduza para menos de 300 segundos.- Streaming
stream=True(Python) /stream: true(Node.js).- Retries
max_retries/maxRetries, padrão 2, incluindo repetir requisições que deram timeout. Para prompts grandes, defina 0–1.- Contexto
- Envie só o histórico necessário: corte mensagens antigas ou resuma-as antes de enviar.
from openai import OpenAI
client = OpenAI(
base_url="https://ai.geraikita.com/v1",
api_key="gk-xxxxxxxx",
timeout=600.0, # segundos
max_retries=1, # retries após timeout também são cobrados
)
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 da Anthropic (Python e Node.js)
- Base URL e chave
base_url/baseURL=https://ai.geraikita.com(sem /v1, o SDK acrescenta /v1/messages por conta própria),api_key/apiKey= sua chave gk-.- Timeout
timeout: segundos no Python, milissegundos no Node.js; padrão 10 minutos. O SDK recusa requisições sem streaming que devem levar mais de cerca de 10 minutos, então use streaming.- Streaming
client.messages.stream(...), oustream=True/stream: trueemmessages.create.- Retries
max_retries/maxRetries, padrão 2. Para prompts grandes, defina 0–1.- Contexto
- Envie só o histórico necessário; limite
max_tokensao que a resposta precisa.
import anthropic
client = anthropic.Anthropic(
base_url="https://ai.geraikita.com", # sem /v1
api_key="gk-xxxxxxxx",
timeout=600.0, # segundos
max_retries=1, # retries após timeout também são cobrados
)
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 chave
- Header
Authorization: Bearer gk-...parahttps://ai.geraikita.com/v1/chat/completions. Há um exemplo básico em Primeira requisição. - Timeout
- Sem
--max-time, o curl não limita a duração total. Se usar, defina pelo menos300(segundos). - Streaming
"stream": trueno body, mais-N(--no-buffer) para os chunks da resposta aparecerem na hora.- Retries
--retrytem padrão 0 e também repete em caso de timeout. Não o adicione para prompts grandes.- Contexto
- Você mesmo monta o body: envie só as mensagens necessárias.
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!"}]}'Termos de cobrança
Requisições canceladas do lado do comprador (timeout do app, botão de parar, conexão caída) antes de a resposta chegar continuam sendo cobradas. Saída vazia só é compensada em problemas do nosso lado (resposta vazia ou erro do servidor, ou nenhuma saída por ≥60 segundos). Vale a partir de 1º de novembro de 2026.
Termos e Condições, Artigo 10Perguntas frequentes
Meu app deu timeout e a saída veio vazia. Ainda sou cobrado?
Sim, se o seu app cortou antes de a resposta chegar: o servidor de IA já tinha processado o seu prompt. Isso está previsto nos Termos e Condições e vale a partir de 1º de novembro de 2026.
Quando uma saída vazia é compensada?
Quando o problema é do nosso lado: o servidor retorna uma resposta vazia ou um erro, ou não há nenhuma saída por 60 segundos ou mais.
Por que não simplesmente aumentar os retries?
Cada retry é uma nova requisição. Se a causa é um timeout curto demais, os retries só repetem a cobrança sem resultado. Aumente o timeout para pelo menos 300 segundos e ative o streaming.
Meu prompt é enorme. O que mais ajuda?
Resumir ou iniciar uma nova sessão, excluir pastas grandes e usar um modelo mais rápido para contextos grandes. Compare os modelos na página de Preços.