씽킹

씽킹 (Thinking)

씽킹(thinking, 또는 reasoning)은 모델이 최종 답변을 내놓기 전에 문제를 단계별로 풀어나가는 과정이에요. 지원되는 공급자들에서 씽킹을 켜는 가장 간단한 방법은 Thinking 캐퍼빌리티를 쓰는 것입니다. 공급자의 네이티브 씽킹 제어에 직접 접근해야 하는 고급 사용에는 공급자별 설정이 제공됩니다.

출처: 문서

본문

통합 씽킹 설정 (Unified thinking settings)

Thinking 캐퍼빌리티로 씽킹을 켭니다:

from pydantic_ai import Agent
from pydantic_ai.capabilities import Thinking

agent = Agent('anthropic:claude-opus-4-7', capabilities=[Thinking(effort='high')])

ModelSettings의 기저 thinking 필드를 직접 설정할 수도 있어요:

from pydantic_ai import Agent

agent = Agent('anthropic:claude-opus-4-7', model_settings={'thinking': 'high'})

Thinking.effort 값은 다음을 받습니다:

  • True — 공급자의 기본 노력 수준으로 씽킹 활성화
  • False — 씽킹 비활성화 (항상 켜진 모델에서는 조용히 무시)
  • 'minimal' / 'low' / 'medium' / 'high' / 'xhigh' — 특정 노력 수준으로 씽킹 활성화 (지원되지 않는 수준은 가장 가까운 사용 가능 값에 매핑)

이것들은 기저 thinking 모델 설정이 받는 것과 같은 값이에요. 생략하면 모델이 기본 동작을 사용합니다. 둘 다 설정되면 공급자별 설정(아래 섹션에 문서화)이 우선합니다.

공급자 번역 (Provider translation)

Thinking 캐퍼빌리티는 각 노력 값을 선택된 공급자의 네이티브 형식에 매핑합니다:

