[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ellama 146da1c611 2/7: Refactor translation pipeline. U
From: |
ELPA Syncer |
Subject: |
[elpa] externals/ellama 146da1c611 2/7: Refactor translation pipeline. Use correct providers. |
Date: |
Sun, 25 Feb 2024 12:58:13 -0500 (EST) |
branch: externals/ellama
commit 146da1c611c857d9578f8fce8b2daf6f8f409292
Author: Sergey Kostyaev <sskostyaev@gmail.com>
Commit: Sergey Kostyaev <sskostyaev@gmail.com>
Refactor translation pipeline. Use correct providers.
---
ellama.el | 119 ++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 66 insertions(+), 53 deletions(-)
diff --git a/ellama.el b/ellama.el
index 17c766d39f..5a0e07c91a 100644
--- a/ellama.el
+++ b/ellama.el
@@ -965,6 +965,71 @@ Will call `ellama-chat-done-callback' on TEXT."
(when ellama-chat-done-callback
(funcall ellama-chat-done-callback text)))
+(defun ellama--translate-generated-text-on-done (translation-buffer)
+ "Translate generated text into TRANSLATION-BUFFER."
+ (lambda (generated)
+ (ellama-chat-done generated)
+ (display-buffer translation-buffer)
+ (with-current-buffer translation-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (ellama-stream
+ (format "Translate this text to %s.
+Original text:
+%s
+Translation to %s:
+"
+ ellama-language
+ generated
+ ellama-language)
+ :provider (or ellama-translation-provider ellama-provider)
+ :on-done #'ellama-chat-done
+ :filter (when (derived-mode-p 'org-mode)
+ #'ellama--translate-markdown-to-org-filter))))))
+
+(defun ellama--call-llm-with-translated-prompt (buffer session
translation-buffer)
+ "Call llm with translated text in BUFFER with SESSION from
TRANSLATION-BUFFER."
+ (lambda (result)
+ (ellama-chat-done result)
+ (save-excursion
+ (goto-char (point-max))
+ (delete-char -2)
+ (delete-char (- (length result))))
+ (display-buffer buffer)
+ (with-current-buffer buffer
+ (save-excursion
+ (goto-char (point-max))
+ (insert ellama-nick-prefix " " ellama-user-nick ":\n"
+ (ellama--format-context) result "\n\n"
+ ellama-nick-prefix " " ellama-assistant-nick ":\n")
+ (ellama-stream result
+ :session session
+ :on-done (ellama--translate-generated-text-on-done
translation-buffer)
+ :filter (when (derived-mode-p 'org-mode)
+
#'ellama--translate-markdown-to-org-filter))))))
+
+(defun ellama--translate-interaction (prompt translation-buffer buffer session)
+ "Translate chat PROMPT in TRANSLATION-BUFFER for BUFFER with SESSION."
+ (display-buffer translation-buffer)
+ (with-current-buffer translation-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (insert ellama-nick-prefix " " ellama-user-nick ":\n"
+ (ellama--format-context) prompt "\n\n"
+ ellama-nick-prefix " " ellama-assistant-nick ":\n")
+ (ellama-stream
+ (format "Translate this text to english.
+Original text:
+%s
+Translation to english:
+"
+ prompt)
+ :provider (or ellama-translation-provider ellama-provider)
+ :filter (when (derived-mode-p 'org-mode)
+ #'ellama--translate-markdown-to-org-filter)
+ :on-done
+ (ellama--call-llm-with-translated-prompt buffer session
translation-buffer)))))
+
;;;###autoload
(defun ellama-chat (prompt &optional create-session &rest args)
"Send PROMPT to ellama chat with conversation history.
@@ -1008,59 +1073,7 @@ ARGS contains keys for fine control.
(ellama--get-translation-file-name
file-name)))
(get-buffer-create (ellama-session-id
session))))))
(if ellama-chat-translation-enabled
- (progn
- (display-buffer translation-buffer)
- (with-current-buffer translation-buffer
- (save-excursion
- (goto-char (point-max))
- (insert ellama-nick-prefix " " ellama-user-nick ":\n"
- (ellama--format-context) prompt "\n\n"
- ellama-nick-prefix " " ellama-assistant-nick ":\n")
- (ellama-stream
- (format "Translate this text to english.
-Original text:
-%s
-Translation to english:
-"
- prompt)
- :filter (when (derived-mode-p 'org-mode)
- #'ellama--translate-markdown-to-org-filter)
- :on-done
- (lambda (result)
- (ellama-chat-done result)
- (save-excursion
- (goto-char (point-max))
- (delete-char -2)
- (delete-char (- (length result))))
- (display-buffer buffer)
- (with-current-buffer buffer
- (save-excursion
- (goto-char (point-max))
- (insert ellama-nick-prefix " " ellama-user-nick ":\n"
- (ellama--format-context) result "\n\n"
- ellama-nick-prefix " " ellama-assistant-nick ":\n")
- (ellama-stream result
- :session session
- :on-done (lambda (generated)
- (ellama-chat-done generated)
- (display-buffer
translation-buffer)
- (with-current-buffer
translation-buffer
- (save-excursion
- (goto-char (point-max))
- (ellama-stream
- (format "Translate this
text to %s.
-Original text:
-%s
-Translation to %s:
-"
- ellama-language
- generated
- ellama-language)
- :on-done #'ellama-chat-done
- :filter (when
(derived-mode-p 'org-mode)
-
#'ellama--translate-markdown-to-org-filter)))))
- :filter (when (derived-mode-p 'org-mode)
-
#'ellama--translate-markdown-to-org-filter)))))))))
+ (ellama--translate-interaction prompt translation-buffer buffer session)
(display-buffer buffer)
(with-current-buffer buffer
(save-excursion
- [elpa] externals/ellama updated (27b66a84c5 -> fdd8e6e51f), ELPA Syncer, 2024/02/25
- [elpa] externals/ellama 70e0e43acd 4/7: Use ellama translation provider in ellama-translate command, ELPA Syncer, 2024/02/25
- [elpa] externals/ellama 48f4e4beb3 5/7: Add info about translation into documentation., ELPA Syncer, 2024/02/25
- [elpa] externals/ellama fdd8e6e51f 7/7: Bump version, ELPA Syncer, 2024/02/25
- [elpa] externals/ellama 146da1c611 2/7: Refactor translation pipeline. Use correct providers.,
ELPA Syncer <=
- [elpa] externals/ellama ab3b7f36ed 1/7: Add chat translation, ELPA Syncer, 2024/02/25
- [elpa] externals/ellama fd396fa8fb 3/7: Fix ellama chat provider argument, ELPA Syncer, 2024/02/25
- [elpa] externals/ellama 10f5ee56df 6/7: Merge pull request #83 from s-kostyaev/add-chat-translation, ELPA Syncer, 2024/02/25