Ir para o artigo
DikayaChat

Resposta de IA cortada: limite, raciocínio ou conexão?

Equipe editorial da Dikaya · Revisado em

Uma resposta de IA pode parecer cortada por motivos diferentes: o limite de saída foi atingido, parte do orçamento foi usada em raciocínio, a conexão caiu ou o texto terminou sem cumprir a tarefa. A correção depende de qual desses casos ocorreu. Este guia é para quem usa o chat ou integra a API da Dikaya e precisa decidir entre ajustar o pedido, continuar um resultado parcial ou investigar um estado desconhecido.

Pontos principais

  • Não confunda ausência de texto final com prova de que não houve processamento.
  • O limite de saída pode incluir raciocínio; ele não garante a mesma quantidade de texto visível.
  • Continuar ou regenerar é uma nova ação, não uma recuperação gratuita garantida.

Comece pelas evidências que você recebeu

Anote o modelo selecionado, o limite enviado, se houve streaming, o horário e se a resposta terminou com um estado final. Uma resposta completa do protocolo pode conter um texto ruim ou curto; uma conexão interrompida pode ter mostrado parte de um bom texto sem receber o final. Esses casos pedem decisões diferentes e não devem aparecer como o mesmo erro genérico.

Na API, inspecione finish_reason quando existir, o conteúdo retornado e os dados de uso disponíveis. Um valor length costuma sinalizar o limite de geração, mas não identifica sozinho qual trecho você gostaria de ter recebido. Um stop também não garante que todas as exigências editoriais foram atendidas: o modelo pode ter encerrado uma resposta incompleta do ponto de vista da tarefa.

Diferencie contexto, saída e texto visível

A janela de contexto é o espaço usado para o material que participa da solicitação. O limite de saída controla outra parte do trabalho. Em modelos com raciocínio, tokens usados nessa etapa podem consumir o orçamento de saída antes de aparecer uma resposta final longa. Por isso, pedir 128 tokens não significa receber 128 tokens de prosa útil.

Na Dikaya, o comportamento efetivo também depende dos limites do modelo, da chave e do tipo de conta. Não tome um limite de demonstração como limite universal nem suponha que uma preferência como reasoning_effort=none elimine todo raciocínio em qualquer modelo. Consulte as opções realmente suportadas; trocar parâmetros às cegas não é um diagnóstico.

Inspecione uma resposta salva sem fazer outro pedido

O exemplo lê response.json no seu computador. Ele não chama a API, não usa chave e não tenta continuar a resposta. Salve nele uma resposta JSON completa, sem credenciais. A presença de conteúdo, razão de término e uso ajuda a escolher a próxima verificação, mas nenhum campo isolado comprova toda a contabilização do serviço.

Se a conexão caiu antes de você conseguir salvar um JSON completo, não force um arquivo parcial a parecer uma resposta válida. Registre a falha de transporte e o texto recebido separadamente. Também não reconstrua usage a partir do número de caracteres: essa contagem não corresponde necessariamente aos tokens do modelo.

import json
from pathlib import Path

data = json.loads(Path("response.json").read_text(encoding="utf-8"))
for choice in data.get("choices", []):
    message = choice.get("message") or {}
    content = message.get("content")
    print("finish_reason:", choice.get("finish_reason"))
    print("content present:", bool(content))
usage = data.get("usage")
print("usage present:", isinstance(usage, dict))
if isinstance(usage, dict):
    print(json.dumps(usage, ensure_ascii=False, indent=2))

Reduza a entrega antes de aumentar o teto

Se o pedido exige um relatório inteiro, código e testes em uma única resposta, um teto pequeno cria conflito entre tarefa e orçamento. Primeiro defina uma entrega menor: uma função, uma seção ou uma lista de decisões. Peça que o modelo conclua essa unidade, em vez de iniciar cinco partes e abandonar a última.

Para texto, indique uma extensão aproximada e prioridades. Para código, reduza o escopo funcional sem aceitar blocos essenciais ausentes. Aumentar o limite pode ser apropriado quando o modelo e a conta permitem, mas aumenta o trabalho potencial e não resolve uma instrução ambígua. Teste uma mudança por vez para saber o que produziu a melhora.

Entregue somente a seção “Plano de migração”, em até seis etapas.
Para cada etapa, informe pré-condição, ação e critério de conclusão.
Não escreva a introdução nem implemente o sistema inteiro.
Se faltar uma decisão, liste a pergunta em vez de inventar a resposta.
Contexto do projeto:

Continue a partir de um ponto conhecido

Quando houver um resultado parcial útil e o estado estiver esclarecido, selecione o último trecho completo e diga exatamente o que falta. Para prosa, peça a próxima seção sem repetir a anterior. Para código, informe arquivo, função e requisito pendente; uma continuação começando no meio de uma string pode produzir um arquivo inválido.

No chat, você pode manter variantes para comparar, mas gerar novamente ou editar com nova geração inicia trabalho adicional. Não trate o botão Parar como garantia de estorno. Se a conexão caiu e o processamento pode continuar, verifique o estado do pedido existente antes de enviar outro. Um rascunho restaurado também não prova que nada foi salvo ou consumido.

  • Identifique o último trecho completo e utilizável.
  • Confira o estado da solicitação anterior.
  • Defina uma única parte que ainda falta.
  • Revise a junção das partes, os imports e a consistência dos nomes.

Quando investigar em vez de insistir

Se pedidos pequenos e bem definidos continuam retornando erro conhecido ou conteúdo vazio, guarde os horários e os metadados relevantes. Consulte os limites e a disponibilidade atual do modelo. Não atribua automaticamente o problema a censura, falta de saldo ou defeito da interface; uma mensagem genérica não demonstra a causa.

Para suporte, descreva o que foi enviado em termos de tamanho e parâmetros, o estado recebido e se há resultado parcial. Não compartilhe a chave. Em testes da sua aplicação, use respostas locais com término normal, limite e interrupção de conexão. Só depois faça uma nova tentativa deliberada: diagnosticar bem evita transformar incerteza em várias solicitações pagas.

Perguntas e respostas

Recebi texto vazio. Isso significa custo zero?

Não. Pode ter ocorrido processamento sem texto final visível, consumo de raciocínio ou uma interrupção antes da entrega completa. Examine estado, uso e registros disponíveis. Se a evidência não resolver o caso, mantenha o resultado como desconhecido e investigue antes de reenviar.

Aumentar max_completion_tokens sempre resolve?

Não. Pode ajudar quando o teto é o problema e o modelo aceita o valor, mas não corrige falhas de conexão, erros de requisição ou instruções vagas. O orçamento pode incluir raciocínio e continua sujeito aos limites do modelo e da conta.

Pedir “continue” reaproveita a mesma solicitação?

É uma nova solicitação com contexto e custo próprios. Verifique primeiro a situação da anterior, forneça o trecho necessário e diga o que falta. Não presuma que uma continuação equivale a recuperar gratuitamente uma resposta perdida.

Fontes

Conteúdo preparado com auxílio de IA. Os exemplos são ilustrativos, não respostas reais nem testes comparativos. As fontes externas não substituem os termos do serviço.

Levar esta tarefa ao chat

Somente o rascunho da pergunta será transferido. Nada é enviado até você decidir enviar. Uma nova geração usa as condições da sua conta.

Levar esta tarefa ao chat Documentação