공급자 Thinking() / Thinking(effort=True) Thinking(effort='high') 참고
Anthropic (Opus 4.6+) anthropic_thinking={'type': 'adaptive'} {type: 'adaptive'} + effort='high' Claude Opus 4.7, 4.8, 5, 5.5, Sonnet 5는 effort='xhigh'도 지원
Anthropic (이전) anthropic_thinking={'type': 'enabled', 'budget_tokens': 10000} budget_tokens=16384 예산 기반; 'low' → 2048 토큰
OpenAI reasoning_effort='medium' reasoning_effort='high' GPT-5.6은 통합 'minimal''low'에 매핑
Google (Gemini 3+) include_thoughts=True thinking_level='HIGH' 통합 노력은 가장 가까운 문서화 수준으로 스냅 — 예: gemini-3.1-flash-lite-image(수준: minimal, high)는 'low''MINIMAL'로, 'medium'/'xhigh''HIGH'로 매핑 — minimal이 없는 모델은 통합 'minimal''LOW'로 매핑
Google (Gemini 2.5) include_thoughts=True thinking_budget=24576
Groq reasoning_format='parsed' (gpt-oss는 reasoning_effort='medium'도) reasoning_format='parsed' (gpt-oss는 reasoning_effort='high'도) gpt-oss: 통합 노력 → reasoning_effort (low/medium/high, extra_body로; 항상 켜짐이라 thinking=False는 조용히 무시); qwen3: thinking=Falsereasoning_effort='none' (진짜 비활성화, extra_body로); 다른 reasoning 모델 → 'hidden' (출력만 억제)
Mistral reasoning_effort='high' reasoning_effort='high' 조정 가능 reasoning 모델(예: mistral-small-latest, mistral-medium-3-5)에서만; magistral은 항상 켜져 reasoning하며 reasoning_effort를 받지 않음. Mistral은 'high'/'none'만 노출하므로 모든 활성 수준('minimal' 포함) → 'high', thinking=False만 → 'none'
OpenRouter reasoning={'effort': 'medium', 'enabled': True} reasoning={'effort': 'high', 'enabled': True} thinking=Falseeffort='none'; 항상 켜진 라우트는 조용히 무시; extra_body
Cerebras reasoning_effort 생략 (기본으로 reasoning) reasoning_effort 생략 thinking=Falsereasoning_effort='none'; gpt-oss는 항상 켜져 reasoning하여 thinking=False 조용히 무시
Snowflake Cortex reasoning={'effort': 'medium'} reasoning={'effort': 'high'} Claude 모델만 (extra_body로); 자동으로 temperature=1 설정; 다른 패밀리는 thinking 무시
Crusoe reasoning_effort='medium' reasoning_effort='high' OpenAIChatModel에서 상속; 벤더 접두사 모델 프로파일(zai/, deepseek-ai/, ...)을 따름. thinking=False → 프로파일이 받는 곳에서만 'none'
GitHub Copilot reasoning_effort='medium' reasoning_effort='high' 클라이언트 측 게이트 없이 OpenAIChatModel에서 상속: 모든 값이 전달되고 Copilot이 자신의 id별 목록을 시행하므로, id가 제공하지 않는 수준은 400 invalid_reasoning_effort로 돌아옴. thinking=False'none'인데 claude-·gemini- id가 거부. 그 두 패밀리는 reasoning_text에서 reasoning을 반환해 ThinkingPart에 매핑; gpt-5.4kimi-k3는 reasoning하지만 reasoning 텍스트를 반환하지 않음
Ollama reasoning_effort='medium' reasoning_effort='high' OpenAIChatModel에서 상속해 해석된 모델 프로파일을 따름: deepseek-r1는 reasoning, Ollama의 gpt-oss는 아무것도 보내지 않음. thinking=False → 받아들이는 프로파일에서만 'none'
Z.AI thinking={'type': 'enabled'} thinking={'type': 'enabled'} + GLM-5.2·GLM-5.3의 reasoning_effort='high' extra_body로; thinking=Falsetype='disabled'. GLM-5.3은 항상 reasoning하며 thinking=False를 무시(type='disabled'로 보내지 않고 버림)하고 low/high/max만 받으며(거기서 씽킹 비활성화 시 오류 메시지와 Z.AI 문서에 따름), 다른 통합 수준을 가장 가까운 것으로 매핑
xAI Grok 4.3의 reasoning_effort 생략 (기본 사용) reasoning_effort='high' Grok 4.3은 'none', 'low', 'medium', 'high'를 지원하고 thinking=True는 파라미터를 생략해 모델이 자체 기본 적용; Grok 3 Mini는 'low''high'만 지원(thinking=True'high')하고 thinking=False 조용히 무시; Grok 4.5는 'low', 'medium', 'high'를 지원하지만 'none'은 안 되므로 항상 켜져 reasoning(thinking=True'medium')하고 thinking=False 조용히 무시
Bedrock (Claude 4.6+) thinking.type='adaptive' {type: 'adaptive'} + output_config.effort='high' 노력은 AWS 문서상 형제 output_config 필드에; xhigh는 지원하는 프로파일의 모델(직접 Anthropic API와 같은 것, 예: Opus 4.7+·Sonnet 5)에서 통과하고 나머지(Opus 4.6·Sonnet 4.6는 xhigh 거부)에서는 max로 매핑
Bedrock (Claude 이전) thinking.type='enabled' budget_tokens=16384 예산 기반
Bedrock (OpenAI GPT-OSS) reasoning_effort='medium' reasoning_effort='high' Converse는 'none' 거부; thinking=False 조용히 무시
Bedrock (OpenAI GPT-5.6) 매핑 없음 매핑 없음 Converse에 검증된 통합 씽킹 매핑 없음
Bedrock (Qwen) reasoning_config='high' reasoning_config='high' 'low''high'만; thinking=False 조용히 무시
Bedrock Mantle reasoning={'effort': 'medium'} reasoning={'effort': 'high'} Responses API에서 서빙되므로 노력이 reasoning 객체에 실림; thinking=Falseeffort='none'

