Drops the serde_eventsource dependency
serde_eventsource is taking a while to update to reqwest 13.*. This PR implements handling SSE in the library code.
This commit is contained in:
37
examples/raw_sse.rs
Normal file
37
examples/raw_sse.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use std::env;
|
||||
|
||||
use google_genai::{
|
||||
network::event_source::EventSource,
|
||||
prelude::{Content, GenerateContentRequest, Role},
|
||||
};
|
||||
use tokio_stream::StreamExt;
|
||||
|
||||
static MODEL: &str = "gemini-2.5-flash";
|
||||
|
||||
#[tokio::main]
|
||||
pub async fn main() {
|
||||
let prompt = vec![
|
||||
Content::builder()
|
||||
.role(Role::User)
|
||||
.add_text_part("What is the airspeed of an unladen swallow?")
|
||||
.build(),
|
||||
];
|
||||
let request = GenerateContentRequest::builder().contents(prompt).build();
|
||||
let _ = dotenvy::dotenv();
|
||||
let api_key = env::var("GEMINI_API_KEY").unwrap();
|
||||
let client = reqwest::Client::new();
|
||||
let endpoint_url = format!(
|
||||
"https://generativelanguage.googleapis.com/v1beta/models/{MODEL}:streamGenerateContent?alt=sse"
|
||||
);
|
||||
let mut event_stream = client
|
||||
.post(&endpoint_url)
|
||||
.header("x-goog-api-key", api_key)
|
||||
.json(&request)
|
||||
.send()
|
||||
.await
|
||||
.unwrap()
|
||||
.event_stream();
|
||||
while let Some(event) = event_stream.next().await {
|
||||
println!("{event:?}")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user