Profiles / 模型配置Note 74
03 ProviderProfile:模型构造参数
它是什么
它是什么
ProviderProfile 只管模型构造参数,比如 temperature、timeout、base_url 或构造前校验。provider-level profile 先应用,model-level profile 再覆盖同名字段。它不改变系统提示词、工具描述或 subagent 行为。
它生效的位置比 HarnessProfile 更早:当 create_deep_agent(model="provider:model") 收到字符串模型 spec 时,Deep Agents 会先解析模型并应用 ProviderProfile,再创建 Agent。
最小代码
文件:deepagent_src/profiles_teach/03_provider_profile.py
register_provider_profile(
"profiledemo",
ProviderProfile(init_kwargs={"temperature": 0, "timeout": 30}),
)
register_provider_profile(
"profiledemo:tiny",
ProviderProfile(init_kwargs={"timeout": 5}),
)
运行
uv run python deepagent_src/profiles_teach/03_provider_profile.py
预期输出末尾:
provider profile merge plus real agent ok
验证方式
脚本用 apply_provider_profile("profiledemo:tiny", run_pre_init=False) 断言合并结果是 temperature=0、timeout=5,同时真实调用项目模型创建的 Agent,并要求它调用 provider_profile_note 工具。
常见误区
不要指望 ProviderProfile 改工具或 prompt。那些属于 HarnessProfile,Provider profile 只发生在模型构造阶段。
相关资源
查看示例代码:deepagent_src/profiles_teach/03_provider_profile.py
from __future__ import annotations from deepagents import ProviderProfile, create_deep_agent, register_provider_profile from deepagents.profiles.provider.provider_profiles import apply_provider_profile from langchain.tools import tool from _model import get_real_model from deepagent_src.agent_output import invoke_and_pretty_print DEMO_PROVIDER_KEY = "profiledemo" DEMO_MODEL_SPEC = "profiledemo:tiny" @tool def provider_profile_note() -> str: """Return the ProviderProfile lesson note.""" return "ProviderProfile controls model construction kwargs." def main() -> None: register_provider_profile( DEMO_PROVIDER_KEY, ProviderProfile(init_kwargs={"temperature": 0, "timeout": 30}), ) register_provider_profile( DEMO_MODEL_SPEC, ProviderProfile(init_kwargs={"timeout": 5}), ) merged_kwargs = apply_provider_profile(DEMO_MODEL_SPEC, run_pre_init=False) agent = create_deep_agent(model=get_real_model(), tools=[provider_profile_note]) result = invoke_and_pretty_print( agent, { "messages": [ { "role": "user", "content": ( "必须调用 provider_profile_note," "然后用一句中文复述工具返回值。" ), } ] }, ) tool_outputs = [ getattr(message, "content", "") for message in result["messages"] if message.__class__.__name__ == "ToolMessage" ] assert merged_kwargs["temperature"] == 0 assert merged_kwargs["timeout"] == 5 assert any("model construction kwargs" in output for output in tool_outputs) print("provider profile merge plus real agent ok") if __name__ == "__main__": main()