OpenAI

OpenAIChatModel을 쓸 때, thinking 태그 안의 텍스트 출력은 ThinkingPart 객체로 변환됩니다. 모델 프로파일thinking_tags 필드로 태그를 커스터마이즈할 수 있어요.

일부 OpenAI 호환 모델 공급자는 태그로 구분되지 않는 네이티브 씽킹 파트를 지원할 수도 있습니다. 대신 API의 별도 커스텀 필드로 보내고 받습니다. 보통 <provider>:<model> 축약으로 모델을 호출하면 Pydantic AI가 처리해요. 그래도 openai_chat_thinking_field로 필드를 구성할 수 있습니다.

공급자가 캐싱이나 인터리브 씽킹을 위해 이 커스텀 필드를 변경 없이 돌려보내기를 권장한다면 openai_chat_send_back_thinking_parts를 쓰세요.

OpenAI Responses

OpenAIResponsesModel은 네이티브 씽킹 파트를 생성할 수 있어요. 모델 설정에서 OpenAIResponsesModelSettings.openai_reasoning_effortOpenAIResponsesModelSettings.openai_reasoning_summary를 설정해 네이티브 씽킹 파트를 활성화하세요. 지원하는 모델은 추가로 pro reasoning 모드를 쓸 수 있는데, 그것은 노력과 독립적이며 통합 thinking 설정이 절대 설정하지 않아요.

기본적으로 메시지 히스토리의 reasoning·text·function call 파트의 고유 ID가 모델에 보내집니다. 보내는 메시지 히스토리가 이전 응답에서 Responses API로 받은 것과 정확히 일치하지 않으면(예: history processor를 쓸 때) "Item 'rs_123' of type 'reasoning' was provided without its required following item." 같은 오류가 날 수 있어요. 이것을 끄려면 OpenAIResponsesModelSettings.openai_send_reasoning_ids 모델 설정을 비활성화하세요.

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings

model = OpenAIResponsesModel('gpt-5.6-sol')
settings = OpenAIResponsesModelSettings(
    openai_reasoning_effort='low',
    openai_reasoning_summary='detailed',
)
agent = Agent(model, model_settings=settings)
...

요약 없는 원시 reasoning

일부 OpenAI 호환 API(LM Studio, vLLM, 또는 gpt-oss 모델을 쓰는 OpenRouter 같은)는 reasoning 요약 없이 원시 reasoning 콘텐츠를 반환할 수 있어요. 이 경우 ThinkingPart.content는 비어 있지만, 원시 reasoning은 provider_details['raw_content']에서 볼 수 있습니다. OpenAI의 지침에 따라 원시 reasoning은 사용자에게 직접 보여주면 안 되므로, 우리는 그것을 주 content 필드가 아니라 provider_details에 저장해요.

Anthropic

씽킹을 켜려면 AnthropicModelSettings.anthropic_thinking 모델 설정을 사용하세요.

참고

확장 씽킹(budget_tokens가 있는 type: 'enabled')은 claude-opus-4-6에서 더 이상 사용되지 않고, claude-opus-4-7, claude-opus-4-8, claude-opus-5, claude-opus-5-5, claude-sonnet-5에서는 제거되었습니다. 그 모델들에는 적응형 씽킹을 쓰세요.

from pydantic_ai import Agent
from pydantic_ai.models.anthropic import AnthropicModel, AnthropicModelSettings

model = AnthropicModel('claude-sonnet-4-5')
settings = AnthropicModelSettings(
    anthropic_thinking={'type': 'enabled', 'budget_tokens': 1024},
)
agent = Agent(model, model_settings=settings)
...

