branch: elpa/gptel
commit 71d1c7ec8f9ac1d991267e4576d89b6adb093584
Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>

    gptel-gemini: Add support for reasoning blocks (#882)
    
    * gptel-gemini.el (gptel--parse-response, gptel--request-data):
    Add support for thinking/reasoning blocks in responses from the
    Gemini API.  This is controlled by the existing
    `gptel-include-reasoning' option, same as for all the other APIs.
---
 gptel-gemini.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gptel-gemini.el b/gptel-gemini.el
index 5a76002161..26991f93ff 100644
--- a/gptel-gemini.el
+++ b/gptel-gemini.el
@@ -80,7 +80,15 @@ list."
     (cl-loop
      for part across parts
      for tx = (plist-get part :text)
-     if (and tx (not (eq tx :null))) collect tx into content-strs
+     if (and tx (not (eq tx :null)))
+     if (plist-get part :thought)
+     do (unless (plist-get info :reasoning-block)
+          (plist-put info :reasoning-block 'in))
+     (plist-put info :reasoning (concat (plist-get info :reasoning) tx))
+     else do
+     (if (eq (plist-get info :reasoning-block) 'in)
+       (plist-put info :reasoning-block t))
+     and collect tx into content-strs end
      else if (plist-get part :functionCall)
      collect (copy-sequence it) into tool-use
      finally do                         ;Add text and tool-calls to prompts 
list
@@ -134,6 +142,9 @@ list."
       (setq params
             (plist-put params
                        :maxOutputTokens gptel-max-tokens)))
+    (when gptel-include-reasoning
+      (setq params
+            (plist-put params :thinkingConfig '(:includeThoughts t))))
     (when params
       (plist-put prompts-plist
                  :generationConfig params))

Reply via email to