branch: externals/llm commit 9658faa37e2f07a53961c8a87736a4d6f9054468 Author: Andrew Hyatt <ahy...@gmail.com> Commit: Andrew Hyatt <ahy...@gmail.com>
Make embedding-async callbacks also in original buffer This should finish all callback-in-buffer work. --- llm-ollama.el | 9 ++++++--- llm-openai.el | 17 ++++++++++++----- llm-vertex.el | 12 +++++++----- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/llm-ollama.el b/llm-ollama.el index 7fd6afdec9..c004679b49 100644 --- a/llm-ollama.el +++ b/llm-ollama.el @@ -79,14 +79,17 @@ PROVIDER is the llm-ollama provider." (assoc-default 'embedding response)) (cl-defmethod llm-embedding-async ((provider llm-ollama) string vector-callback error-callback) - (llm-request-async (llm-ollama--url provider "embeddings") + (let ((buf (current-buffer))) + (llm-request-async (llm-ollama--url provider "embeddings") :data (llm-ollama--embedding-request provider string) :on-success (lambda (data) - (funcall vector-callback (llm-ollama--embedding-extract-response data))) + (llm-request-callback-in-buffer + buf vector-callback (llm-ollama--embedding-extract-response data))) :on-error (lambda (_ _) ;; The problem with ollama is that it doesn't ;; seem to have an error response. - (funcall error-callback 'error "Unknown error calling ollama")))) + (llm-request-callback-in-buffer + buf error-callback 'error "Unknown error calling ollama"))))) (cl-defmethod llm-embedding ((provider llm-ollama) string) (llm-ollama--embedding-extract-response diff --git a/llm-openai.el b/llm-openai.el index 6165ad1af6..45b53e0e38 100644 --- a/llm-openai.el +++ b/llm-openai.el @@ -81,14 +81,17 @@ PROVIDER is the llm-openai provider." (cl-defmethod llm-embedding-async ((provider llm-openai) string vector-callback error-callback) (unless (llm-openai-key provider) (error "To call Open AI API, add a key to the `llm-openai' provider.")) - (llm-request-async "https://api.openai.com/v1/embeddings" + (let ((buf (current-buffer))) + (llm-request-async "https://api.openai.com/v1/embeddings" :headers `(("Authorization" . ,(format "Bearer %s" (llm-openai-key provider)))) :data (llm-openai--embedding-request provider string) :on-success (lambda (data) - (funcall vector-callback (llm-openai--embedding-extract-response data))) + (llm-request-callback-in-buffer + buf vector-callback (llm-openai--embedding-extract-response data))) :on-error (lambda (_ data) - (funcall error-callback 'error - (llm-openai--error-message data))))) + (llm-request-callback-in-buffer + buf error-callback 'error + (llm-openai--error-message data)))))) (cl-defmethod llm-embedding ((provider llm-openai) string) (unless (llm-openai-key provider) @@ -117,7 +120,11 @@ STREAMING if non-nil, turn on response streaming." (car example) (cdr example))) (llm-chat-prompt-examples prompt) "\n")))) - (when system-prompt + ;; Add the system prompt only if there is no existing one. + (when (and system-prompt + (not (cl-some (lambda (p) + (eq (llm-chat-prompt-interaction-role p) 'system)) + (llm-chat-prompt-interactions prompt)))) (push (make-llm-chat-prompt-interaction :role 'system :content system-prompt) (llm-chat-prompt-interactions prompt))) (when streaming (push `("stream" . ,t) request-alist)) diff --git a/llm-vertex.el b/llm-vertex.el index a896cf7098..4ad59ff33e 100644 --- a/llm-vertex.el +++ b/llm-vertex.el @@ -108,15 +108,17 @@ KEY-GENTIME keeps track of when the key was generated, because the key must be r (cl-defmethod llm-embedding-async ((provider llm-vertex) string vector-callback error-callback) (llm-vertex-refresh-key provider) - (llm-request-async (llm-vertex--embedding-url provider) + (let ((buf (current-buffer))) + (llm-request-async (llm-vertex--embedding-url provider) :headers `(("Authorization" . ,(format "Bearer %s" (llm-vertex-key provider)))) :data `(("instances" . [(("content" . ,string))])) :on-success (lambda (data) - (funcall vector-callback (llm-vertex--embedding-extract-response data))) + (llm-request-callback-in-buffer + buf vector-callback (llm-vertex--embedding-extract-response data))) :on-error (lambda (_ data) - (funcall error-callback - 'error - (llm-vertex--error-message data))))) + (llm-request-callback-in-buffer + buf error-callback + 'error (llm-vertex--error-message data)))))) (cl-defmethod llm-embedding ((provider llm-vertex) string) (llm-vertex-refresh-key provider)