DeepSeek Thinking Mode 가이드: reasoning effort와 라우팅

Answer in brief

deepseek에서는 thinking으로 thinking mode를 제어하고, reasoning_effort로 reasoning effort를 지정하며, stream으로 스트리밍을 선택하고, max_tokens로 생성 출력 상한을 설정합니다. 현재 공식 문서에 명시된 model ID를 근거 표에서 확인하고 배포 전에 다시 검증합니다. 공식 문서를 기준으로 하며, 검증일은 2026-08-22입니다.

Key facts at a glance

Product / model Current ID or version Use case Evidence
deepseek Official source does not specify a selectable model ID Confirm the current product surface Official source

Failure modes and verification

Failure mode Verification action
Stale model or version reference Compare the model name and ID with the official source before release.
Unstructured or incomplete output Validate the response against the documented contract and a deterministic fixture.
Unverified factual claim Keep the claim qualified or remove the claim when the official source does not support it.

FAQ

thinkingreasoning_effort는 어떻게 다른가요?

thinking.type은 thinking 또는 non-thinking 동작을 선택하고, reasoning_effort는 thinking mode가 활성화된 경우 요청할 reasoning 강도를 지정합니다. 자세한 내용은 Thinking Mode 가이드를 확인하십시오.

스트리밍 thinking 출력을 클라이언트에서 어떻게 처리해야 하나요?

streamtrue로 설정하고 delta.reasoning_contentdelta.content를 별도로 누적한 뒤 data: [DONE]을 처리합니다. 마지막 usage chunk가 필요하면 stream_optionsinclude_usage를 사용하십시오. 자세한 내용은 Chat Completions API를 확인하십시오.

max_tokens는 무엇을 제한하며 사용량은 어떻게 측정하나요?

max_tokens는 생성 completion token을 제한합니다. 응답의 usage에서 prompt_tokens, completion_tokens, total_tokens, 반환되는 경우 completion_tokens_details.reasoning_tokens를 확인하십시오. 정확한 context length 숫자는 이 항목에서 공식 소스가 명시하지 않습니다. Token & Token Usage를 참고하십시오.

선택 가능한 model ID가 게시되지 않은 경우 routing은 어떻게 처리하나요?

현재 공식 문서에 명시된 model ID를 근거 표에서 확인하고 배포 전에 다시 검증합니다. 문서화된 API 표면과 endpoint를 선택하고 model 값을 임의로 만들지 마십시오. 문서화되지 않은 fallback이나 내부 routing 동작은 미지정으로 처리해야 합니다. 공식 문서를 기준으로 하십시오.

tool-call turn에서 무엇을 보존해야 하나요?

Thinking-mode turn에서 tool call이 발생하면 해당 상호작용의 이후 모든 요청에 생성된 reasoning_content를 되돌려 보내고, 관련 assistant message field도 함께 보존해야 합니다. 자세한 내용은 Thinking Mode 가이드를 확인하십시오.

Sources and freshness

Extended guide

직접 답변

제품 deepseek에서는 thinking으로 thinking mode를 켜거나 끄고, reasoning_effort로 reasoning 강도를 요청하며, stream으로 스트리밍 전달을 선택하고, max_tokens로 생성 completion token의 상한을 지정합니다. 현재 공식 문서에 명시된 model ID를 근거 표에서 확인하고 배포 전에 다시 검증합니다. 이 문서의 기준 문구는 다음과 같습니다: “The current official documentation lists model IDs; use only the IDs in the evidence table for this product.” 그러므로 routing은 임의의 모델명을 고르는 기능으로 해석하지 말고, 문서화된 endpoint와 API 형식을 선택하는 작업으로 다룹니다. 기준 링크는 DeepSeek 공식 문서, Thinking Mode 가이드, Chat Completions API, Token & Token Usage, Anthropic API입니다. 검증일은 2026-08-22입니다.

제어 항목 표

