第 2 章 StrandsModel ProviderBedrock

第 2 章:切换模型提供商

第 2 章:切换模型提供商

在 YouTube 观看

关于本课

本课程的视频是某个时间点的快照。Strands 一直在活跃开发,所以本页的代码反映的是最新的写法,但视频里讲的概念依然成立。有疑问时,以代码为准。

本课代码:samples/02-model-providers

选模型是个架构决策

不同 Model 的强项、成本、延迟表现和 Tool Calling 行为都不一样。Strands 把各家 Provider 抽象在同一套接口后面,所以底层换哪个 Model,你的 Agent 代码都不用动。换 Model 时,你的 Tool、system prompt 和编排逻辑都不用改。

配置 Provider

所有 Provider 都是同一个套路:实例化一个 model 类,把它传给 Agent。

from strands import Agent
from strands.models import BedrockModel
from strands.models.anthropic import AnthropicModel
from strands.models.ollama import OllamaModel
from strands.models.openai import OpenAIModel
import os

# Amazon Bedrock (default if no model specified)
bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-opus-5"
)

# Anthropic direct API
anthropic_model = AnthropicModel(
    client_args={"api_key": os.environ["ANTHROPIC_API_KEY"]},
    model_id="claude-sonnet-5",
    max_tokens=1024,
    params={"temperature": 0.7},
)

# OpenAI
openai_model = OpenAIModel(
    client_args={"api_key": os.environ["OPENAI_API_KEY"]},
    model_id="gpt-4o",
    params={"max_tokens": 1000, "temperature": 0.7},
)

# Local with Ollama (no cloud APIs needed)
ollama_model = OllamaModel(
    host="http://localhost:11434",
    model_id="gemma4:latest",
)

# Use any provider. Agent code stays identical.
agent = Agent(model=ollama_model)
agent("Explain the agent loop in one paragraph.")

📂 model_providers.py

Provider Install Auth
Bedrock (default) pip install strands-agents AWS credentials configured
Anthropic pip install "strands-agents[anthropic]" ANTHROPIC_API_KEY
OpenAI pip install "strands-agents[openai]" OPENAI_API_KEY
Ollama (local) pip install "strands-agents[ollama]" None, runs on your machine

多模型架构

在复杂的系统里,不同的 Agent 会用不同的 Model:

  • 用快而便宜的 Model 做轻量分类
  • 用推理强的 Model 做编排
  • 用专门调过的 Model 做代码生成
  • 做评测/校验时干脆换一家 Provider(避开同 Model 带来的偏好)

Ollama 安装

Ollama 让你把 Model 完全跑在自己机器上,适合开发、离线使用,或者纯粹想省 API 费用。

brew install ollama
ollama serve
ollama pull gemma4:latest

参考资源