mirror of https://github.com/0xplaygrounds/rig
32 lines
882 B
Rust
32 lines
882 B
Rust
use rig::{
|
|
providers::gemini::{self, completion::GEMINI_1_5_FLASH},
|
|
streaming::{stream_to_stdout, StreamingPrompt},
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), anyhow::Error> {
|
|
// Create streaming agent with a single context prompt
|
|
let agent = gemini::Client::from_env()
|
|
.agent(GEMINI_1_5_FLASH)
|
|
.preamble("Be precise and concise.")
|
|
.temperature(0.5)
|
|
.build();
|
|
|
|
// Stream the response and print chunks as they arrive
|
|
let mut stream = agent
|
|
.stream_prompt("When and where and what type is the next solar eclipse?")
|
|
.await?;
|
|
|
|
stream_to_stdout(agent, &mut stream).await?;
|
|
|
|
if let Some(response) = stream.response {
|
|
println!(
|
|
"Usage: {:?} tokens",
|
|
response.usage_metadata.total_token_count
|
|
);
|
|
};
|
|
|
|
println!("Message: {:?}", stream.message);
|
|
Ok(())
|
|
}
|