使用適用於 Swift 的 SDK 的 Amazon Bedrock 執行期範例 - AWS SDK 程式碼範例

文件 AWS 開發套件範例 GitHub 儲存庫中有更多可用的 AWS SDK 範例

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用適用於 Swift 的 SDK 的 Amazon Bedrock 執行期範例

下列程式碼範例示範如何使用適用於 Swift 的 AWS SDK 搭配 Amazon Bedrock 執行期來執行動作和實作常見案例。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

Amazon Nova

下列程式碼範例示範如何使用 Bedrock 的 Converse API 將文字訊息傳送至 Amazon Nova。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API 將文字訊息傳送至 Amazon Nova。

// An example demonstrating how to use the Conversation API to send // a text message to Amazon Nova. import AWSBedrockRuntime func converse(_ textPrompt: String) async throws -> String { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "amazon.nova-micro-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseInput to send to the model let input = ConverseInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseInput to the model let response = try await client.converse(input: input) // Extract and return the response text. if case let .message(msg) = response.output { if case let .text(textResponse) = msg.content![0] { return textResponse } else { return "No text response found in message content" } } else { return "No message found in converse output" } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 Converse

下列程式碼範例示範如何使用 Bedrock 的 Converse API 將文字訊息傳送至 Amazon Nova,並即時處理回應串流。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API 將文字訊息傳送至 Amazon Nova,並即時處理回應串流。

// An example demonstrating how to use the Conversation API to send a text message // to Amazon Nova and print the response stream import AWSBedrockRuntime func printConverseStream(_ textPrompt: String) async throws { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "amazon.nova-lite-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters. let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseStreamInput to send to the model. let input = ConverseStreamInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseStreamInput to the model. let response = try await client.converseStream(input: input) // Extract the streaming response. guard let stream = response.stream else { print("No stream available") return } // Extract and print the streamed response text in real-time. for try await event in stream { switch event { case .messagestart(_): print("\nNova Lite:") case .contentblockdelta(let deltaEvent): if case .text(let text) = deltaEvent.delta { print(text, terminator: "") } default: break } } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 ConverseStream

Amazon Nova Reel

下列程式碼範例示範如何使用 Amazon Nova Reel 從文字提示產生影片。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Amazon Nova Reel 從文字提示產生影片。

// This example demonstrates how to use Amazon Nova Reel to generate a video from a text prompt. // It shows how to: // - Set up the Amazon Bedrock runtime client // - Configure a text-to-video request // - Submit an asynchronous job for video generation // - Poll for job completion status // - Access the generated video from S3 import AWSBedrockRuntime import Foundation import Smithy func startTextToVideoGenerationJob( bedrockRuntimeClient: BedrockRuntimeClient, prompt: String, outputS3Uri: String ) async throws -> String? { // Specify the model ID for text-to-video generation let modelId = "amazon.nova-reel-v1:0" // Configure the video generation request with additional parameters let modelInputSource: [String: Any] = [ "taskType": "TEXT_VIDEO", "textToVideoParams": [ "text": "\(prompt)" ], "videoGenerationConfig": [ "durationSeconds": 6, "fps": 24, "dimension": "1280x720", ], ] let modelInput = try Document.make(from: modelInputSource) let input = StartAsyncInvokeInput( modelId: modelId, modelInput: modelInput, outputDataConfig: .s3outputdataconfig( BedrockRuntimeClientTypes.AsyncInvokeS3OutputDataConfig( s3Uri: outputS3Uri ) ) ) // Invoke the model asynchronously let output = try await bedrockRuntimeClient.startAsyncInvoke(input: input) return output.invocationArn } func queryJobStatus( bedrockRuntimeClient: BedrockRuntimeClient, invocationArn: String? ) async throws -> GetAsyncInvokeOutput { try await bedrockRuntimeClient.getAsyncInvoke( input: GetAsyncInvokeInput(invocationArn: invocationArn)) } func main() async throws { // Create a Bedrock Runtime client let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Specify the S3 location for the output video let bucket = "s3://REPLACE-WITH-YOUR-S3-BUCKET-NAM" print("Submitting video generation job...") let invocationArn = try await startTextToVideoGenerationJob( bedrockRuntimeClient: client, prompt: "A pomegranate juice in a railway station", outputS3Uri: bucket ) print("Job started with invocation ARN: \(String(describing:invocationArn))") // Poll for job completion var status: BedrockRuntimeClientTypes.AsyncInvokeStatus? var isReady = false var hasFailed = false while !isReady && !hasFailed { print("\nPolling job status...") status = try await queryJobStatus( bedrockRuntimeClient: client, invocationArn: invocationArn ).status switch status { case .completed: isReady = true print("Video is ready\nCheck S3 bucket: \(bucket)") case .failed: hasFailed = true print("Something went wrong") case .inProgress: print("Job is in progress...") try await Task.sleep(nanoseconds: 15 * 1_000_000_000) // 15 seconds default: isReady = true } } } do { try await main() } catch { print("An error occurred: \(error)") }

