summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-05 15:07:21 +0800
committerGitHub <noreply@github.com>2024-06-05 15:07:21 +0800
commitd4e043e5bf1a939ac2269d53a5ae6250101f9f41 (patch)
treedcba26bc75271b466a5ed230abef3c17216ccee2 /src
parentb17719457bb098b6572671dcb5cc60a0241c4b8f (diff)
downloadaichat-d4e043e5bf1a939ac2269d53a5ae6250101f9f41.tar.gz
feat: use systemInstruction for gemini-1.5-* models (#564)
Diffstat (limited to 'src')
-rw-r--r--src/client/vertexai.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/client/vertexai.rs b/src/client/vertexai.rs
index dc75c9f..5211438 100644
--- a/src/client/vertexai.rs
+++ b/src/client/vertexai.rs
@@ -262,7 +262,12 @@ pub fn gemini_build_chat_completions_body(
stream: _,
} = data;
- patch_system_message(&mut messages);
+ let mut system_message = None;
+ if model.name().starts_with("gemini-1.5") {
+ system_message = extract_system_message(&mut messages);
+ } else {
+ patch_system_message(&mut messages);
+ };
let mut network_image_urls = vec![];
let contents: Vec<Value> = messages
@@ -333,6 +338,10 @@ pub fn gemini_build_chat_completions_body(
let mut body = json!({ "contents": contents, "generationConfig": {} });
+ if let Some(v) = system_message {
+ body["systemInstruction"] = json!({ "parts": [{ "text": v }] });
+ }
+
if let Some(v) = model.max_tokens_param() {
body["generationConfig"]["maxOutputTokens"] = v.into();
}