Sono disponibili altri esempi AWS SDK nel repository AWS Doc SDK
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi per l’API Runtime per Agent per Amazon Bedrock con SDK per Rust
I seguenti esempi di codice mostrano come eseguire azioni e implementare scenari comuni utilizzando l' AWS SDK for Rust con Amazon Bedrock Agents Runtime.
Le azioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le azioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati.
Ogni esempio include un link al codice sorgente completo, in cui vengono fornite le istruzioni su come configurare ed eseguire il codice nel contesto.
Argomenti
Azioni
Il seguente esempio di codice mostra come usare. InvokeAgent
- SDK per Rust
-
Nota
C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS
. use aws_config::{BehaviorVersion, SdkConfig}; use aws_sdk_bedrockagentruntime::{ self as bedrockagentruntime, types::{error::ResponseStreamError, ResponseStream}, }; #[allow(unused_imports)] use mockall::automock; const BEDROCK_AGENT_ID: &str = "AJBHXXILZN"; const BEDROCK_AGENT_ALIAS_ID: &str = "AVKP1ITZAA"; const BEDROCK_AGENT_REGION: &str = "us-east-1"; #[cfg(not(test))] pub use EventReceiverImpl as EventReceiver; #[cfg(test)] pub use MockEventReceiverImpl as EventReceiver; pub struct EventReceiverImpl { inner: aws_sdk_bedrockagentruntime::primitives::event_stream::EventReceiver< ResponseStream, ResponseStreamError, >, } #[cfg_attr(test, automock)] impl EventReceiverImpl { #[allow(dead_code)] pub fn new( inner: aws_sdk_bedrockagentruntime::primitives::event_stream::EventReceiver< ResponseStream, ResponseStreamError, >, ) -> Self { Self { inner } } pub async fn recv( &mut self, ) -> Result< Option<ResponseStream>, aws_sdk_bedrockagentruntime::error::SdkError< ResponseStreamError, aws_smithy_types::event_stream::RawMessage, >, > { self.inner.recv().await } } #[tokio::main] async fn main() -> Result<(), Box<bedrockagentruntime::Error>> { let result = invoke_bedrock_agent("I need help.".to_string(), "123".to_string()).await?; println!("{}", result); Ok(()) } async fn invoke_bedrock_agent( prompt: String, session_id: String, ) -> Result<String, bedrockagentruntime::Error> { let sdk_config: SdkConfig = aws_config::defaults(BehaviorVersion::latest()) .region(BEDROCK_AGENT_REGION) .load() .await; let bedrock_client = bedrockagentruntime::Client::new(&sdk_config); let command_builder = bedrock_client .invoke_agent() .agent_id(BEDROCK_AGENT_ID) .agent_alias_id(BEDROCK_AGENT_ALIAS_ID) .session_id(session_id) .input_text(prompt); let response = command_builder.send().await?; let response_stream = response.completion; let event_receiver = EventReceiver::new(response_stream); process_agent_response_stream(event_receiver).await } async fn process_agent_response_stream( mut event_receiver: EventReceiver, ) -> Result<String, bedrockagentruntime::Error> { let mut full_agent_text_response = String::new(); while let Some(event_result) = event_receiver.recv().await? { match event_result { ResponseStream::Chunk(chunk) => { if let Some(bytes) = chunk.bytes { match String::from_utf8(bytes.into_inner()) { Ok(text_chunk) => { full_agent_text_response.push_str(&text_chunk); } Err(e) => { eprintln!("UTF-8 decoding error for chunk: {}", e); } } } } _ => { panic!("received an unhandled event type from Bedrock stream",); } } } Ok(full_agent_text_response) } #[cfg(test)] mod test { use super::*; #[tokio::test] async fn test_process_agent_response_stream() { let mut mock = MockEventReceiverImpl::default(); mock.expect_recv().times(1).returning(|| { Ok(Some( aws_sdk_bedrockagentruntime::types::ResponseStream::Chunk( aws_sdk_bedrockagentruntime::types::PayloadPart::builder() .set_bytes(Some(aws_smithy_types::Blob::new(vec![ 116, 101, 115, 116, 32, 99, 111, 109, 112, 108, 101, 116, 105, 111, 110, ]))) .build(), ), )) }); // end the stream mock.expect_recv().times(1).returning(|| Ok(None)); let response = process_agent_response_stream(mock).await.unwrap(); assert_eq!("test completion", response); } #[tokio::test] #[should_panic(expected = "received an unhandled event type from Bedrock stream")] async fn test_process_agent_response_stream_error() { let mut mock = MockEventReceiverImpl::default(); mock.expect_recv().times(1).returning(|| { Ok(Some( aws_sdk_bedrockagentruntime::types::ResponseStream::Trace( aws_sdk_bedrockagentruntime::types::TracePart::builder().build(), ), )) }); let _ = process_agent_response_stream(mock).await.unwrap(); } }-
Per i dettagli sulle API, consulta il riferimento InvokeAgent
all'API AWS SDK for Rust.
-