use_completions_vertex/
use_completions_vertex.rs1use anyhow::Result;
2use schemars::JsonSchema;
3use serde::Deserialize;
4use serde::Serialize;
5
6use allms::{llm::GoogleModels, Completions};
7
8mod utils;
9use utils::get_vertex_token;
10
11#[derive(Deserialize, Serialize, JsonSchema, Debug, Clone)]
12struct TranslationResponse {
13 pub spanish: String,
14 pub french: String,
15 pub german: String,
16 pub polish: String,
17}
18
19#[tokio::main]
20async fn main() -> Result<()> {
21 env_logger::init();
22
23 let google_token_str = get_vertex_token().await?;
25
26 let instructions =
28 "Translate the following English sentence to all the languages in the response type: Rust is best for working with LLMs";
29
30 let model = GoogleModels::Gemini2_5FlashLite;
32
33 let gemini_completion =
35 Completions::new(model, &google_token_str, None, None).version("google-vertex");
36
37 match gemini_completion
38 .get_answer::<TranslationResponse>(instructions)
39 .await
40 {
41 Ok(response) => println!("Vertex Gemini response: {:#?}", response),
42 Err(e) => eprintln!("Error: {:?}", e),
43 }
44
45 let fine_tuned_endpoint_id: String =
50 std::env::var("GOOGLE_VERTEX_ENDPOINT_ID").expect("GOOGLE_VERTEX_ENDPOINT_ID not set");
51 let model = GoogleModels::endpoint(&fine_tuned_endpoint_id);
52
53 let gemini_completion =
54 Completions::new(model, &google_token_str, None, None).version("google-vertex");
55
56 match gemini_completion
57 .get_answer::<TranslationResponse>(instructions)
58 .await
59 {
60 Ok(response) => println!("Vertex Gemini response: {:#?}", response),
61 Err(e) => eprintln!("Error: {:?}", e),
62 }
63
64 Ok(())
65}