branch: externals/llm commit 006cd1d6b2ccd41dedb5c059322df5b1ec8b3b7c Author: Andrew Hyatt <ahy...@gmail.com> Commit: Andrew Hyatt <ahy...@gmail.com>
Handle safety related errors in Vertex / Gemini --- llm-vertex.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/llm-vertex.el b/llm-vertex.el index 1764f24b32..46fe59c95c 100644 --- a/llm-vertex.el +++ b/llm-vertex.el @@ -117,10 +117,17 @@ KEY-GENTIME keeps track of when the key was generated, because the key must be r (llm-provider-chat-extract-error provider err-response)) (cl-defmethod llm-provider-chat-extract-error ((_ llm-google) err-response) - (when-let ((err (assoc-default 'error err-response))) + (if-let ((err (assoc-default 'error err-response))) (format "Problem calling GCloud Vertex AI: status: %s message: %s" (assoc-default 'code err) - (assoc-default 'message err)))) + (assoc-default 'message err)) + (if-let ((candidates (assoc-default 'candidates err-response))) + (when (and (vectorp candidates) + (> (length candidates) 0) + (equal "SAFETY" + (assoc-default 'finishReason (aref candidates 0)))) + (format "Could not finish due to detected Gemini safety violations: %s" + (assoc-default 'safetyRatings (aref candidates 0))))))) (cl-defmethod llm-provider-embedding-request ((provider llm-vertex) string) `(("instances" . [(("content" . ,string))])))