1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
//! Configuration types for Amazon Bedrock provider.
use ;
/// TTL options for Bedrock prompt caching.
///
/// Bedrock supports explicit prompt caching via `CachePoint` blocks in the
/// Converse API. The TTL controls how long cached content is retained.
///
/// # Example
///
/// ```rust
/// use adk_model::bedrock::BedrockCacheTtl;
///
/// let ttl = BedrockCacheTtl::FiveMinutes; // default
/// let ttl = BedrockCacheTtl::OneHour; // Claude Opus 4.5, Haiku 4.5, Sonnet 4.5
/// ```
/// Configuration for Bedrock prompt caching.
///
/// When enabled on [`BedrockConfig`], the Bedrock request builder injects
/// `CachePoint` blocks after system prompts and tool definitions.
///
/// # Example
///
/// ```rust
/// use adk_model::bedrock::{BedrockCacheConfig, BedrockCacheTtl};
///
/// // Default 5-minute TTL
/// let config = BedrockCacheConfig::default();
///
/// // 1-hour TTL for supported models
/// let config = BedrockCacheConfig { ttl: BedrockCacheTtl::OneHour };
/// ```
/// Configuration for Amazon Bedrock.
///
/// Bedrock uses AWS IAM/STS authentication rather than API keys.
/// Credentials are loaded from the environment via the AWS SDK
/// (environment variables, shared config, IMDS, etc.).
///
/// Prompt caching is enabled by default with a 5-minute TTL.
/// Use [`without_prompt_caching`](BedrockConfig::without_prompt_caching) to disable.
///
/// # Inference Profiles
///
/// Newer Bedrock models require cross-region inference profile IDs
/// (prefixed with `us.` or `global.`) instead of raw model IDs.
///
/// # Example
///
/// ```rust,ignore
/// use adk_model::bedrock::BedrockConfig;
///
/// // Default: us-east-1, Claude Sonnet 4.6, prompt caching enabled
/// let config = BedrockConfig::default();
///
/// // Custom region and model
/// let config = BedrockConfig::new("eu-west-1", "us.anthropic.claude-haiku-4-5-20251001-v1:0");
///
/// // With a custom endpoint (e.g., VPC endpoint)
/// let config = BedrockConfig::new("us-west-2", "us.anthropic.claude-sonnet-4-6")
/// .with_endpoint_url("https://vpce-xxx.bedrock-runtime.us-west-2.vpce.amazonaws.com");
///
/// // Disable prompt caching
/// let config = BedrockConfig::default().without_prompt_caching();
/// ```