branch: externals/llm
commit 95b9b8b51503ecb5aad612f457ddf5872dbad85c
Author: Andrew Hyatt <ahy...@gmail.com>
Commit: Andrew Hyatt <ahy...@gmail.com>

    Improve error handling in Vertex and Ollama
---
 llm-ollama.el |  6 ++++++
 llm-vertex.el | 14 ++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/llm-ollama.el b/llm-ollama.el
index a7c2dae7fa..a89d948210 100644
--- a/llm-ollama.el
+++ b/llm-ollama.el
@@ -82,6 +82,12 @@ EMBEDDING-MODEL is the model to use for embeddings.  It is 
required."
 (cl-defmethod llm-provider-chat-timeout ((_ llm-ollama))
   llm-ollama-chat-timeout)
 
+(cl-defmethod llm-provider-embedding-extract-error ((_ llm-ollama) response)
+  (assoc-default 'error response))
+
+(cl-defmethod llm-provider-chat-extract-error ((_ llm-ollama) response)
+  (assoc-default 'error response))
+
 (cl-defmethod llm-provider-embedding-request ((provider llm-ollama) string)
   "Return the request to the server for the embedding of STRING.
 PROVIDER is the llm-ollama provider."
diff --git a/llm-vertex.el b/llm-vertex.el
index a69c6e2d48..5c51ea991a 100644
--- a/llm-vertex.el
+++ b/llm-vertex.el
@@ -151,8 +151,7 @@ KEY-GENTIME keeps track of when the key was generated, 
because the key must be r
                              (assoc-default 'content
                                             (aref (assoc-default 'candidates 
response) 0)))))
                  (when parts
-                   (assoc-default 'text (aref parts 0))))
-             "NOTE: No response was sent back by the LLM, the prompt may have 
violated safety checks."))))
+                   (assoc-default 'text (aref parts 0))))))))
 
 (cl-defmethod llm-provider-extract-function-calls ((provider llm-google) 
response)
   (if (vectorp response)
@@ -241,15 +240,18 @@ nothing to add, in which case it is nil."
            calls)))
 
 (cl-defmethod llm-provider-streaming-media-handler ((provider llm-google)
-                                                    msg-receiver fc-receiver _)
+                                                    msg-receiver fc-receiver
+                                                    err-receiver)
   (cons 'application/json
         (plz-media-type:application/json-array
          :handler
          (lambda (element)
+           (when-let ((err-response (llm-provider-chat-extract-error provider 
element)))
+             (funcall err-receiver err-response))
            (if-let ((response (llm-provider-chat-extract-result provider 
element)))
-           (funcall msg-receiver response)
-         (when-let ((fc (llm-provider-extract-function-calls provider 
element)))
-                 (funcall fc-receiver fc)))))))
+               (funcall msg-receiver response)
+             (when-let ((fc (llm-provider-extract-function-calls provider 
element)))
+               (funcall fc-receiver fc)))))))
 
 (cl-defmethod llm-provider-collect-streaming-function-data ((_ llm-google) 
data)
   (car data))

Reply via email to