@@ -77,31 +77,9 @@ extension BedrockService {
7777 quality: quality,
7878 resolution: resolution
7979 )
80- let input : InvokeModelInput = try request. getInvokeModelInput ( )
81- logger. trace (
82- " Sending request to invokeModel " ,
83- metadata: [
84- " model " : . string( model. id) , " request " : . string( String ( describing: input) ) ,
85- ]
86- )
87- let response = try await self . bedrockRuntimeClient. invokeModel ( input: input)
88- guard let responseBody = response. body else {
89- logger. trace (
90- " Invalid response " ,
91- metadata: [
92- " response " : . string( String ( describing: response) ) ,
93- " hasBody " : . stringConvertible( response. body != nil ) ,
94- ]
95- )
96- throw BedrockLibraryError . invalidSDKResponse (
97- " Something went wrong while extracting body from response. "
98- )
99- }
100- let invokemodelResponse : InvokeModelResponse = try InvokeModelResponse . createImageResponse (
101- body: responseBody,
102- model: model
103- )
104- return try invokemodelResponse. getGeneratedImage ( )
80+
81+ return try await sendRequest ( request: request, model: model)
82+
10583 } catch {
10684 try handleCommonError ( error, context: " listing foundation models " )
10785 }
@@ -174,34 +152,39 @@ extension BedrockService {
174152 quality: quality,
175153 resolution: resolution
176154 )
177- let input : InvokeModelInput = try request. getInvokeModelInput ( )
155+ return try await sendRequest ( request: request, model: model)
156+ } catch {
157+ try handleCommonError ( error, context: " invoking image model " )
158+ }
159+ }
160+
161+ /// Sends the request to invoke the model and returns the generated image(s)
162+ private func sendRequest( request: InvokeModelRequest , model: BedrockModel ) async throws -> ImageGenerationOutput {
163+ let input : InvokeModelInput = try request. getInvokeModelInput ( forRegion: self . region)
164+ logger. trace (
165+ " Sending request to invokeModel " ,
166+ metadata: [
167+ " model " : . string( model. id) , " request " : . string( String ( describing: input) ) ,
168+ ]
169+ )
170+ let response = try await self . bedrockRuntimeClient. invokeModel ( input: input)
171+ guard let responseBody = response. body else {
178172 logger. trace (
179- " Sending request to invokeModel " ,
173+ " Invalid response " ,
180174 metadata: [
181- " model " : . string( model. id) , " request " : . string( String ( describing: input) ) ,
175+ " response " : . string( String ( describing: response) ) ,
176+ " hasBody " : . stringConvertible( response. body != nil ) ,
182177 ]
183178 )
184- let response = try await self . bedrockRuntimeClient. invokeModel ( input: input)
185- guard let responseBody = response. body else {
186- logger. trace (
187- " Invalid response " ,
188- metadata: [
189- " response " : . string( String ( describing: response) ) ,
190- " hasBody " : . stringConvertible( response. body != nil ) ,
191- ]
192- )
193- throw BedrockLibraryError . invalidSDKResponse (
194- " Something went wrong while extracting body from response. "
195- )
196- }
197- let invokemodelResponse : InvokeModelResponse = try InvokeModelResponse . createImageResponse (
198- body: responseBody,
199- model: model
179+ throw BedrockLibraryError . invalidSDKResponse (
180+ " Something went wrong while extracting body from response. "
200181 )
201- return try invokemodelResponse. getGeneratedImage ( )
202- } catch {
203- try handleCommonError ( error, context: " listing foundation models " )
204182 }
183+ let invokemodelResponse : InvokeModelResponse = try InvokeModelResponse . createImageResponse (
184+ body: responseBody,
185+ model: model
186+ )
187+ return try invokemodelResponse. getGeneratedImage ( )
205188 }
206189
207190 /// Generates 1 to 5 image variation(s) from reference images and a text prompt using a specific model
0 commit comments