1use futures_util::StreamExt;
2use google_genai::datatypes::{Content, GenerateContentParameters, Part};
3use std::env;
4
5#[tokio::main]
6async fn main() -> google_genai::error::Result<()> {
7 let api_key = env::var("GOOGLEAI_API_KEY").expect("GOOGLE_API_KEY must be set");
8
9 let params =
10 GenerateContentParameters::default().contents(vec![Content::default().parts(vec![
11 Part::default().text("Write a story about a magic backpack."),
12 ])]);
13
14 let request = google_genai::datatypes::GenerateContentReq::default()
15 .contents(params.contents.unwrap())
16 .model(params.model.unwrap());
17
18 let mut stream = google_genai::generate_content_stream(&api_key, request).await?;
19
20 while let Some(response) = stream.next().await {
21 match response {
22 Ok(content) => {
23 if content.candidates.is_none() {
24 break;
26 }
27 if let Some(candidates) = content.candidates {
28 for candidate in candidates {
29 if let Some(content) = candidate.content {
30 if let Some(parts) = content.parts {
31 for part in parts {
32 if let Some(text) = part.text {
33 print!("{}", text);
34 }
35 }
36 }
37 }
38 }
39 }
40 }
41 Err(e) => eprintln!("Error: {}", e),
42 }
43 }
44
45 Ok(())
46}