[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/gptel aef57c2d3f: gptel-openai-extras: Fix Deepseek repeat
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/gptel aef57c2d3f: gptel-openai-extras: Fix Deepseek repeated roles error |
Date: |
Tue, 11 Mar 2025 19:03:04 -0400 (EDT) |
branch: elpa/gptel
commit aef57c2d3f99b894938450ec6a241a9959966973
Author: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
Commit: Karthik Chikmagalur <karthikchikmagalur@gmail.com>
gptel-openai-extras: Fix Deepseek repeated roles error
* gptel-openai-extras.el (gptel--parse-buffer): Add a cl-defmethod
for gptel-deepseek to merge successive prompts with the same
role (user/assistant) in the messages array. The Deepseek API
requires strictly alternating message roles in the conversation prompt.
---
gptel-openai-extras.el | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/gptel-openai-extras.el b/gptel-openai-extras.el
index e5b7b04dc6..c9e0630747 100644
--- a/gptel-openai-extras.el
+++ b/gptel-openai-extras.el
@@ -309,6 +309,25 @@ parameters."
(when (and (stringp reasoning) (length> reasoning 0))
(plist-put info :reasoning reasoning))))
+(cl-defmethod gptel--parse-buffer :around ((_backend gptel-deepseek)
max-entries)
+ "Merge successive prompts in the prompts list that have the same role.
+
+The Deepseek API requires strictly alternating roles (user/assistant) in
messages."
+ (let* ((prompts (cl-call-next-method))
+ (index prompts))
+ (prog1 prompts
+ (while index
+ (let ((p1 (car index))
+ (p2 (cadr index))
+ (rest (cdr index)))
+ (when (and p2 (equal (plist-get p1 :role)
+ (plist-get p2 :role)))
+ (setf (plist-get p1 :content)
+ (concat (plist-get p1 :content) "\n"
+ (plist-get p2 :content)))
+ (setcdr index (cdr rest)))
+ (setq index (cdr index)))))))
+
;;;###autoload
(cl-defun gptel-make-deepseek
(name &key curl-args stream key request-params
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/gptel aef57c2d3f: gptel-openai-extras: Fix Deepseek repeated roles error,
ELPA Syncer <=