strands.models.model
¶
Abstract base class for Agent model providers.
Messages = List[Message]
module-attribute
¶
A list of messages representing a conversation.
T = TypeVar('T', bound=BaseModel)
module-attribute
¶
ToolChoice = Union[ToolChoiceAutoDict, ToolChoiceAnyDict, ToolChoiceToolDict]
module-attribute
¶
Configuration for how the model should choose tools.
- "auto": The model decides whether to use tools based on the context
- "any": The model must use at least one tool (any tool)
- "tool": The model must use the specified tool
logger = logging.getLogger(__name__)
module-attribute
¶
Model
¶
Bases: ABC
Abstract base class for Agent model providers.
This class defines the interface for all model implementations in the Strands Agents SDK. It provides a standardized way to configure and process requests for different AI model providers.
Source code in strands/models/model.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | |
get_config()
abstractmethod
¶
Return the model configuration.
Returns:
| Type | Description |
|---|---|
Any
|
The model's configuration. |
Source code in strands/models/model.py
35 36 37 38 39 40 41 42 43 | |
stream(messages, tool_specs=None, system_prompt=None, *, tool_choice=None, system_prompt_content=None, **kwargs)
abstractmethod
¶
Stream conversation with the model.
This method handles the full lifecycle of conversing with the model:
- Format the messages, tool specs, and configuration into a streaming request
- Send the request to the model
- Yield the formatted message chunks
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Messages
|
List of message objects to be processed by the model. |
required |
tool_specs
|
Optional[list[ToolSpec]]
|
List of tool specifications to make available to the model. |
None
|
system_prompt
|
Optional[str]
|
System prompt to provide context to the model. |
None
|
tool_choice
|
ToolChoice | None
|
Selection strategy for tool invocation. |
None
|
system_prompt_content
|
list[SystemContentBlock] | None
|
System prompt content blocks for advanced features like caching. |
None
|
**kwargs
|
Any
|
Additional keyword arguments for future extensibility. |
{}
|
Yields:
| Type | Description |
|---|---|
AsyncIterable[StreamEvent]
|
Formatted message chunks from the model. |
Raises:
| Type | Description |
|---|---|
ModelThrottledException
|
When the model service is throttling requests from the client. |
Source code in strands/models/model.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | |
structured_output(output_model, prompt, system_prompt=None, **kwargs)
abstractmethod
¶
Get structured output from the model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
output_model
|
Type[T]
|
The output model to use for the agent. |
required |
prompt
|
Messages
|
The prompt messages to use for the agent. |
required |
system_prompt
|
Optional[str]
|
System prompt to provide context to the model. |
None
|
**kwargs
|
Any
|
Additional keyword arguments for future extensibility. |
{}
|
Yields:
| Type | Description |
|---|---|
AsyncGenerator[dict[str, Union[T, Any]], None]
|
Model events with the last being the structured output. |
Raises:
| Type | Description |
|---|---|
ValidationException
|
The response format from the model does not match the output_model |
Source code in strands/models/model.py
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | |
update_config(**model_config)
abstractmethod
¶
Update the model configuration with the provided arguments.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
**model_config
|
Any
|
Configuration overrides. |
{}
|
Source code in strands/models/model.py
25 26 27 28 29 30 31 32 33 | |
StreamEvent
¶
Bases: TypedDict
The messages output stream.
Attributes:
| Name | Type | Description |
|---|---|---|
contentBlockDelta |
ContentBlockDeltaEvent
|
Delta content for a content block. |
contentBlockStart |
ContentBlockStartEvent
|
Start of a content block. |
contentBlockStop |
ContentBlockStopEvent
|
End of a content block. |
internalServerException |
ExceptionEvent
|
Internal server error information. |
messageStart |
MessageStartEvent
|
Start of a message. |
messageStop |
MessageStopEvent
|
End of a message. |
metadata |
MetadataEvent
|
Metadata about the streaming response. |
modelStreamErrorException |
ModelStreamErrorEvent
|
Model streaming error information. |
serviceUnavailableException |
ExceptionEvent
|
Service unavailable error information. |
throttlingException |
ExceptionEvent
|
Throttling error information. |
validationException |
ExceptionEvent
|
Validation error information. |
Source code in strands/types/streaming.py
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 | |
SystemContentBlock
¶
Bases: TypedDict
Contains configurations for instructions to provide the model for how to handle input.
Attributes:
| Name | Type | Description |
|---|---|---|
cachePoint |
CachePoint
|
A cache point configuration to optimize conversation history. |
text |
str
|
A system prompt for the model. |
Source code in strands/types/content.py
102 103 104 105 106 107 108 109 110 111 | |
ToolSpec
¶
Bases: TypedDict
Specification for a tool that can be used by an agent.
Attributes:
| Name | Type | Description |
|---|---|---|
description |
str
|
A human-readable description of what the tool does. |
inputSchema |
JSONSchema
|
JSON Schema defining the expected input parameters. |
name |
str
|
The unique name of the tool. |
outputSchema |
NotRequired[JSONSchema]
|
Optional JSON Schema defining the expected output format. Note: Not all model providers support this field. Providers that don't support it should filter it out before sending to their API. |
Source code in strands/types/tools.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | |