From 2487ada4d659fe9ef4129a876178a99204bffcb0 Mon Sep 17 00:00:00 2001 From: Karthik Chikmagalur Date: Thu, 7 Mar 2024 17:03:21 -0800 Subject: [PATCH] gptel-anthropic: Handle missing response chunks (trial) gptel-anthropic.el (gptel-curl--parse-stream): Reset point explicitly when parsing streaming responses returned by the Anthropic API. Try to address #233. --- gptel-anthropic.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gptel-anthropic.el b/gptel-anthropic.el index c742c7f..fa0aed0 100644 --- a/gptel-anthropic.el +++ b/gptel-anthropic.el @@ -41,9 +41,11 @@ (cl-defmethod gptel-curl--parse-stream ((_backend gptel-anthropic) _info) (let* ((json-object-type 'plist) - (content-strs)) + (content-strs) + (pt (point))) (condition-case nil (while (re-search-forward "^event: " nil t) + (setq pt (match-beginning 0)) (cond ((looking-at "content_block_\\(?:start\\|delta\\|stop\\)") (save-match-data @@ -52,8 +54,7 @@ (content (map-nested-elt response '(:delta :text)))) (push content content-strs)))))) - (error - (goto-char (match-beginning 0)))) + (error (goto-char pt))) (apply #'concat (nreverse content-strs)))) (cl-defmethod gptel--parse-response ((_backend gptel-anthropic) response _info)