Anthropic은 사용한 씽킹 토큰을 RunUsage.detailsthinking_tokens 키로 보고합니다. 그것들은 output_tokens 안에서 청구되므로 출력 총계에 더해지는 것이 아니라 그 안에서 읽을 수 있는 부분집합이고, 응답이 씽킹 토큰을 사용하지 않으면 키가 아예 생략됩니다.

인터리브 씽킹 (Interleaved Thinking)

인터리브 씽킹을 켜려면 모델 설정에 베타 헤더를 포함해야 해요:

from pydantic_ai import Agent
from pydantic_ai.models.anthropic import AnthropicModel, AnthropicModelSettings

model = AnthropicModel('claude-sonnet-4-5')
settings = AnthropicModelSettings(
    anthropic_thinking={'type': 'enabled', 'budget_tokens': 10000},
    extra_headers={'anthropic-beta': 'interleaved-thinking-2025-05-14'},
)
agent = Agent(model, model_settings=settings)
...

적응형 씽킹과 노력 (Adaptive Thinking & Effort)

claude-opus-4-6부터 Anthropic은 적응형 씽킹을 지원하는데, 모델이 각 요청의 복잡성에 따라 언제·얼마나 생각할지 동적으로 결정해요. 이것은 Opus 4.6에서 더 이상 사용되지 않고 Opus 4.7, 4.8, 5, 5.5, Sonnet 5에서 제거된 확장 씽킹(budget_tokens가 있는 type: 'enabled')을 대체합니다. Claude Opus 4.7, 4.8, 5, 5.5, Sonnet 5는 xhigh 노력 수준도 추가합니다. 적응형 씽킹은 인터리브 씽킹도 자동으로 켭니다.

Claude Opus 5는 씽킹 비활성화 시 노력을 제한합니다

Claude Opus 5는 anthropic_thinking={'type': 'disabled'}로 씽킹이 명시적으로 비활성화된 동안 xhighmax 노력을 거부합니다. high 이하의 노력을 쓰거나, 씽킹을 켜 두세요. Claude Opus 4.8은 그 조합을 받아들이므로, 마이그레이션할 때 씽킹을 비활성화하는 요청을 감사하세요. Pydantic AI는 Anthropic의 400을 표면화하는 대신 요청을 보내기 전에 UserError를 발생시킵니다.

Claude Opus 5.5는 항상 생각합니다

Claude Opus 5.5는 씽킹을 비활성화할 수 없어요. Anthropic은 모든 노력 수준에서 anthropic_thinking={'type': 'disabled'}를 거부합니다. 통합 thinking=False 설정은 thinking 필드를 보내지 않으므로, 모델은 기본 medium 노력으로 적응형으로 생각합니다. 이전에 씽킹을 비활성화했던 곳에서는 대신 anthropic_effort를 낮추세요(예: anthropic_effort='low'). 통합 thinking 설정도 동작하지만, 이 모델에서는 구조화된 output_type을 Tool Output에서 벗어나게 합니다. 참고: Forced tool choice.

from pydantic_ai import Agent
from pydantic_ai.models.anthropic import AnthropicModel, AnthropicModelSettings

model = AnthropicModel('claude-opus-4-8')
settings = AnthropicModelSettings(
    anthropic_thinking={'type': 'adaptive'},
    anthropic_effort='high',
)
agent = Agent(model, model_settings=settings)
...

anthropic_effort 설정은 모델이 응답에 들이는 노력의 정도를 제어합니다(씽킹과 독립적). 자세한 내용은 Anthropic effort 문서를 보세요.

참고

이전 모델들(claude-sonnet-4-5, claude-opus-4-5 등)은 적응형 씽킹을 지원하지 않으며 처럼 {'type': 'enabled', 'budget_tokens': N}이 필요합니다.

씽킹 토큰은 Anthropic의 루프 전역 task 예산에 들어가므로, 적응형 씽킹은 예산이 고갈됨에 따라 자연스럽게 축소됩니다.

Google

고급 사용에는 GoogleModelSettings.google_thinking_config 모델 설정을 사용하세요.

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel, GoogleModelSettings

