Skip to content

Commit be0406c

Browse files
authored
Add support for Claude Opus 4.6 (#69)
* add support for claude opus 4.6 * swift-format * fix package resolution depency error caused by awslabs/aws-crt-swift#373
1 parent 9c8a796 commit be0406c

File tree

4 files changed

+71
-3
lines changed

4 files changed

+71
-3
lines changed

Package.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ let package = Package(
1010
.library(name: "BedrockService", targets: ["BedrockService"])
1111
],
1212
dependencies: [
13-
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.6.2"),
14-
.package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.6.3"),
15-
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.173.0"),
13+
// use an old version until https://github.com/awslabs/aws-crt-swift/issues/373 will be resolved.
14+
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.3"),
15+
// .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.7.0"),
16+
.package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.6.50"),
17+
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.181.0"),
1618
.package(url: "https://github.com/apple/swift-log.git", from: "1.6.4"),
1719
.package(url: "https://github.com/awslabs/aws-crt-swift", from: "0.54.2"),
1820
],

Sources/BedrockService/Models/Anthropic/AnthropicBedrockModels.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,20 @@ extension BedrockModel {
251251
maxReasoningTokens: Parameter(.maxReasoningTokens, minValue: 1_024, maxValue: 8_191, defaultValue: 4_096)
252252
)
253253
)
254+
public static let claude_opus_v4_6: BedrockModel = BedrockModel(
255+
id: "anthropic.claude-opus-4-6-v1",
256+
name: "Claude Opus v4.6",
257+
modality: Claude_Opus_v4_6(
258+
parameters: TextGenerationParameters(
259+
temperature: Parameter(.temperature, minValue: 0, maxValue: 1, defaultValue: 1),
260+
maxTokens: Parameter(.maxTokens, minValue: 1, maxValue: 128_000, defaultValue: 8_192),
261+
topP: Parameter(.topP, minValue: 0, maxValue: 1, defaultValue: 0.999),
262+
topK: Parameter(.topK, minValue: 0, maxValue: 500, defaultValue: 0),
263+
stopSequences: StopSequenceParams(maxSequences: 8191, defaultValue: []),
264+
maxPromptSize: 200_000
265+
),
266+
features: [.textGeneration, .systemPrompts, .document, .vision, .toolUse, .reasoning],
267+
maxReasoningTokens: Parameter(.maxReasoningTokens, minValue: 1_024, maxValue: 8_191, defaultValue: 4_096)
268+
)
269+
)
254270
}

Sources/BedrockService/Models/Anthropic/AnthropicGlobalModels.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,51 @@ struct Claude_Opus_v4_5: TextModality, ConverseModality, ConverseStreamingModali
112112
try anthropicText.getTextResponseBody(from: data)
113113
}
114114
}
115+
116+
struct Claude_Opus_v4_6: TextModality, ConverseModality, ConverseStreamingModality,
117+
GlobalCrossRegionInferenceModality
118+
{
119+
private let anthropicText: AnthropicText
120+
121+
let converseParameters: ConverseParameters
122+
let converseFeatures: [ConverseFeature]
123+
124+
init(parameters: TextGenerationParameters, features: [ConverseFeature], maxReasoningTokens: Parameter<Int>) {
125+
self.anthropicText = AnthropicText(
126+
parameters: parameters,
127+
features: features,
128+
maxReasoningTokens: maxReasoningTokens
129+
)
130+
self.converseParameters = anthropicText.converseParameters
131+
self.converseFeatures = anthropicText.converseFeatures
132+
}
133+
134+
func getName() -> String { anthropicText.getName() }
135+
func getParameters() -> TextGenerationParameters { anthropicText.getParameters() }
136+
func getConverseParameters() -> ConverseParameters { anthropicText.getConverseParameters() }
137+
func getConverseFeatures() -> [ConverseFeature] { anthropicText.getConverseFeatures() }
138+
139+
func getTextRequestBody(
140+
prompt: String,
141+
maxTokens: Int?,
142+
temperature: Double?,
143+
topP: Double?,
144+
topK: Int?,
145+
stopSequences: [String]?,
146+
serviceTier: ServiceTier
147+
) throws -> BedrockBodyCodable {
148+
try anthropicText.getTextRequestBody(
149+
prompt: prompt,
150+
maxTokens: maxTokens,
151+
temperature: temperature,
152+
topP: topP,
153+
topK: topK,
154+
stopSequences: stopSequences,
155+
serviceTier: serviceTier
156+
)
157+
}
158+
159+
func getTextResponseBody(from data: Data) throws -> ContainsTextCompletion {
160+
try anthropicText.getTextResponseBody(from: data)
161+
}
162+
}

Sources/BedrockService/Models/BedrockModel.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ public struct BedrockModel: Hashable, Sendable, Equatable, RawRepresentable {
8383
self = BedrockModel.claude_sonnet_v4_5
8484
case BedrockModel.claude_opus_v4_5.id:
8585
self = BedrockModel.claude_opus_v4_5
86+
case BedrockModel.claude_opus_v4_6.id:
87+
self = BedrockModel.claude_opus_v4_6
8688
// titan
8789
case BedrockModel.titan_text_g1_premier.id:
8890
self = BedrockModel.titan_text_g1_premier

0 commit comments

Comments
 (0)