branch: elpa/gptel
commit 8e0d6829c759a338d8ee5f81b9523a9be9a514d4
Author: Karthik Chikmagalur <[email protected]>
Commit: Karthik Chikmagalur <[email protected]>
gptel-openai: Fix collision with openrouter parsing (#669)
* gptel-openai.el (gptel-curl--parse-stream): Don't touch the
:reasoning key of fsm-info in OpenAI's `gptel-curl--parse-stream'
method unless using Openrouter. This was causing collisions with
the parsing of responses from other OpenAI-compatible backends
that include the reasoning text in the main response field.
This whole code path is a kludge, it might be better to just spin
out a gptel-openrouter backend inheriting from gptel-openai. This
would be similar to how gptel-deepseek works.
---
gptel-openai.el | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gptel-openai.el b/gptel-openai.el
index a550f0c12d..ea32b254ea 100644
--- a/gptel-openai.el
+++ b/gptel-openai.el
@@ -230,7 +230,9 @@ information if the stream contains it."
;; old tool block continues, so continue collecting
arguments in :partial_json
(push (plist-get func :arguments) (plist-get info
:partial_json)))))
;; Check for reasoning blocks, currently only used by
Openrouter
- (unless (eq (plist-get info :reasoning) 'done)
+ ;; FIXME: Should this be moved to a dedicated Openrouter
backend?
+ (unless (or (eq (plist-get info :reasoning) 'done)
+ (not (plist-member delta :reasoning)))
(if-let* ((reasoning-chunk (plist-get delta :reasoning))
;for openrouter
((not (eq reasoning-chunk :null))))
(plist-put info :reasoning