model = GoogleModel('gemini-3.5-flash')
settings = GoogleModelSettings(google_thinking_config={'include_thoughts': True, 'thinking_level': 'MEDIUM'})
agent = Agent(model, model_settings=settings)
...

자세한 내용은 Google 모델 문서를 보세요.

xAI

xAI reasoning 모델(Grok)은 네이티브 씽킹을 지원합니다. 멀티턴 대화에서 씽킹 콘텐츠를 보존하려면 XaiModelSettings.xai_include_encrypted_content를 켜세요.

from pydantic_ai import Agent
from pydantic_ai.models.xai import XaiModel, XaiModelSettings

model = XaiModel('grok-4.3')
settings = XaiModelSettings(xai_include_encrypted_content=True)
agent = Agent(model, model_settings=settings)
...

Bedrock

Claude Sonnet 4.6+·Opus 4.6+의 경우, Pydantic AI의 통합 thinking 설정이 AWS가 요구하는 적응형 씽킹 형태로 자동 번역됩니다 — ModelSettings.thinking을 설정하면 끝이에요.

이전 Claude 모델이거나 특정 budget_tokens를 고정하고 싶다면, BedrockModelSettings.bedrock_additional_model_requests_fields 모델 설정으로 공급자별 구성을 직접 전달할 수 있어요:

from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel, BedrockModelSettings

model = BedrockConverseModel('us.anthropic.claude-sonnet-4-5-20250929-v1:0')
model_settings = BedrockModelSettings(
    bedrock_additional_model_requests_fields={
        'thinking': {'type': 'enabled', 'budget_tokens': 1024}
    }
)
agent = Agent(model=model, model_settings=model_settings)
from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel, BedrockModelSettings

model = BedrockConverseModel('openai.gpt-oss-120b-1:0')
model_settings = BedrockModelSettings(
    bedrock_additional_model_requests_fields={'reasoning_effort': 'low'}
)
agent = Agent(model=model, model_settings=model_settings)
from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel, BedrockModelSettings

model = BedrockConverseModel('qwen.qwen3-32b-v1:0')
model_settings = BedrockModelSettings(
    bedrock_additional_model_requests_fields={'reasoning_config': 'high'}
)
agent = Agent(model=model, model_settings=model_settings)

DeepSeek 모델의 경우 Reasoning은 항상 활성화됩니다.

from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel

model = BedrockConverseModel('us.deepseek.r1-v1:0')
agent = Agent(model=model)

Groq

Groq는 씽킹 파트를 받는 여러 형식을 지원합니다:

  • "raw": 씽킹 파트가 thinking 태그 안의 텍스트 콘텐츠에 포함되고, 자동으로 ThinkingPart 객체로 변환됩니다.
  • "hidden": 씽킹 파트가 텍스트 콘텐츠에 포함되지 않습니다.
  • "parsed": 씽킹 파트가 응답에 자체 구조화 파트를 가지며, ThinkingPart 객체로 변환됩니다.

통합 ModelSettings.thinking 설정은 공급자들에 걸쳐 동작합니다: reasoning_format='parsed'를 선택해 씽킹 파트를 반환하게 하고, gpt-oss 패밀리에서는 그 노력 수준이 Groq의 reasoning_effort도 구동합니다(minimal/low'low', medium'medium', high/xhigh'high', True'medium').

두 개의 조합 가능한 모델 설정이 더 세밀한 제어를 줍니다: GroqModelSettings.groq_reasoning_format은 씽킹 파트가 어떻게 반환되는지(위 형식들) 선택하고, GroqModelSettings.groq_reasoning_effort(Groq에 reasoning_effort로 전송)는 모델이 얼마나 reasoning하는지 제어하며, 통합 thinking 매핑보다 우선합니다:

from pydantic_ai import Agent
from pydantic_ai.models.groq import GroqModel, GroqModelSettings

