A maioria das migrações começa com a troca do nome de um modelo. O DeepSeek V4.1 Flash 1017 fez o contrário: em 17 de outubro de 2026, a DeepSeek manteve o nome deepseek-flash e trocou o modelo por trás dele. Quem chamava deepseek-flash, deepseek-v4-flash ou deepseek-v4-flash-vision-exp na API da DeepSeek foi migrado sem alterar uma linha de código.
Na AIHubMix, o novo checkpoint tem ID próprio, deepseek-v4.1-flash-1017, então você escolhe quando migrar. De qualquer forma, estes são os problemas a verificar:
| Problema | Falha | Onde você percebe |
|---|---|---|
| reasoning_content não enviado de volta | Com erro explícito | Erro 400 após a primeira chamada de ferramenta |
| Modelo trocado sob o mesmo nome | Silenciosamente | Tamanho da saída, formatos, pontuações de avaliação |
| Preço no horário de pico | Silenciosamente | Conta dobra nos horários de pico em dias úteis |
| Esforço definido como max por padrão | Silenciosamente | Execuções de agentes 1,6–1,8x mais longas |
| Raciocínio conta para max_tokens | Ambos | Respostas truncadas |
| Cobrança de Search e Fetch | Silenciosamente | A partir de 31 de out., 16:00 UTC |
A AIHubMix executou um pequeno conjunto de requisições de teste contra deepseek-v4.1-flash-1017 em 19 de outubro de 2026 (03:02 UTC). Os resultados dessa execução estão marcados como tal abaixo.
1. O erro 400 que quebra os loops de ferramentas
O que você verá. A segunda requisição após uma chamada de ferramenta falha com HTTP 400 e com esta mensagem, conforme relatado em uma issue no GitHub contra opencodex para o V4.1 Flash em 15 de outubro:
[invalid_request_error] The `reasoning_content` in the thinking mode must be passed back to the API.
A mesma mensagem aparece em relatos anteriores contra opencode, LangChain e claude-code-router para o V4 Pro e o V4 Flash.
Por quê. O guia do modo de raciocínio da DeepSeek diz que, quando uma requisição inclui tools, o reasoning_content de todos os turnos anteriores do assistente deve ser devolvido, "mesmo para turnos em que o modelo não executou uma chamada de ferramenta". Se não for, "a API retornará um erro 400". Sem tools, devolver o campo é opcional e ignorado. Os clientes costumam tropeçar nisso porque seu serializador de mensagens mantém content e tool_calls, mas descarta o campo extra.
A requisição que dispara o erro. Turno dois de um loop de ferramentas, com a mensagem do assistente sem reasoning_content:
curl -s https://aihubmix.com/v1/chat/completions \
-H "Authorization: Bearer $AIHUBMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash-1017",
"tools": [{"type": "function", "function": {"name": "get_weather",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}],
"messages": [
{"role": "user", "content": "What is the temperature in Hangzhou? Use the tool."},
{"role": "assistant", "content": null, "tool_calls": [{"id": "call_00_example", "type": "function",
"function": {"name": "get_weather", "arguments": "{\"city\": \"Hangzhou\"}"}}]},
{"role": "tool", "tool_call_id": "call_00_example", "content": "{\"celsius\": 18}"}
]
}'
Na API própria da DeepSeek, esta é a forma que retorna o 400 nos relatos públicos. Pela AIHubMix, a mesma forma retornou HTTP 200 e uma resposta normal na execução de teste de 19 de outubro. Foi uma única execução, então não a trate como garantia.
Como corrigir. Mantenha o campo, qualquer que seja a rota que você usar:
msg = resp.choices[0].message
messages.append(msg) # carries content, reasoning_content, and tool_calls over
- No seu próprio código, anexe a mensagem completa do assistente, não uma cópia montada manualmente.
- Nos frameworks, atualize: o opencode corrigiu o ciclo de ida e volta em versões posteriores, e o opencodex incorporou a correção em 16 de outubro.
- Como último recurso, defina
{"thinking": {"type": "disabled"}}para loops de ferramentas. Isso evita o erro, mas abre mão do raciocínio que torna o modelo bom em trabalho de agentes.
2. O mesmo nome, um modelo diferente
O changelog da DeepSeek de 17 de outubro diz claramente: "O método de chamada da API e o preço permanecem inalterados — basta usar deepseek-flash para acessar o modelo mais recente." Não há nome fixo para o checkpoint de setembro, e os dois nomes Flash mais antigos agora também rodam o 1017.
Nada gera erro, mas três coisas podem mudar:
- Tamanho da saída. O 1017 foi treinado para produzir saídas mais curtas. Parsers, layouts de interface e prompts que esperavam as explicações longas do modelo de setembro podem receber menos texto do que antes.
- Linhas de base de avaliação. Pontuações e custos registrados no checkpoint de setembro não descrevem mais o que o
deepseek-flashretorna. - Comportamento. A DeepSeek retreinou o 1017 para trabalho de projeto de ponta a ponta. Agentes podem seguir caminhos diferentes até o mesmo resultado.
O que fazer. Registre o modelo e a data em cada execução de avaliação, e reexecute agora seu conjunto de regressão. A resposta informa qual checkpoint respondeu: no teste de 19 de outubro, todas as respostas pela AIHubMix trouxeram "model": "deepseek-v4-1-flash-261017". Registre esse campo, e uma troca não anunciada se torna visível no dia em que acontece.
3. Regras de cobrança fáceis de passar despercebidas
Pico e fora de pico. A DeepSeek cobra preço integral das 01:00 às 04:00 e das 06:00 às 10:00 UTC em dias úteis, e meio preço em todos os outros horários, nos fins de semana e em feriados públicos chineses. A AIHubMix segue as mesmas janelas e precifica cada requisição no momento em que foi enviada, então uma requisição longa com streaming que começa fora de pico continua fora de pico.
| Item | Pico | Fora de pico |
|---|---|---|
| Entrada, sem acerto de cache | $0.3098 | $0.155 |
| Entrada, com acerto de cache | $0.0062 | $0.0031 |
| Saída | $1.2392 | $0.62 |
Preços de lista da AIHubMix por 1M de tokens para deepseek-v4.1-flash-1017. Há um desconto de 30% por tempo limitado em vigor sobre eles.
Acertos de cache custam 50 vezes menos que falhas. Agentes reenviam o mesmo prompt de sistema, definições de ferramentas e histórico a cada chamada. Mantenha esse prefixo estável, coloque o que muda a cada chamada no final, e a maior parte de cada requisição será cobrada pela taxa de acerto de cache.
O raciocínio é cobrado como saída. O raciocínio vem ativado por padrão, e os tokens de raciocínio contam tanto na conta quanto em max_tokens.
Search e Fetch. A DeepSeek abriu suas novas APIs de Search e Fetch em 17 de outubro, a US$ 0,75 por 1.000 chamadas bem-sucedidas cada. Chamadas do lado do servidor feitas pelo DeepSeek Harness, Claude Code ou Codex na API da DeepSeek são gratuitas até 31 de outubro de 2026, 16:00 UTC. Depois disso, um agente que pesquisa a cada turno adiciona um custo por chamada além dos tokens.
O total. Com as premissas indicadas (40 chamadas, 1,2M tokens de entrada com 90% de acerto de cache, 60K tokens de saída), uma sessão de agente custa US$ 0,118 no pico e US$ 0,059 fora de pico, pelos preços de lista da AIHubMix. Mover as execuções em lote para fora de pico é a economia individual mais expressiva.
4. Configurações que custam mais do que entregam
Esforço. A API oferece low, high (padrão) e max. O paper do V4.1 Flash da DeepSeek mapeia esses valores para esforços internos de 50, 75 e 100, e relata que o passo para max "alonga as trajetórias dos agentes em 1,6–1,8× por melhorias apenas marginais". O guia de configuração do Claude Code da própria DeepSeek ainda define CLAUDE_CODE_EFFORT_LEVEL=max. Para o trabalho cotidiano com agentes, high é o padrão mais adequado.
A DeepSeek também mapeia outros nomes de esforço para seus três níveis: minimal vira low, enquanto medium e xhigh viram ambos high. Uma ferramenta que oferece cinco níveis, na prática, entrega dois ou três. No teste de 19 de outubro, a AIHubMix aceitou low, high e max no Chat Completions.
max_tokens. O model card recomenda pelo menos 256K para execuções longas de agentes, porque o raciocínio compartilha o orçamento de saída. Com um limite pequeno, um passo difícil pode gastar todo o orçamento pensando. Verifique finish_reason: "length".
Parâmetros de amostragem. No modo de raciocínio, temperature, presence_penalty e frequency_penalty são aceitos sem erro e não têm efeito. top_p é limitado ao intervalo 0,95–1,0. Se um pipeline dependia de temperatura baixa para saída determinística, ele deixa de tê-la.
5. Agentes com permissões reais
O 1017 foi treinado com aprendizado por reforço em projetos inteiros, então tende a continuar construindo até que o trabalho pareça concluído. Suas respostas também são mais curtas, o que significa menos narração do que foi alterado. Dois hábitos ajudam:
- Revise os diffs e os logs de comandos, não o resumo que o modelo faz deles.
- Execute em um sandbox com uma lista de comandos permitidos e exija aprovação para qualquer ação destrutiva (exclusões, force pushes, migrações, chamadas de rede externas).
A própria DeepSeek destaca a força da linha Flash em tarefas de segurança; o checkpoint de setembro marcou 88,1 no CyberGym na tabela da própria DeepSeek. Isso é útil para trabalho defensivo e mais um motivo para restringir bem as permissões.
6. Ferramentas de programação
A AIHubMix serve deepseek-v4.1-flash-1017 nos três protocolos que as ferramentas de programação precisam. No teste de 19 de outubro, Chat Completions, Anthropic Messages (incluindo uma chamada de ferramenta em dois turnos) e a Responses API retornaram todos 200.
Claude Code (Anthropic Messages). Aponte-o para a AIHubMix como no guia do Claude Code e defina o modelo:
export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash-1017"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_EFFORT_LEVEL="high"
- Raciocínio: no teste, uma requisição Messages sem configuração de esforço voltou sem bloco de raciocínio, enquanto uma com
output_config.effortretornou raciocínio. Mantenha um nível de esforço definido para que o 1017 raciocine, e verifique os logs de requisição. - Contexto: o guia da DeepSeek adiciona o sufixo
[1m]ao nome do modelo para o endpoint próprio dela; esse sufixo não foi testado pela AIHubMix. - Problema conhecido: por alguns roteadores, o Claude Code descartou o conteúdo de raciocínio e atingiu o 400 acima (issue 1378 do claude-code-router). O teste de chamada de ferramenta em dois turnos pelo endpoint Messages da AIHubMix não o atingiu.
Codex (Responses API). Siga o guia do Codex CLI: um provider aihubmix com base_url = "https://aihubmix.com/v1" e wire_api = "responses", e model = "deepseek-v4.1-flash-1017". Para escolhê-lo em /model, adicione-o a um arquivo model_catalog_json com context_window definido como 1,000,000.
- Esforço: o script de catálogo do guia oferece
low,mediumehigh. Pelo mapeamento da DeepSeek,mediumehighcaem ambos emhighda DeepSeek, então você obtém dois níveis reais. - Problema conhecido: versões mais recentes do Codex descartam o catálogo inteiro se um único campo obrigatório estiver ausente. O script do guia evita isso.
DeepSeek Harness (Chat Completions). A DeepSeek diz que o 1017 funciona melhor com o Harness 0.2.1-rc.1 ou posterior. Adicione a AIHubMix como provider compatível com OpenAI seguindo o guia do DeepSeek Harness e adicione deepseek-v4.1-flash-1017 como modelo. Esse guia foi escrito para uma versão anterior do Harness, então verifique os nomes dos campos se a interface tiver mudado.
Um teste rápido de 15 minutos. Crie um repositório pequeno com um teste que falha:
mkdir flash-smoke && cd flash-smoke && git init -q
printf 'def mean(xs):\n return sum(xs) / len(xs)\n' > stats.py
printf 'from stats import mean\n\ndef test_mean():\n assert mean([1, 2, 3]) == 2\n\ndef test_empty():\n assert mean([]) == 0\n' > test_stats.py
Inicie sua ferramenta nessa pasta e peça: "Execute o pytest, corrija o teste que falha alterando apenas stats.py e depois execute o pytest novamente." Ele passa se:
- o agente fizer pelo menos duas chamadas de ferramenta (executar os testes, editar o arquivo) sem nenhum erro 400;
- ambos os testes passarem ao final;
- o log de requisições do AIHubMix mostra
deepseek-v4.1-flash-1017, e o custo da sessão é de no máximo alguns centavos.
Checklist de migração
- Defina o ID do modelo: deepseek-v4.1-flash-1017 no AIHubMix.
- Anexe mensagens completas do assistente em loops de ferramentas para que reasoning_content seja enviado de volta a cada turno.
- Execute novamente seu conjunto de regressão e avaliação; registre o modelo, a data e o campo de modelo da resposta.
- Verifique parsers e interfaces para saídas mais curtas.
- Defina o effort como high por padrão; reserve max para as tarefas mais difíceis.
- Aumente max_tokens para turnos de agentes e configure um alerta para finish_reason length.
- Remova suposições de determinismo baseadas em temperature no modo de raciocínio (thinking).
- Agende lotes e execuções noturnas de agentes fora do horário de pico.
- Mantenha os prefixos dos prompts estáveis para aproveitar os acertos de cache.
- Planeje o orçamento das chamadas Search e Fetch a partir de 31 de outubro, caso você use as ferramentas do lado do servidor da DeepSeek.
- Execute agentes em sandbox com permissões reais e revise os diffs, não os resumos.
- Execute o teste de fumaça de 15 minutos em cada ferramenta de programação que você usa.
FAQ
Preciso mudar o código para usar o DeepSeek V4.1 Flash 1017?
Na API da DeepSeek, não: deepseek-flash já aponta para 1017. No AIHubMix, altere o nome do modelo para deepseek-v4.1-flash-1017.
Por que recebo um erro 400 sobre reasoning_content?
A DeepSeek exige que o reasoning_content de todos os turnos anteriores do assistente seja enviado de volta quando a requisição inclui ferramentas. Clientes que descartam esse campo falham na chamada seguinte à primeira chamada de ferramenta.
O erro 400 de reasoning_content acontece pelo AIHubMix?
Não aconteceu no teste do AIHubMix realizado em 19 de outubro de 2026, em que um turno sem reasoning_content retornou 200. Mesmo assim, continue enviando o campo, pois é uma regra documentada pela DeepSeek.
Ainda posso usar o V4.1 Flash de setembro na API da DeepSeek?
Não. A DeepSeek migrou deepseek-flash e os nomes antigos do Flash para 1017 e não oferece um nome fixo para o checkpoint de setembro.
Quando o DeepSeek V4.1 Flash fica mais barato?
Fora do intervalo de 01:00 a 04:00 e de 06:00 a 10:00 UTC em dias úteis. Em todas as outras horas, nos fins de semana e nos feriados públicos chineses, o custo é a metade.
Qual nível de effort os agentes de programação devem usar?
High, que é o padrão. O próprio artigo da DeepSeek afirma que o max prolonga as execuções dos agentes em 1,6 a 1,8 vez para ganhos pequenos.
O 1017 funciona no Claude Code e no Codex pelo AIHubMix?
Sim. O AIHubMix o disponibiliza nos protocolos Anthropic Messages e Responses que essas ferramentas usam, e ambos passaram em um teste básico em 19 de outubro de 2026.
Continue lendo: a série DeepSeek V4.1 Flash 1017
- Não tem certeza de que a mudança vale a pena ainda? O post de atualização mostra o que o 1017 ganha em relação ao checkpoint de setembro e quanto custa uma sessão: DeepSeek V4.1 Flash 1017: Same Price, Shorter Outputs. Should You Switch?
- Vai configurar o Claude Code de qualquer forma? Veja como o 1017 se compara ao modelo que o Claude Code usa para seus próprios subagentes: DeepSeek V4.1 Flash 1017 vs Claude Haiku 5.5: Which Cheap Model for Terminal Coding Agents?
- Migrando do V4 Pro em vez do Flash antigo? Este post verifica se você ainda precisa do Pro: DeepSeek V4.1 Flash 1017 vs V4 Pro: Is the Flash Enough Now?
Fontes
- Thinking Mode (DeepSeek)
- Change Log (DeepSeek)
- Integrate with AI Tools (DeepSeek)
- DeepSeek V4.1 Flash 1017 on AIHubMix (AIHubMix)
- DeepSeek V4.1 Flash returns reasoning_content 400 after tool calls, issue 7118 (GitHub)



