summaryrefslogtreecommitdiffstats
path: root/src/client/common.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-12-19 20:37:53 +0800
committerGitHub <noreply@github.com>2023-12-19 20:37:53 +0800
commit6286251d320a7f512e49534c30b42452d30d93cc (patch)
treed2c08ea4ff1f48042666624ebbb821e3136854c5 /src/client/common.rs
parent3adfeb1ae7c22e54570df69053aa3db226733384 (diff)
downloadaichat-6286251d320a7f512e49534c30b42452d30d93cc.tar.gz
feat: support gemini (#273)
Diffstat (limited to 'src/client/common.rs')
-rw-r--r--src/client/common.rs15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/client/common.rs b/src/client/common.rs
index 2716d87..98cffa2 100644
--- a/src/client/common.rs
+++ b/src/client/common.rs
@@ -1,4 +1,4 @@
-use super::{openai::OpenAIConfig, ClientConfig, Message};
+use super::{openai::OpenAIConfig, ClientConfig, Message, MessageContent};
use crate::{
config::{GlobalConfig, Input},
@@ -308,6 +308,19 @@ where
Ok(())
}
+pub fn patch_system_message(messages: &mut Vec<Message>) {
+ if messages[0].role.is_system() {
+ let system_message = messages.remove(0);
+ if let (Some(message), MessageContent::Text(system_text)) =
+ (messages.get_mut(0), system_message.content)
+ {
+ if let MessageContent::Text(text) = message.content.clone() {
+ message.content = MessageContent::Text(format!("{}\n\n{}", system_text, text))
+ }
+ }
+ }
+}
+
fn set_config_value(json: &mut Value, path: &str, kind: &PromptKind, value: &str) {
let segs: Vec<&str> = path.split('.').collect();
match segs.as_slice() {