Update GCP Auth to 0.12

This commit is contained in:
2024-06-04 07:25:01 +01:00
parent 1bd5ab830a
commit 14010f9f78
8 changed files with 68 additions and 100 deletions

View File

@@ -1,61 +1,59 @@
use std::{sync::Arc, time::Duration};
use console::style;
use dialoguer::{theme::ColorfulTheme, Input};
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
use indicatif::{ProgressBar, ProgressStyle};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;
tracing_subscriber::fmt().init();
let gemini = GeminiClient::new(
authentication_manager,
api_endpoint,
project_id,
location_id,
);
tracing::info!("Starting conversation...");
let mut conversation = Dialogue::new("gemini-pro");
loop {
let message: String = Input::with_theme(&ColorfulTheme::default())
.with_prompt("user")
.interact_text()?;
// Exit the conversation if the user types "exit"
if message == "exit" {
break;
}
// Show a spinner while the model is thinking.
let progress = ProgressBar::new_spinner();
progress.enable_steady_tick(Duration::from_millis(120));
progress.set_style(ProgressStyle::with_template("{spinner:.green} {msg}")?);
progress.set_message("Thinking...");
// Prompt the model with the conversation so far.
let response = conversation.do_turn(&gemini, &message).await?;
// Stop the spinner and clear the terminal.
progress.finish_and_clear();
// Print the model's response.
println!(
"{} {} {}",
style(response.role.to_string()).bold(),
style("·").dim(),
style(&response.text).cyan()
);
}
Ok(())
}
use console::style;
use dialoguer::{theme::ColorfulTheme, Input};
use gemini_rs::prelude::*;
use std::time::Duration;
use indicatif::{ProgressBar, ProgressStyle};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;
tracing_subscriber::fmt().init();
let gemini = GeminiClient::new(
authentication_manager,
api_endpoint,
project_id,
location_id,
);
tracing::info!("Starting conversation...");
let mut conversation = Dialogue::new("gemini-pro");
loop {
let message: String = Input::with_theme(&ColorfulTheme::default())
.with_prompt("user")
.interact_text()?;
// Exit the conversation if the user types "exit"
if message == "exit" {
break;
}
// Show a spinner while the model is thinking.
let progress = ProgressBar::new_spinner();
progress.enable_steady_tick(Duration::from_millis(120));
progress.set_style(ProgressStyle::with_template("{spinner:.green} {msg}")?);
progress.set_message("Thinking...");
// Prompt the model with the conversation so far.
let response = conversation.do_turn(&gemini, &message).await?;
// Stop the spinner and clear the terminal.
progress.finish_and_clear();
// Print the model's response.
println!(
"{} {} {}",
style(response.role.to_string()).bold(),
style("·").dim(),
style(&response.text).cyan()
);
}
Ok(())
}

View File

@@ -1,12 +1,8 @@
use std::sync::Arc;
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;

View File

@@ -1,13 +1,9 @@
use std::sync::Arc;
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt().init();
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;

View File

@@ -1,12 +1,8 @@
use std::sync::Arc;
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;

View File

@@ -1,12 +1,8 @@
use std::sync::Arc;
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;

View File

@@ -1,12 +1,8 @@
use std::sync::Arc;
use gemini_rs::prelude::*;
use gcp_auth::AuthenticationManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let authentication_manager = Arc::new(AuthenticationManager::new().await?);
let authentication_manager = gcp_auth::provider().await?;
let api_endpoint = std::env::var("API_ENDPOINT")?;
let project_id = std::env::var("PROJECT_ID")?;
let location_id = std::env::var("LOCATION_ID")?;