多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

如何用 Pydantic AI 的 Thinking 能力开启并设置模型思考强度

如何用 Pydantic AI 的 Thinking 能力开启并设置模型思考强度 如何用 Pydantic AI 的 Thinking 能力开启并设置模型思考强度【免费下载链接】pydantic-aiHow Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end to end.项目地址: https://gitcode.com/GitHub_Trending/py/pydantic-aiThinkingreasoning是指模型在给出最终答案前逐步思考问题的过程。如果你在用 Pydantic AI 构建 Agent想让模型在回答前先想一步或者需要控制思考的深度effort核心文档是 docs/capabilities/thinking.md。本文覆盖的操作路径是安装 Pydantic AI用Thinkingcapability 开启思考按 5 档 effort 级别设置思考强度确认结果里确实出现了思考内容并在需要时用 provider 原生设置做精细控制。适用前提来自 docs/install.mdPython 3.10以及你所用 provider 对应的依赖包。安装与准备按 docs/install.md 的安装说明Pydantic AI 以pydantic-ai包发布在 PyPI 上pip/uv-add pydantic-ai文档中的pip/uv-add表示pip install或uv add任一方式均可。默认安装会带上使用 OpenAI、Anthropic、Google 模型所需的依赖如果只用其中某一家的模型也可以按文档安装pydantic-ai-slim加对应的 extras例如pip/uv-add pydantic-ai-slim[anthropic]。最短主路径用 Thinking capability 开启思考跨 provider 开启 thinking 的统一入口是 [Thinking][pydantic_ai.capabilities.Thinking] capability它属于核心包 pydantic-ai。用法见 docs/capabilities/thinking.mdfrom pydantic_ai import Agent from pydantic_ai.capabilities import Thinking agent Agent(anthropic:claude-opus-4-7, capabilities[Thinking(efforthigh)])不想用 capability 时也可以直接设置ModelSettings里的thinking字段from pydantic_ai import Agent agent Agent(anthropic:claude-opus-4-7, model_settings{thinking: high})两种方式接收相同的 effort 值。注意一点优先级规则provider 专属设置如anthropic_thinking、openai_reasoning_effort与统一thinking同时设置时provider 专属设置优先。effort 可以取哪些值Thinking.effort即底层thinking模型设置接受取值行为True开启 thinking使用 provider 的默认 effort 级别False关闭 thinking对 always-on 的模型会被静默忽略minimal/low/medium/high/xhigh以指定级别开启 thinking模型不支持的级别会映射到最接近的可用值不设置thinking时模型按自身默认行为执行。Thinkingcapability 会把每个 effort 值映射成所选 provider 的原生格式。docs/capabilities/thinking.md 中的完整映射表覆盖 Anthropic、OpenAI、Google、Groq、Mistral、OpenRouter、Cerebras、Snowflake、Crusoe、GitHub Copilot、Ollama、Z.AI、xAI、Bedrock 等这里摘几条关键的完整表格以文档为准Anthropic (Opus 4.6)映射为 adaptive thinkingeffortxhigh仅在 Claude Opus 4.7、4.8、5 和 Sonnet 5 上支持。旧模型走budget_tokenslow对应 2048 tokens。OpenAI映射为reasoning_effortGPT-5.6 会把统一的minimal映射成low。Google (Gemini 3)映射为thinking_level统一 effort 会吸附到该模型文档支持的最接近级别Gemini 2.5 则映射为thinking_budget。验证思考是否生效判断 thinking 是否真的开启看响应里的 part 结构检查ThinkingPart。对OpenAIChatModel、Hugging Face 等 provider文本里think标签内的内容会自动转换成ThinkingPart对象对 Groq 等 providerreasoning_formatparsed时思考内容以独立的结构化 part 返回。也就是说成功开启后消息 parts 中会出现ThinkingPart。流式场景看 delta 事件。docs/agent.md的流式示例展示了如何捕获思考增量PartDeltaEvent中当event.delta是ThinkingPartDelta时event.delta.content_delta就是思考内容的增量。Anthropic 看 token 用量。Anthropic 会在RunUsage.details的thinking_tokens键下报告实际使用的思考 token 数这些 token 计入output_tokens是输出总量中可读的子集不是额外累加响应未使用思考 token 时该键整个省略。一个边界情况部分 OpenAI 兼容 API文档点名 LM Studio、vLLM、OpenRouter 上的 gpt-oss 模型可能返回不含 summary 的原始 reasoning 内容此时ThinkingPart.content为空原始内容放在provider_details[raw_content]中。按 OpenAI 的指引原始 reasoning 不应直接展示给用户所以 Pydantic AI 将其存放在provider_details而非content字段。可选分支provider 原生设置做精细控制统一thinking设置满足大多数场景。当你需要直接使用 provider 原生的思考控制时各 provider 的专用模型设置如下均来自 docs/capabilities/thinking.md均为文档示例Anthropic adaptive thinkingclaude-opus-4-6起支持替代旧的budget_tokens方式Opus 4.7/4.8/5 和 Sonnet 5 已移除type: enabledfrom 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_efforthigh, ) agent Agent(model, model_settingssettings)旧模型如claude-sonnet-4-5仍用 budget 形式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_settingssettings)OpenAI Responses设置openai_reasoning_effort和openai_reasoning_summary启用原生 thinking partsfrom pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIResponsesModel, OpenAIResponsesModelSettings model OpenAIResponsesModel(gpt-5.6-sol) settings OpenAIResponsesModelSettings( openai_reasoning_effortlow, openai_reasoning_summarydetailed, ) agent Agent(model, model_settingssettings)Google通过google_thinking_config传原生配置详见 docs/models/google.md 的 Configure thinking 小节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_settingssettings)其他 provider 的原生设置xAI 的xai_include_encrypted_content、Groq 的groq_reasoning_format/groq_reasoning_effort、OpenRouter 的openrouter_reasoning、Snowflake 的snowflake_reasoning等在 docs/capabilities/thinking.md 对应章节有完整示例。已知限制与排查以下行为是文档明确说明的边界遇到设置没生效时先对照这些always-on 模型静默忽略thinkingFalse。例如 Groq 的 gpt-oss 族、Mistral 的magistral族、Bedrock 上的 Qwen 和 OpenAI 路由、xAI 的 Grok 4.5 等这些模型无法真正关闭思考thinkingFalse会被忽略。Anthropic Claude Opus 5在 thinking 被显式禁用anthropic_thinking{type: disabled}时会拒绝xhigh和maxeffortPydantic AI 会在发请求前抛出UserError而不是透传 Anthropic 的 400。GitHub Copilotreasoning_effort取值是否被接受由 Copilot 按模型 id 自行校验不支持的级别会返回400 invalid_reasoning_effort其 Anthropic/Google id 的列表里没有nonethinkingFalse会发成reasoning_effortnone并触发同样的 400。OpenAI Responses报Item rs_123 of type reasoning was provided without its required following item.这类错误时原因是发送的消息历史与上次 Responses API 返回的不完全匹配例如用了 history processor关闭OpenAIResponsesModelSettings.openai_send_reasoning_ids即可避免发送这些 id。Mistral 可调节推理模型只暴露high和none两档任何开启级别包括minimal都映射为high只有thinkingFalse映射为none且可调节推理仅在原生 Mistral provider 上生效OpenAI 兼容 providerLiteLLM、Azure 等上thinking会被忽略OpenRouter 除外。Groq 上关闭 thinking 的语义因模型族而异qwen3 族真正禁用reasoning_effortnonegpt-oss 族静默忽略其他推理模型发reasoning_formathidden只是抑制输出模型内部仍可能推理。下一步各 provider 完整的 effort 映射包括 Bedrock 上 Claude 的 adaptive/output_config.effort、Z.AI GLM-5.3 只接受low/high/max等细节见 docs/capabilities/thinking.md 的 Provider translation 表格。model_settings的分层合并顺序模型默认 → agent 级 → capability 级 → run 级覆盖见 docs/agent.md 的 Model (Run) Settings 小节可用于在单次 run 中临时调整思考强度。【免费下载链接】pydantic-aiHow Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end to end.项目地址: https://gitcode.com/GitHub_Trending/py/pydantic-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表