summaryrefslogtreecommitdiffstats
path: root/src/client/message.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-25 10:15:54 +0800
committerGitHub <noreply@github.com>2024-04-25 10:15:54 +0800
commit4db9b309803796bc5f996d0b3713344eb44207ec (patch)
treea0ba8f3a2da32e5392e22272c641e3939de49be6 /src/client/message.rs
parent8dacea4deb0fe67c0cdbe15bd47e6e50c1dd12a1 (diff)
downloadaichat-4db9b309803796bc5f996d0b3713344eb44207ec.tar.gz
refactor: rewrite list models of all clients (#436)
Diffstat (limited to 'src/client/message.rs')
-rw-r--r--src/client/message.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/client/message.rs b/src/client/message.rs
index f9978c5..9aff64a 100644
--- a/src/client/message.rs
+++ b/src/client/message.rs
@@ -114,6 +114,27 @@ pub struct ImageUrl {
pub url: String,
}
+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))
+ }
+ }
+ }
+}
+
+pub fn extract_sytem_message(messages: &mut Vec<Message>) -> Option<String> {
+ if messages[0].role.is_system() {
+ let system_message = messages.remove(0);
+ return Some(system_message.content.to_text());
+ }
+ None
+}
+
#[cfg(test)]
mod tests {
use super::*;