Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Examples/openai/Sources/Converse/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ let bedrock = try await BedrockService(

var builder = try ConverseRequestBuilder(with: .openai_gpt_oss_20b)
.withPrompt("Who are you?")
.withServiceTier(.priority)

var reply = try await bedrock.converse(with: builder)

Expand Down
3 changes: 2 additions & 1 deletion Examples/openai/Sources/Invoke/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ let bedrock = try await BedrockService(

let textCompletion = try await bedrock.completeText(
"Who are you?",
with: .openai_gpt_oss_20b
with: .openai_gpt_oss_20b,
// serviceTier: .default
)

if let reasoning = textCompletion.reasoning {
Expand Down
8 changes: 4 additions & 4 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ let package = Package(
.library(name: "BedrockService", targets: ["BedrockService"])
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.6.1"),
.package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.5.51"),
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.158.0"),
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.6.2"),
.package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.6.3"),
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.173.0"),
.package(url: "https://github.com/apple/swift-log.git", from: "1.6.4"),
.package(url: "https://github.com/awslabs/aws-crt-swift", from: "0.53.0"),
.package(url: "https://github.com/awslabs/aws-crt-swift", from: "0.54.2"),
],
targets: [
.target(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ extension BedrockService {
systemPrompts: systemPrompts,
tools: tools,
enableReasoning: enableReasoning,
maxReasoningTokens: maxReasoningTokens
maxReasoningTokens: maxReasoningTokens,
serviceTier: .default
)
}

Expand All @@ -87,6 +88,7 @@ extension BedrockService {
/// - tools: Optional array of tools the model can use
/// - enableReasoning: Optional flag to enable reasoning output
/// - maxReasoningTokens: Optional maximum number of reasoning tokens to generate
/// - serviceTier: Optional. The service tier to serve this request (.default | .priority | .flex)
/// - Throws: BedrockLibraryError.notSupported for parameters or functionalities that are not supported
/// BedrockLibraryError.invalidParameter for invalid parameters
/// BedrockLibraryError.invalidPrompt if the prompt is empty or too long
Expand All @@ -103,7 +105,8 @@ extension BedrockService {
systemPrompts: [String]? = nil,
tools: [Tool]? = nil,
enableReasoning: Bool? = false,
maxReasoningTokens: Int? = nil
maxReasoningTokens: Int? = nil,
serviceTier: ServiceTier
) async throws -> Message {
do {
let modality = try model.getConverseModality()
Expand All @@ -127,6 +130,7 @@ extension BedrockService {
"stopSequences": "\(String(describing: stopSequences))",
"systemPrompts": "\(String(describing: systemPrompts))",
"tools": "\(String(describing: tools))",
"serviceTier": "\(serviceTier.rawValue)",
]
)
let converseRequest = ConverseRequest(
Expand All @@ -138,7 +142,8 @@ extension BedrockService {
stopSequences: stopSequences,
systemPrompts: systemPrompts,
tools: tools,
maxReasoningTokens: maxReasoningTokens
maxReasoningTokens: maxReasoningTokens,
serviceTier: serviceTier
)

logger.trace("Creating ConverseInput")
Expand Down Expand Up @@ -180,7 +185,8 @@ extension BedrockService {
stopSequences: builder.stopSequences,
systemPrompts: builder.systemPrompts,
tools: builder.tools,
maxReasoningTokens: builder.maxReasoningTokens
maxReasoningTokens: builder.maxReasoningTokens,
serviceTier: builder.serviceTier
)
history.append(assistantMessage)
logger.trace(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ extension BedrockService {
systemPrompts: systemPrompts,
tools: tools,
enableReasoning: enableReasoning,
maxReasoningTokens: maxReasoningTokens
maxReasoningTokens: maxReasoningTokens,
serviceTier: .default
)
}

Expand All @@ -90,6 +91,7 @@ extension BedrockService {
/// - tools: Optional array of tools the model can use
/// - enableReasoning: Optional flag to enable reasoning capabilities
/// - maxReasoningTokens: Optional maximum number of tokens for reasoning
/// - serviceTier: Optional. The service tier to serve this request (.default | .priority | .flex)
/// - Throws: BedrockLibraryError.notSupported for parameters or functionalities that are not supported
/// BedrockLibraryError.invalidParameter for invalid parameters
/// BedrockLibraryError.invalidPrompt if the prompt is empty or too long
Expand All @@ -107,7 +109,8 @@ extension BedrockService {
systemPrompts: [String]? = nil,
tools: [Tool]? = nil,
enableReasoning: Bool? = false,
maxReasoningTokens: Int? = nil
maxReasoningTokens: Int? = nil,
serviceTier: ServiceTier
) async throws -> ConverseReplyStream {
do {
guard model.hasConverseStreamingModality() else {
Expand Down Expand Up @@ -138,6 +141,7 @@ extension BedrockService {
"stopSequences": "\(String(describing: stopSequences))",
"systemPrompts": "\(String(describing: systemPrompts))",
"tools": "\(String(describing: tools))",
"serviceTier": "\(serviceTier.rawValue)",
]
)
let converseRequest = ConverseStreamingRequest(
Expand All @@ -149,7 +153,8 @@ extension BedrockService {
stopSequences: stopSequences,
systemPrompts: systemPrompts,
tools: tools,
maxReasoningTokens: maxReasoningTokens
maxReasoningTokens: maxReasoningTokens,
serviceTier: serviceTier
)

logger.trace("Creating ConverseStreamingInput")
Expand Down Expand Up @@ -220,7 +225,8 @@ extension BedrockService {
stopSequences: builder.stopSequences,
systemPrompts: builder.systemPrompts,
tools: builder.tools,
maxReasoningTokens: builder.maxReasoningTokens
maxReasoningTokens: builder.maxReasoningTokens,
serviceTier: builder.serviceTier
)
return streamingResponse
} catch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public struct ConverseRequest {
let toolConfig: ToolConfig?
let systemPrompts: [String]?
let maxReasoningTokens: Int?
let serviceTier: ServiceTier

@available(
*,
Expand Down Expand Up @@ -56,7 +57,8 @@ public struct ConverseRequest {
stopSequences: stopSequences,
systemPrompts: systemPrompts,
tools: tools,
maxReasoningTokens: maxReasoningTokens
maxReasoningTokens: maxReasoningTokens,
serviceTier: .default
)
}

Expand All @@ -69,7 +71,8 @@ public struct ConverseRequest {
stopSequences: [String]?,
systemPrompts: [String]?,
tools: [Tool]?,
maxReasoningTokens: Int?
maxReasoningTokens: Int?,
serviceTier: ServiceTier
) {
self.messages = messages
self.model = model
Expand All @@ -86,6 +89,7 @@ public struct ConverseRequest {
} else {
self.toolConfig = nil
}
self.serviceTier = serviceTier
}

func getConverseInput(forRegion region: Region) throws -> ConverseInput {
Expand All @@ -94,6 +98,7 @@ public struct ConverseRequest {
inferenceConfig: inferenceConfig?.getSDKInferenceConfig(),
messages: try getSDKMessages(),
modelId: model.getModelIdWithCrossRegionInferencePrefix(region: region),
serviceTier: BedrockRuntimeClientTypes.ServiceTier(type: .init(rawValue: serviceTier.rawValue)),
system: getSDKSystemPrompts(),
toolConfig: try toolConfig?.getSDKToolConfig()
)
Expand Down
Loading