1
0
Fork 0

Refactored summarizer summary type selection

This commit is contained in:
Bram Schoenmakers 2024-02-18 22:17:21 +01:00
parent 01a761a2ff
commit f5cc1475bb
Signed by: bram
GPG key ID: 0CCD19DFDC63258F
2 changed files with 22 additions and 2 deletions

View file

@ -319,6 +319,17 @@ https://www.example.com"
(setq kagi-summarizer-engine "steve")
(expect (kagi-summarize dummy-https-url) :to-equal dummy-output)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "engine") :to-equal "cecil"))))))
(expect (map-elt args "engine") :to-equal "cecil")))
(it "returns a summary when the take-away style is requested"
(expect (kagi-summarize just-enough-text-input nil nil 'takeaway) :to-equal dummy-output))
(it "uses the summary style when an invalid format is given"
(kagi-summarize just-enough-text-input nil nil 'invalid)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "summary_type") :to-equal 'summary)))
(it "uses the summary style when an invalid format is configured"
(setq kagi-summarizer-default-summary-format 'invalid)
(kagi-summarize just-enough-text-input)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "summary_type") :to-equal 'summary))))))
;;; kagi-test.el ends here

11
kagi.el
View file

@ -551,6 +551,14 @@ to `kagi-summarizer-default-language'."
(downcase kagi-summarizer-engine))
(t "cecil")))
(defun kagi--summarizer-format (hint)
"Return a valid summary type based on the type given in HINT."
(let ((choices '(summary takeaway)))
(cond ((seq-contains-p choices hint) hint)
((seq-contains-p choices kagi-summarizer-default-summary-format)
kagi-summarizer-default-summary-format)
(t 'summary))))
(defun kagi-summarize (text-or-url &optional language engine format)
"Return the summary of the given TEXT-OR-URL.
@ -567,7 +575,8 @@ of text and `takeaway' returns a bullet list."
(kagi--summarizer-determine-language language))
(kagi-summarizer-engine
(kagi--summarizer-engine engine))
(kagi-summarizer-default-summary-format format))
(kagi-summarizer-default-summary-format
(kagi--summarizer-format format)))
(if-let* ((response (if (kagi--url-p text-or-url)
(kagi--call-url-summarizer text-or-url)
(kagi--call-text-summarizer text-or-url)))