대부분의 마이그레이션은 모델 이름을 바꾸는 것으로 시작합니다. 그러나 DeepSeek V4.1 Flash 1017은 반대로 진행됐습니다. 2026년 10월 17일, DeepSeek은 이름 deepseek-flash는 그대로 두고 그 뒤의 모델만 바꿨습니다. DeepSeek API에서 deepseek-flash, deepseek-v4-flash, deepseek-v4-flash-vision-exp를 호출하던 사용자는 코드를 한 줄도 바꾸지 않아도 새 모델로 넘어갔습니다.
AIHubMix에서는 새 체크포인트가 자체 ID deepseek-v4.1-flash-1017를 가지므로, 전환 시점을 직접 고를 수 있습니다. 어느 쪽이든 아래 문제들을 확인해야 합니다.
| 문제 | 실패 양상 | 발견 지점 |
|---|---|---|
| reasoning_content가 다시 전송되지 않음 | 명시적으로 | 첫 번째 도구 호출 후 400 오류 |
| 같은 이름 아래 모델이 바뀜 | 조용히 | 출력 길이, 형식, 평가 점수 |
| 피크 시간대 가격 | 조용히 | 평일 피크 시간대에 비용이 두 배로 증가 |
| 기본 effort가 max로 설정됨 | 조용히 | 에이전트 실행 시간이 1.6–1.8배 길어짐 |
| 사고 과정이 max_tokens에 포함됨 | 둘 다 | 잘린 답변 |
| Search 및 Fetch 과금 | 조용히 | 2026년 10월 31일 16:00 UTC부터 |
AIHubMix는 2026년 10월 19일(03:02 UTC)에 deepseek-v4.1-flash-1017에 대해 짧은 테스트 요청 세트를 실행했습니다. 해당 실행 결과는 아래에서 별도로 표시합니다.
1. 도구 루프를 깨뜨리는 400 오류
나타나는 현상. 도구 호출 뒤 두 번째 요청이 HTTP 400과 함께 아래 메시지로 실패합니다. 이는 10월 15일 V4.1 Flash 관련으로 opencodex에 제기된 GitHub 이슈에서 보고된 내용입니다.
[invalid_request_error] The `reasoning_content` in the thinking mode must be passed back to the API.
같은 문구가 V4 Pro와 V4 Flash에 대해 opencode, LangChain, claude-code-router에 제기된 이전 보고에도 나타납니다.
원인. DeepSeek의 사고 모드 가이드에 따르면, 요청에 tools가 포함되면 이전의 모든 assistant 턴의 reasoning_content를 "모델이 도구 호출을 하지 않은 턴이라도" 반드시 다시 보내야 합니다. 보내지 않으면 "API가 400 오류를 반환합니다." 도구가 없으면 다시 보내는 것은 선택 사항이며 무시됩니다. 클라이언트는 메시지 직렬화기가 content와 tool_calls는 유지하면서 추가 필드를 버리기 때문에 보통 이 문제에 걸립니다.
문제를 일으키는 요청. assistant 메시지에서 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}"}
]
}'
DeepSeek 자체 API에서는 이 형태가 공개 보고에 나온 400 오류를 반환합니다. AIHubMix를 통하면 같은 형태의 요청이 10월 19일 테스트 실행에서 HTTP 200과 정상 답변을 반환했습니다. 이는 한 번의 실행 결과이므로 보장으로 여기지 마십시오.
해결 방법. 어떤 경로를 사용하든 필드를 유지하십시오.
msg = resp.choices[0].message
messages.append(msg) # carries content, reasoning_content, and tool_calls over
- 자체 코드에서는 직접 만든 복사본이 아니라 assistant 메시지 전체를 추가하십시오.
- 프레임워크에서는 업그레이드하십시오. opencode는 이후 릴리스에서 왕복 전달 문제를 수정했고, opencodex는 10월 16일에 수정 사항을 병합했습니다.
- 최후의 수단으로, 도구 루프에
{"thinking": {"type": "disabled"}}를 설정할 수 있습니다. 이렇게 하면 오류는 피하지만 에이전트 작업에서 모델을 강하게 만드는 추론 기능을 포기하게 됩니다.
2. 같은 이름, 다른 모델
DeepSeek의 10월 17일자 변경 로그는 이를 분명히 밝히고 있습니다. "API 호출 방식과 가격은 그대로 유지되며, 최신 모델에 접근하려면 deepseek-flash를 사용하기만 하면 됩니다." 9월 체크포인트에 고정된 이름은 없으며, 기존 Flash 이름 두 개도 이제 1017에서 실행됩니다.
오류는 발생하지 않지만 세 가지가 바뀔 수 있습니다.
- 출력 길이. 1017은 더 짧은 출력을 생성하도록 학습되었습니다. 9월 모델의 긴 설명을 기대하던 파서, UI 레이아웃, 프롬프트는 이전보다 적은 텍스트를 받을 수 있습니다.
- 평가 기준선. 9월 체크포인트에서 기록한 점수와 비용은 이제
deepseek-flash가 반환하는 결과를 설명하지 못합니다. - 동작. DeepSeek은 1017을 엔드투엔드 프로젝트 작업에 맞게 재학습했습니다. 에이전트는 같은 결과에 도달하더라도 다른 경로를 택할 수 있습니다.
해야 할 일. 모든 평가 실행에 모델과 날짜를 기록하고, 지금 회귀 테스트 세트를 다시 실행하십시오. 응답은 어떤 체크포인트가 답했는지 알려 줍니다. 10월 19일 테스트에서 AIHubMix를 통한 모든 응답에는 "model": "deepseek-v4-1-flash-261017"가 포함되어 있었습니다. 이 필드를 기록해 두면 공지 없는 교체도 발생한 날 바로 드러납니다.
3. 놓치기 쉬운 과금 규칙
피크와 비피크. DeepSeek은 평일 UTC 기준 01:00–04:00과 06:00–10:00에는 정가를 청구하고, 그 밖의 모든 시간, 주말 내내, 중국 공휴일에는 반값을 청구합니다. AIHubMix도 같은 시간대를 따르며, 각 요청은 제출 시점의 가격이 적용됩니다. 따라서 비피크 시간에 시작된 긴 스트리밍 요청은 비피크 가격을 유지합니다.
| 항목 | 피크 | 비피크 |
|---|---|---|
| 입력, 캐시 미스 | $0.3098 | $0.155 |
| 입력, 캐시 히트 | $0.0062 | $0.0031 |
| 출력 | $1.2392 | $0.62 |
deepseek-v4.1-flash-1017의 AIHubMix 목록 가격(100만 토큰당)입니다. 기간 한정으로 30% 할인이 추가로 적용되고 있습니다.
캐시 히트는 미스보다 50배 저렴합니다. 에이전트는 매 호출마다 같은 시스템 프롬프트, 도구 정의, 기록을 다시 보냅니다. 이 접두사를 안정적으로 유지하고, 호출마다 바뀌는 내용은 끝에 두면 요청의 대부분이 캐시 히트 가격으로 청구됩니다.
사고 과정은 출력으로 청구됩니다. 사고 과정은 기본적으로 켜져 있으며, 추론 토큰은 청구 금액과 max_tokens 모두에 포함됩니다.
Search 및 Fetch. DeepSeek은 10월 17일 새 Search 및 Fetch API를 열었으며, 각각 성공한 호출 1,000회당 $0.75입니다. DeepSeek API에서 DeepSeek Harness, Claude Code, 또는 Codex를 통해 이루어진 서버 측 호출은 2026년 10월 31일 16:00 UTC까지 무료입니다. 그 이후에는 매 턴 검색하는 에이전트가 토큰 비용에 호출당 비용을 더하게 됩니다.
합산 결과. 명시된 가정(호출 40회, 입력 토큰 120만 개 중 캐시 히트 90%, 출력 토큰 6만 개) 하에서, 에이전트 세션 하나의 비용은 AIHubMix 목록 가격 기준으로 피크 시간대 $0.118, 비피크 시간대 $0.059입니다. 배치 작업을 비피크 시간대로 옮기는 것이 가장 큰 단일 절감 방법입니다.
4. 비용만 늘리고 효과는 없는 설정
Effort. API는 low, high(기본값), max를 제공합니다. DeepSeek의 V4.1 Flash 논문은 이를 내부 effort 값 50, 75, 100에 매핑하며, max로 올리는 단계가 "에이전트 궤적을 1.6–1.8배 길게 만들면서 개선은 미미하다"고 보고합니다. DeepSeek 자체의 Claude Code 설정 가이드도 여전히 CLAUDE_CODE_EFFORT_LEVEL=max로 설정합니다. 일상적인 에이전트 작업에는 high가 더 나은 기본값입니다.
DeepSeek은 다른 effort 이름도 세 가지 수준에 매핑합니다. minimal은 low가 되고, medium과 xhigh는 모두 high가 됩니다. 다섯 가지 수준을 제공하는 도구도 실제로는 두세 가지만 얻게 됩니다. 10월 19일 테스트에서 AIHubMix는 Chat Completions에서 low, high, max를 모두 허용했습니다.
max_tokens. 모델 카드는 사고 과정이 출력 예산을 공유하므로 긴 에이전트 실행에는 최소 256K를 권장합니다. 상한이 작으면 어려운 단계에서 예산 전체를 사고 과정에 쓰고 끝날 수 있습니다. finish_reason: "length"가 있는지 확인하십시오.
샘플링 파라미터. 사고 모드에서 temperature, presence_penalty, frequency_penalty는 오류 없이 받아들여지지만 아무 효과가 없습니다. top_p는 0.95–1.0 범위로 고정됩니다. 파이프라인이 결정적 출력을 위해 낮은 temperature에 의존했다면, 이제 그 효과를 얻지 못합니다.
5. 실제 권한을 가진 에이전트
1017은 프로젝트 전체에 대한 강화학습으로 훈련되었기 때문에, 작업이 끝난 것처럼 보일 때까지 계속 작업하는 경향이 있습니다. 또한 답변이 짧아서 무엇을 바꿨는지에 대한 설명도 줄어듭니다. 다음 두 가지 습관이 도움이 됩니다.
- 모델이 요약한 내용이 아니라 diff와 명령 로그를 검토하십시오.
- 명령 허용 목록이 있는 샌드박스에서 실행하고, 파괴적인 작업(삭제, 강제 push, 마이그레이션, 외부 네트워크 호출)은 승인을 받도록 하십시오.
DeepSeek 자체도 Flash 계열의 보안 작업 강점을 언급하고 있으며, 9월 체크포인트는 DeepSeek 자체 표에서 CyberGym 88.1점을 기록했습니다. 이는 방어적 작업에 유용하며, 권한을 엄격하게 제한해야 할 또 다른 이유이기도 합니다.
6. 코딩 도구
AIHubMix는 코딩 도구에 필요한 세 가지 프로토콜 모두에서 deepseek-v4.1-flash-1017을 제공합니다. 10월 19일 테스트에서 Chat Completions, Anthropic Messages(두 턴 도구 호출 포함), Responses API가 모두 200을 반환했습니다.
Claude Code(Anthropic Messages). Claude Code 가이드에 따라 AIHubMix를 가리키도록 설정하고 모델을 지정하십시오.
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"
- 사고 과정: 테스트에서 effort 설정 없이 보낸 Messages 요청은 thinking 블록 없이 반환되었지만,
output_config.effort를 포함한 요청은 thinking을 반환했습니다. 1017이 추론하도록 effort 수준을 계속 설정하고 요청 로그를 확인하십시오. - 컨텍스트: DeepSeek 가이드는 자체 엔드포인트용으로 모델 이름에
[1m]접미사를 추가합니다. 이 접미사는 AIHubMix를 통해 테스트하지 않았습니다. - 알려진 문제: 일부 라우터를 거치면 Claude Code가 thinking 내용을 누락하고 위의 400 오류가 발생하기도 했습니다(claude-code-router 이슈 1378). AIHubMix의 Messages 엔드포인트를 통한 두 턴 도구 테스트에서는 이 문제가 나타나지 않았습니다.
Codex(Responses API). Codex CLI 가이드를 따르십시오. aihubmix 제공자를 base_url = "https://aihubmix.com/v1"와 wire_api = "responses"로 설정하고, model = "deepseek-v4.1-flash-1017"을 지정합니다. /model에서 선택할 수 있도록 model_catalog_json 파일에 추가하고, context_window를 1,000,000으로 설정하십시오.
- Effort: 가이드의 카탈로그 스크립트는
low,medium,high를 제공합니다. DeepSeek의 매핑에 따르면medium과high는 모두 DeepSeek의high로 매핑되므로, 실제로는 두 가지 수준만 얻게 됩니다. - 알려진 문제: 최신 Codex 버전은 필수 필드 하나라도 없으면 카탈로그 전체를 버립니다. 가이드의 스크립트는 이를 방지합니다.
DeepSeek Harness(Chat Completions). DeepSeek은 1017이 Harness 0.2.1-rc.1 이상에서 가장 잘 동작한다고 밝혔습니다. DeepSeek Harness 가이드에 따라 AIHubMix를 OpenAI 호환 제공자로 추가하고, deepseek-v4.1-flash-1017을 모델로 추가하십시오. 해당 가이드는 이전 Harness 릴리스를 기준으로 작성되었으므로, UI가 바뀌었다면 필드 이름을 확인하십시오.
15분짜리 스모크 테스트. 실패하는 테스트가 하나 있는 작은 저장소를 만드십시오.
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
해당 폴더에서 도구를 실행하고 "pytest를 실행하고, stats.py만 수정해서 실패하는 테스트를 고친 뒤, pytest를 다시 실행해 줘."라고 요청하십시오. 다음 조건을 만족하면 통과입니다.
- 에이전트가 400 오류 없이 최소 두 번의 도구 호출(테스트 실행, 파일 수정)을 수행한다.
- 마지막에 두 테스트가 모두 통과한다.
- AIHubMix 요청 로그에
deepseek-v4.1-flash-1017이(가) 표시되며, 세션 비용은 많아야 몇 센트입니다.
마이그레이션 체크리스트
- 모델 ID를 결정하세요: AIHubMix에서는 deepseek-v4.1-flash-1017입니다.
- 도구 루프에서는 매 턴마다 reasoning_content가 다시 전달되도록 assistant 메시지 전체를 추가하세요.
- 회귀 테스트와 평가 세트를 다시 실행하고, 모델, 날짜, 응답의 response model 필드를 기록하세요.
- 출력이 짧아진 점을 고려해 파서와 UI를 확인하세요.
- effort는 기본값으로 high를 설정하고, max는 가장 어려운 작업에만 사용하세요.
- 에이전트 턴의 max_tokens를 늘리고, finish_reason이 length인 경우 알림이 가도록 설정하세요.
- thinking 모드에서는 temperature 기반 결정성에 대한 가정을 제거하세요.
- 배치 작업과 야간 에이전트 실행은 피크 시간대를 피해 예약하세요.
- 캐시 적중을 위해 프롬프트 접두사를 일관되게 유지하세요.
- DeepSeek의 서버 측 도구를 사용한다면 10월 31일부터 Search 및 Fetch 호출 예산을 계획하세요.
- 에이전트는 실제 권한이 있는 샌드박스에서 실행하고, 요약이 아닌 diff를 검토하세요.
- 사용하는 각 코딩 도구에서 15분짜리 스모크 테스트를 실행하세요.
자주 묻는 질문
DeepSeek V4.1 Flash 1017을 사용하려면 코드를 변경해야 하나요?
DeepSeek API에서는 필요 없습니다. deepseek-flash가 이미 1017을 가리키기 때문입니다. AIHubMix에서는 모델 이름을 deepseek-v4.1-flash-1017로 바꾸세요.
reasoning_content 관련 400 오류는 왜 발생하나요?
요청에 도구가 포함된 경우 DeepSeek은 이전의 모든 assistant 턴의 reasoning_content를 다시 보내도록 요구합니다. 이 필드를 빼고 보내는 클라이언트는 첫 번째 도구 호출 이후의 호출에서 실패합니다.
AIHubMix를 통해서도 reasoning_content 400 오류가 발생하나요?
AIHubMix의 2026년 10월 19일 테스트에서는 발생하지 않았습니다. reasoning_content 없이 보낸 턴이 200을 반환했습니다. 그래도 DeepSeek이 문서화한 규칙이므로 이 필드는 계속 보내세요.
DeepSeek API에서 9월 버전의 V4.1 Flash를 여전히 사용할 수 있나요?
아니요. DeepSeek은 deepseek-flash와 이전 Flash 이름들을 1017로 옮겼으며, 9월 체크포인트를 고정할 수 있는 이름은 제공하지 않습니다.
DeepSeek V4.1 Flash는 언제 더 저렴한가요?
평일 UTC 기준 01:00~04:00, 06:00~10:00을 제외한 시간에 적용됩니다. 그 밖의 모든 시간, 주말, 중국 공휴일에는 요금이 절반입니다.
코딩 에이전트에는 어떤 effort 수준을 사용해야 하나요?
기본값인 high를 사용하세요. DeepSeek의 논문에 따르면 max는 에이전트 실행 시간을 1.6~1.8배 늘리지만 성능 향상은 작습니다.
AIHubMix를 통해 Claude Code와 Codex에서도 1017을 사용할 수 있나요?
네. AIHubMix는 해당 도구들이 사용하는 Anthropic Messages 및 Responses 프로토콜로 1017을 제공하며, 두 프로토콜 모두 2026년 10월 19일 기본 테스트를 통과했습니다.
계속 읽기: DeepSeek V4.1 Flash 1017 시리즈
- 이 전환이 아직 가치가 있을지 확신이 서지 않나요? 업그레이드 포스트에서는 1017이 9월 체크포인트 대비 무엇을 개선했는지와 세션당 비용을 보여줍니다: DeepSeek V4.1 Flash 1017: 같은 가격, 더 짧은 출력. 전환할 가치가 있을까?
- 그래도 Claude Code를 설정하시나요? Claude Code가 자체 서브에이전트에 사용하는 모델과 1017을 비교해 보세요: DeepSeek V4.1 Flash 1017 vs Claude Haiku 5.5: 터미널 코딩 에이전트에 어떤 저렴한 모델이 적합할까?
- 오래된 Flash가 아니라 V4 Pro에서 마이그레이션하시나요? 이 포스트에서는 Pro가 아직 필요한지 확인합니다: DeepSeek V4.1 Flash 1017 vs V4 Pro: 이제 Flash로 충분할까?
출처
- Thinking Mode (DeepSeek)
- Change Log (DeepSeek)
- Integrate with AI Tools (DeepSeek)
- AIHubMix의 DeepSeek V4.1 Flash 1017 (AIHubMix)
- DeepSeek V4.1 Flash, 도구 호출 후 reasoning_content 400 반환, 이슈 7118 (GitHub)