Anthropic Claude

下列程式碼範例示範如何使用 Bedrock 的 Converse API,將文字訊息傳送至 Anthropic Claude。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API,將文字訊息傳送至 Anthropic Claude。

// An example demonstrating how to use the Conversation API to send // a text message to Anthropic Claude. import AWSBedrockRuntime func converse(_ textPrompt: String) async throws -> String { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "anthropic.claude-3-haiku-20240307-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseInput to send to the model let input = ConverseInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseInput to the model let response = try await client.converse(input: input) // Extract and return the response text. if case let .message(msg) = response.output { if case let .text(textResponse) = msg.content![0] { return textResponse } else { return "No text response found in message content" } } else { return "No message found in converse output" } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 Converse

下列程式碼範例示範如何使用 Bedrock 的 Converse API 將文字訊息傳送至 Anthropic Claude,並即時處理回應串流。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API 將文字訊息傳送至 Anthropic Claude,並即時處理回應串流。

// An example demonstrating how to use the Conversation API to send a text message // to Anthropic Claude and print the response stream import AWSBedrockRuntime func printConverseStream(_ textPrompt: String) async throws { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "anthropic.claude-3-haiku-20240307-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters. let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseStreamInput to send to the model. let input = ConverseStreamInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseStreamInput to the model. let response = try await client.converseStream(input: input) // Extract the streaming response. guard let stream = response.stream else { print("No stream available") return } // Extract and print the streamed response text in real-time. for try await event in stream { switch event { case .messagestart(_): print("\nAnthropic Claude:") case .contentblockdelta(let deltaEvent): if case .text(let text) = deltaEvent.delta { print(text, terminator: "") } default: break } } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 ConverseStream

中繼 Llama

下列程式碼範例示範如何使用 Bedrock 的 Converse API,將文字訊息傳送至 Meta Llama。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API,將文字訊息傳送至 Meta Llama。

// An example demonstrating how to use the Conversation API to send // a text message to Meta Llama. import AWSBedrockRuntime func converse(_ textPrompt: String) async throws -> String { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "meta.llama3-8b-instruct-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseInput to send to the model let input = ConverseInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseInput to the model let response = try await client.converse(input: input) // Extract and return the response text. if case let .message(msg) = response.output { if case let .text(textResponse) = msg.content![0] { return textResponse } else { return "No text response found in message content" } } else { return "No message found in converse output" } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 Converse

下列程式碼範例示範如何使用 Bedrock 的 Converse API 將文字訊息傳送至 Meta Llama,並即時處理回應串流。

SDK for Swift
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

使用 Bedrock 的 Converse API 將文字訊息傳送至 Meta Llama,並即時處理回應串流。

// An example demonstrating how to use the Conversation API to send a text message // to Meta Llama and print the response stream. import AWSBedrockRuntime func printConverseStream(_ textPrompt: String) async throws { // Create a Bedrock Runtime client in the AWS Region you want to use. let config = try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( region: "us-east-1" ) let client = BedrockRuntimeClient(config: config) // Set the model ID. let modelId = "meta.llama3-8b-instruct-v1:0" // Start a conversation with the user message. let message = BedrockRuntimeClientTypes.Message( content: [.text(textPrompt)], role: .user ) // Optionally use inference parameters. let inferenceConfig = BedrockRuntimeClientTypes.InferenceConfiguration( maxTokens: 512, stopSequences: ["END"], temperature: 0.5, topp: 0.9 ) // Create the ConverseStreamInput to send to the model. let input = ConverseStreamInput( inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) // Send the ConverseStreamInput to the model. let response = try await client.converseStream(input: input) // Extract the streaming response. guard let stream = response.stream else { print("No stream available") return } // Extract and print the streamed response text in real-time. for try await event in stream { switch event { case .messagestart(_): print("\nMeta Llama:") case .contentblockdelta(let deltaEvent): if case .text(let text) = deltaEvent.delta { print(text, terminator: "") } default: break } } }
  • 如需 API 詳細資訊,請參閱《適用於 AWS Swift 的 SDK API 參考》中的 ConverseStream