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))