관심사 공식 control 또는 field 실무 의미
모드 thinking.typeenabled 또는 disabled thinking과 non-thinking 동작을 전환합니다. Thinking Mode 가이드는 기본값을 enabled로 설명합니다.
강도 reasoning_effort OpenAI 형식에서는 low, high, max를 요청합니다. 가이드의 기본 effort는 high입니다.
전달 stream true이면 partial message delta를 data-only SSE로 받고, 스트림은 data: [DONE]으로 끝납니다.
예산 max_tokens 생성 completion token의 최대치를 정합니다. 입력 token과 생성 token의 합은 context length 제한을 받습니다. 정확한 숫자 범위와 기본값은 이 항목의 reference data에 없으므로 공식 소스는 이 항목에서 이를 명시하지 않습니다.
사용량 usage, completion_tokens_details.reasoning_tokens prompt_tokens, completion_tokens, total_tokens, reasoning token 정보를 확인합니다.
라우팅 base_url, 요청 형식, 응답 metadata 내부 routing 알고리즘, fallback 정책, 선택 가능한 model ID는 이 항목에서 공식 소스가 명시하지 않습니다.

실행 단계

  1. API 형식을 먼저 고릅니다. OpenAI 호환 호출은 https://api.deepseek.com을 사용하고, Anthropic 호환 호출은 https://api.deepseek.com/anthropic을 사용합니다. 선택한 형식에 맞춰 messages, thinking, reasoning_effort, max_tokens, stream의 위치와 이름을 유지합니다. Anthropic 형식에서는 output_config.effort를 사용하며, 공식 호환성 문서thinking.budget_tokens가 무시된다고 설명합니다. 따라서 budget_tokens를 DeepSeek의 실제 token budget으로 간주하지 않습니다.

  2. 모드를 명시합니다. OpenAI SDK에서 thinkingextra_body 안에 전달하고, reasoning_effort는 요청 field로 전달합니다. Thinking mode가 필요한 요청에는 typeenabled로, 최종 답변만 필요한 요청에는 typedisabled로 사용합니다. reasoning_effort를 높인다고 max_tokens가 자동으로 늘어난다고 가정하지 마십시오. 두 field는 서로 다른 제어입니다. Thinking mode에서는 temperature, top_p, presence_penalty, frequency_penalty가 지원되지 않으며, 호환성을 위해 보내도 효과가 없다고 공식 가이드가 설명합니다.

  3. 스트리밍 소비기를 분리합니다. stream: true이면 각 chunk의 delta.reasoning_contentdelta.content를 별도로 누적합니다. 전자는 thinking 단계의 reasoning이고 후자는 최종 답변입니다. 전체 사용량이 필요하면 stream_optionsstream: true와 함께 사용하고 include_usage를 켭니다. 그러면 data: [DONE] 직전에 전체 요청의 usage를 담은 추가 chunk가 오며, 그 chunk의 choices는 빈 배열입니다. 다른 chunk의 usage는 null일 수 있습니다.

  4. token budget과 실제 사용량을 함께 확인합니다. max_tokens는 생성 completion token의 ceiling일 뿐, 입력 길이를 늘리는 설정이 아닙니다. 입력과 출력이 context length 안에 들어가는지 확인하고, 응답의 usage를 기록합니다. completion_tokens_details.reasoning_tokens가 반환되면 reasoning에 사용된 token을 별도로 관찰할 수 있습니다. Token & Token Usage 가이드는 실제 token 수가 tokenizer에 따라 달라질 수 있다고 설명하므로 문자 수만으로 청구량이나 한도를 확정하지 마십시오. 이 문서가 제공하지 않는 정확한 context length, 가격, rate limit 숫자는 공식 소스가 이 항목에서 명시하지 않는 값으로 남겨 둡니다.

  5. multi-turn과 tool call의 상태를 보존합니다. Tool call이 없는 thinking turn에서는 이전 reasoning_content를 다음 context에 다시 붙이지 않아도 됩니다. Tool call이 발생한 turn에서는 생성된 reasoning_content를 해당 상호작용의 이후 모든 요청에 완전히 되돌려 보내야 합니다. 누락 여부를 검증하지 않으면 공식 API가 요청을 거부할 수 있으므로, assistant message에 content, reasoning_content, tool_calls를 올바르게 보존합니다.