model = GroqModel('openai/gpt-oss-120b')
settings = GroqModelSettings(groq_reasoning_format='parsed', groq_reasoning_effort='medium')
agent = Agent(model, model_settings=settings)
...

참고

대부분의 Groq reasoning 모델은 씽킹을 진짜로 비활성화하는 것을 지원하지 않습니다. 통합 설정으로 thinking=False가 설정되면 동작은 패밀리별입니다: qwen3 패밀리는 reasoning_effort='none'으로 reasoning을 진짜 비활성화하고(qwen3에서 명시적 groq_reasoning_effort와 결합하면 비활성화가 이기고 groq_reasoning_effort는 경고와 함께 무시됨), gpt-oss 패밀리는 항상 켜져 reasoning하여 비활성화할 수 없으므로 thinking=False가 조용히 무시되며, 다른 reasoning 모델은 reasoning_format='hidden'을 보내 reasoning 출력을 억제하지만 모델은 내부적으로 여전히 reasoning할 수 있어요.

참고

허용되는 reasoning_effort 값은 패밀리별입니다 (참고: Groq docs): gpt-oss 패밀리는 'low', 'medium', 'high'를 받으므로 통합 thinking 노력 수준이 거기에 매핑되고, qwen3 패밀리는 'none''default'만 받으므로 거기의 통합 활성 수준은 reasoning_format을 제어하지만 reasoning_effort를 보내지 않아요(매핑할 단계가 없습니다). 명시적 groq_reasoning_effort는 항상 통합 매핑보다 우선합니다.

OpenRouter

씽킹을 켜려면 OpenRouterModelSettings.openrouter_reasoning 모델 설정을 사용하세요.

from pydantic_ai import Agent
from pydantic_ai.models.openrouter import OpenRouterModel, OpenRouterModelSettings

model = OpenRouterModel('openai/gpt-5.2')
settings = OpenRouterModelSettings(openrouter_reasoning={'effort': 'high'})
agent = Agent(model, model_settings=settings)
...

와이어 형식 세부 사항

참인 thinking 값은 와이어에 effortenabled: True를 모두 보냅니다. 명시적 enabled: True는 기본 reasoning 라우트에는 무동작이지만 reasoning 선택 라우트(예: google/gemma-* 패밀리의 일부)에는 짐이 있는데, 그렇지 않으면 effort가 설정돼도 reasoning이 비활성화된 채 남기 때문입니다.

thinking=False는 업스트림이 비활성화를 받을 수 있는 라우트(예: anthropic/claude-sonnet-4.5, z-ai/glm-4.6)에서 reasoning={'effort': 'none'}문서화된 OpenRouter 비활성화 신호 — 를 보냅니다. 업스트림이 항상 켜진 라우트(예: openai/o3, openai/gpt-5, mistralai/magistral-medium-*, deepseek/deepseek-r1, x-ai/grok-3-mini)에서는 thinking=False가 모델-프로파일 게이트에서 조용히 무시되어, 같은 모델의 직접 라우트 동작과 일치합니다. 라우트별 명시적 제어를 원하면 OpenRouterModelSettings.openrouter_reasoning을 직접 설정하세요.

Z.AI

씽킹을 켜려면 통합 thinking 모델 설정을 사용하세요. 멀티턴 대화에서 씽킹 콘텐츠를 보존하려면 ZaiModelSettings.zai_clear_thinkingFalse로 설정하세요.

from pydantic_ai import Agent
from pydantic_ai.models.zai import ZaiModel, ZaiModelSettings

model = ZaiModel('glm-5')
settings = ZaiModelSettings(thinking=True, zai_clear_thinking=False)
agent = Agent(model, model_settings=settings)
...

GitHub Copilot

Copilot은 통합 thinking 설정을 OpenAIChatModel에서 상속받아 reasoning_effort로 받아요. 주어진 id가 그것을 받는지, 어느 수준을 받는지는 Copilot이 자체 카탈로그에서 보고하고 스스로 시행하는 모델별 사실이며, GitHubCopilotModel은 자체 게이트를 추가하지 않습니다.

