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.
This commit is contained in:
Karthik Chikmagalur 2024-03-07 17:03:21 -08:00
parent 199595b0c8
commit 2487ada4d6

View file

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