점검 체크리스트

  • thinking.typereasoning_effort가 의도한 동작과 일치합니다.
  • stream_optionsstream: true일 때만 보냅니다.
  • reasoning_contentcontent를 별도 버퍼로 처리합니다.
  • 필요할 때 include_usage의 마지막 usage chunk를 수집합니다.
  • finish_reasonusage를 확인한 뒤 성공으로 기록합니다.
  • routing 가정은 문서화된 endpoint와 반환 metadata를 넘지 않습니다.
  • 선택 가능한 model ID를 임의로 저장하거나 설정하지 않습니다.

변경 관리에서는 검증일을 기록하고, 공식 문서를 다시 확인하기 전까지 내부 routing 규칙, context 제한, 기본값, model ID를 추측하지 마십시오.

최신 근거 보충

아래 모델·기능 기록은 연결된 공식 출처에서 다시 확인한 값입니다. 제공 범위가 바뀌면 이 표와 검증 날짜를 함께 갱신하세요.

제품·모델 현재 ID 또는 버전 용도·주의점 근거
DeepSeek DeepSeek V4 Flash deepseek-v4-flash general-purpose chat and lower-latency workloads Official source
DeepSeek DeepSeek V4 Pro deepseek-v4-pro reasoning and higher-capability workloads Official source
DeepSeek DeepSeek V4 Flash Vision Experimental deepseek-v4-flash-vision-exp experimental image-input workloads Official source

출처

근거와 최신성

근거 수준: 공식 문서 검증

AI-assisted editorial content; verify current product details against the linked official sources.

마지막 검증:

주요 출처

검증된 모델 기록

다른 도구 둘러보기

Mistral API 가이드: Agents·Conversations와 상태 기반 handoff가이드Claude API 가이드: 멀티도구 워크플로우의 프로그래밍 방식 도구 호출가이드Groq Batch API 가이드: 비동기 JSONL 작업과 결과 회수가이드GitHub Copilot 가이드: 커스텀 에이전트와 서브에이전트 오케스트레이션가이드Gemini API 가이드: URL 컨텍스트와 검색 그라운딩가이드OpenAI Responses API 가이드: 백그라운드 실행과 컨텍스트 관리가이드GitHub Copilot 가이드: 권한·감사·복구를 위한 Hooks가이드Claude Agent SDK 가이드: 동적 멀티에이전트 워크플로우가이드Microsoft Agent Framework 가이드: HITL 요청과 checkpoint 재개가이드Claude Code 가이드: 훅 수명주기 자동화와 실행 경계가이드Cloudflare Agents 가이드: 내구성 워크플로우와 사람 승인가이드Timeline Studio 가이드: 브라우저에서 실행하는 로컬 우선 AI 영상 편집가이드NVIDIA NeMo Agent Toolkit 가이드: 평가·profiling과 tracing가이드Amazon Bedrock AgentCore Memory 가이드: 전략·namespace와 검색가이드Gemini API 가이드: File Search 저장소와 RAG 경계가이드Copilot Studio 가이드: 가드레일 기반 자율 에이전트 운영가이드Claude Code 가이드: 플러그인 패키징·테스트와 배포가이드LangGraph 가이드: persistence·checkpoint와 내구성 있는 에이전트 복구가이드Vercel AI SDK 가이드: ToolLoopAgent·루프 제어와 승인가이드OpenAI Agents SDK 가이드: tracing·span과 민감 데이터 제어가이드