Make content role optional

This commit is contained in:
2024-06-09 10:07:00 +01:00
parent 8e2c7dc41b
commit c4e9f78ec9
5 changed files with 8 additions and 8 deletions

View File

@@ -17,7 +17,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let prompt = "What is the airspeed of an unladen swallow?";
let request = CountTokensRequest {
contents: Content {
role: "user".to_string(),
role: Some("user".to_string()),
parts: Some(vec![Part::Text(prompt.to_string())]),
},
};

View File

@@ -15,16 +15,16 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
location_id,
);
let system_instruction = "Answer as if you were Winston Churchill";
let system_instruction = "Answer as if you were Yoda";
let prompt = "What is the airspeed of an unladen swallow?";
let request = GenerateContentRequest {
contents: vec![Content {
role: "user".to_string(),
role: Some("user".to_string()),
parts: Some(vec![Part::Text(prompt.to_string())]),
}],
system_instruction: Some(Content {
role: "system".to_string(),
role: None,
parts: Some(vec![Part::Text(system_instruction.to_string())]),
}),
..Default::default()

View File

@@ -152,7 +152,7 @@ impl<T: TokenProvider + Clone> GeminiClient<T> {
contents: messages
.iter()
.map(|m| Content {
role: m.role.to_string(),
role: Some(m.role.to_string()),
parts: Some(vec![Part::Text(m.text.clone())]),
})
.collect(),
@@ -181,7 +181,7 @@ impl<T: TokenProvider + Clone> GeminiClient<T> {
) -> Result<String> {
let request = GenerateContentRequest {
contents: vec![Content {
role: "user".to_string(),
role: Some("user".to_string()),
parts: Some(vec![Part::Text(prompt.to_string())]),
}],
generation_config: generation_config.cloned(),

View File

@@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Content {
pub role: String,
pub role: Option<String>,
pub parts: Option<Vec<Part>>,
}

View File

@@ -17,7 +17,7 @@ impl GenerateContentRequest {
pub fn from_prompt(prompt: &str, generation_config: Option<GenerationConfig>) -> Self {
GenerateContentRequest {
contents: vec![Content {
role: "user".to_string(),
role: Some("user".to_string()),
parts: Some(vec![Part::Text(prompt.to_string())]),
}],
generation_config,