[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elisa d58e172912 48/98: Make web search async
From: |
ELPA Syncer |
Subject: |
[elpa] externals/elisa d58e172912 48/98: Make web search async |
Date: |
Wed, 17 Jul 2024 18:58:03 -0400 (EDT) |
branch: externals/elisa
commit d58e172912d6409fa2703dc7204607b4924bab57
Author: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Commit: Sergey Kostyaev <kostyaev.sergey2@wb.ru>
Make web search async
---
elisa.el | 46 ++++++++++++++++++++++++++++++----------------
1 file changed, 30 insertions(+), 16 deletions(-)
diff --git a/elisa.el b/elisa.el
index 3430ed1b29..86b8a22cf1 100644
--- a/elisa.el
+++ b/elisa.el
@@ -549,10 +549,9 @@ You can customize `elisa-searxng-url' to use non local
instance."
(string-trim)
(replace-regexp-in-string "[[:space:]]+" " OR ")))
-(defun elisa-web-search (prompt)
- "Search the web for PROMPT."
- (interactive "sAsk elisa with web search: ")
- (message "searching the web")
+(defun elisa--web-search (prompt)
+ "Search the web for PROMPT.
+Return sqlite query that extract data for adding to context."
(sqlite-execute
elisa-db
(format
@@ -651,13 +650,25 @@ LEFT JOIN data d ON hybrid_search.rowid = d.rowid
(elisa-fts-query
prompt)
elisa-limit)))
- ;; (message "query:\n%s" query)
- (mapc
- (lambda (row)
- (when-let ((url (cl-second row))
- (text (cl-third row)))
- (ellama-context-add-webpage-quote-noninteractive url url text)))
- (sqlite-select elisa-db query))))
+ query)))
+
+;;;###autoload
+(defun elisa-web-search (prompt)
+ "Search the web for PROMPT."
+ (interactive "sAsk elisa with web search: ")
+ (message "searching the web")
+ (elisa--async-do (lambda () (elisa--web-search prompt))
+ (lambda (query)
+ (elisa-retrieve-ask query prompt))))
+
+(defun elisa-retrieve-ask (query prompt)
+ "Retrieve data with QUERY and ask elisa for PROMPT."
+ (mapc
+ (lambda (row)
+ (when-let ((url (cl-second row))
+ (text (cl-third row)))
+ (ellama-context-add-webpage-quote-noninteractive url url text)))
+ (sqlite-select elisa-db query))
(ellama-chat prompt nil :provider elisa-chat-provider))
(defun elisa-get-builtin-manuals ()
@@ -705,7 +716,7 @@ LEFT JOIN data d ON hybrid_search.rowid = d.rowid
(elisa--init-db db)
(setq elisa-db db)))
-(defun elisa--async-do-parse (func)
+(defun elisa--async-do (func &optional on-done)
"Parse asyncronously with FUNC."
(async-start `(lambda ()
,(async-inject-variables "elisa-embeddings-provider")
@@ -713,13 +724,16 @@ LEFT JOIN data d ON hybrid_search.rowid = d.rowid
,(async-inject-variables "elisa-find-executable")
,(async-inject-variables "elisa-tar-executable")
,(async-inject-variables "elisa-semantic-split-function")
+ ,(async-inject-variables "elisa-web-search-function")
,(async-inject-variables "elisa-breakpoint-threshold-amount")
,(async-inject-variables "load-path")
(require 'elisa)
(,func))
- (lambda (_)
+ (lambda (res)
(sqlite-close elisa-db)
(elisa--reopen-db)
+ (when on-done
+ (funcall on-done res))
(message "%s done."
func))))
@@ -734,21 +748,21 @@ LEFT JOIN data d ON hybrid_search.rowid = d.rowid
"Parse builtin manuals asyncronously."
(interactive)
(message "Begin parsing builtin manuals.")
- (elisa--async-do-parse 'elisa-parse-builtin-manuals))
+ (elisa--async-do 'elisa-parse-builtin-manuals))
;;;###autoload
(defun elisa-async-parse-external-manuals ()
"Parse external manuals asyncronously."
(interactive)
(message "Begin parsing external manuals.")
- (elisa--async-do-parse 'elisa-parse-external-manuals))
+ (elisa--async-do 'elisa-parse-external-manuals))
;;;###autoload
(defun elisa-async-parse-all-manuals ()
"Parse all manuals asyncronously."
(interactive)
(message "Begin parsing manuals.")
- (elisa--async-do-parse 'elisa-parse-all-manuals))
+ (elisa--async-do 'elisa-parse-all-manuals))
;;;###autoload
(defun elisa-chat (prompt)
- [elpa] externals/elisa 2d8c6ef402 56/98: Use WAL for sqlite for handle concurrency, (continued)
- [elpa] externals/elisa 2d8c6ef402 56/98: Use WAL for sqlite for handle concurrency, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 27fc248901 71/98: Remove files metadata on collection remove, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 5bf5d63fc1 07/98: Improve defaults, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 61dd36890a 21/98: Enable load file check in CI, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 1f5393d37e 22/98: Warn user instead of network call during package loading, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 80401a0b52 30/98: Search for gzipped builtin manuals, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa c59d491e18 35/98: Add prompt rewriting with ellama-chain, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 3874a7007c 36/98: Improve semantic split api, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa f2bf34b201 39/98: Improve sqlite escape function, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 45b854ba2d 46/98: Fix linter warning, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa d58e172912 48/98: Make web search async,
ELPA Syncer <=
- [elpa] externals/elisa f312d189f2 51/98: Fix one word lines in webpage quotes parsed asyncronously, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 0fc73b4b9a 69/98: Add instruction to elisa-chat, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 4710f87851 72/98: Refactor parsing info manuals, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 86f4ea0afb 74/98: Fix parsing info manuals with infinite loop, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 9c7004e15c 77/98: Add functionality to parse web pages and add them to collections, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 4063c45908 78/98: Add custom variables documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 0c432dd1c8 81/98: Add commands to documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 29c17f86a7 83/98: Update package description, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa cb69d24b0d 88/98: Improve documentation, ELPA Syncer, 2024/07/17
- [elpa] externals/elisa 8d0ad42134 90/98: Small documentation markup fixes, ELPA Syncer, 2024/07/17