Copilot의 Anthropic·Google id는 reasoning을 비표준 reasoning_text 필드로 반환하며, Pydantic AI가 그것을 ThinkingPart로 매핑하고 이후 턴에 같은 필드로 돌려보냅니다. 그것의 OpenAI·MoonshotAI id는 설정을 받고 그것에 reasoning하지만, Copilot은 그것들에 reasoning 텍스트를 반환하지 않으므로 ThinkingPart를 산출하지 않아요. Anthropic id는 그 외에도 적응형으로 reasoning하므로 노력은 지시가 아니라 상한이고, 쉬운 질문은 reasoning 없이 돌아올 수 있습니다. 그 reasoning_effort 목록에는 none도 없어서, thinking=Falsereasoning_effort='none'으로 나가고 Copilot이 400 invalid_reasoning_effort로 답합니다. 참고: GitHub Copilot.

Snowflake Cortex

Claude 모델에서 씽킹을 켜려면 통합 thinking 모델 설정을 쓰거나, reasoning 토큰 예산을 제어하려면 SnowflakeModelSettings.snowflake_reasoning을 직접 설정하세요:

from pydantic_ai import Agent
from pydantic_ai.models.snowflake import SnowflakeModel, SnowflakeModelSettings

model = SnowflakeModel('claude-sonnet-4-6')
settings = SnowflakeModelSettings(snowflake_reasoning={'max_tokens': 4096})
agent = Agent(model, model_settings=settings)
...

OpenAI 모델에서는 통합 thinking 설정이나 openai_reasoning_effort를 쓰세요.

Claude는 씽킹이 켜졌을 때 temperature가 정확히 1이어야 하지만, Cortex는 요청이 지정하지 않으면 다른 기본값을 적용합니다. 그래서 SnowflakeModel은 reasoning이 켜지고 명시적으로 설정하지 않았으면 temperature를 1로 자동 설정해요.

Mistral

magistral 패밀리는 항상 reasoning하며 특별히 켤 필요가 없고, thinking=False는 조용히 무시됩니다. Mistral은 magistral 패밀리를 아래의 조정 가능 reasoning 모델들을 위해 더 이상 사용하지 않는다고 발표했습니다.

조정 가능 reasoning이 있는 모델(Mistral Small 4와 Medium 3.5 패밀리: mistral-small-latest, mistral-small-2603, mistral-medium-latest, mistral-medium, mistral-medium-3, mistral-medium-3-5, mistral-medium-3.5, mistral-medium-2604)은 Mistral의 reasoning_effort에 매핑되는 통합 thinking 설정으로 제어됩니다. Mistral은 'high'(완전 씽킹)와 'none'(씽킹 억제)만 노출하므로, 모든 활성 수준이 'high'에 매핑되고 thinking=False'none'에 매핑됩니다. 더 오래된 mistral-small-* / mistral-medium-* 스냅샷은 reasoning을 지원하지 않으므로 thinking이 조용히 무시됩니다. 조정 가능 reasoning은 네이티브 Mistral 공급자를 쓸 때 적용됩니다. 이 모델들을 호스팅하는 OpenAI 호환 공급자(LiteLLM이나 Azure 같은)는 그것을 지원하지 않으며 거기서 thinking은 무시됩니다. OpenRouter는 예외입니다. 라우팅하는 어떤 모델이든 통합 thinking 설정을 자체 reasoning 파라미터에 매핑합니다.

Cohere

씽킹은 command-a-reasoning-08-2025 모델이 지원합니다. 특별히 켤 필요는 없어요.

Hugging Face

thinking 태그 안의 텍스트 출력은 자동으로 ThinkingPart 객체로 변환됩니다. 모델 프로파일thinking_tags 필드로 태그를 커스터마이즈할 수 있어요.

더 알아보기 (Learn more)