Comments (7)
Yes, this needs to be fixed. I think multiple queries from one buffer is fine -- for example if you are in a non-dedicated (i.e. regular) buffer and want to ask multiple unrelated queries:
How many satellites are in orbit around the earth?
What is speedrunning in videogames and when did this practice begin?
You can select each line and call gptel-send
. However, we want to avoid sending the same request multiple times. I'll create a list of hashes (buffer-local) for currently active queries and check against that. If you have a better idea please let me know.
from gptel.
I think it is okay to keep it simple and just allow a single requetat a time, since the API is not fast anyway.
from gptel.
My reason for enabling multiple parallel requests per buffer is because the API is not fast. That said one request per buffer is a simpler solution, I can implement it and see if it feels limiting in usage.
from gptel.
Sure, but I usually start a query and then refine the prompt. Starting multiple independent queries seems only useful if you run multiple "conversations" in parallel. There is also the danger of hitting some rate limit. Maybe each gptel buffer could run independently.
from gptel.
@karthink perhaps it would be possible to configure a gptel-send-hook
variable, and for anyone interested in avoiding multiple parallel queries it would be possible to add a gptel-abort
to the hook?
It would be imperfect as it would not be buffer-specific but users could configure that, or even make the hook local to certain types of buffers (e.g if using the gptel conversational buffer it is more likely that this behavior would be desired)
from gptel.
@guibor here is a recipe for disallowing multiple requests from one buffer -- only works with Curl though:
(defun gptel-throttle-request (orig-fn &rest args)
(if (seq-some (lambda (request)
(eq (current-buffer)
(plist-get request :buffer)))
(map-values gptel-curl--process-alist))
(message "gptel request cancelled: there is an active request in buffer %s"
(buffer-name (current-buffer)))
(apply orig-fn args)))
(advice-add 'gptel-request :around #'gptel-throttle-request)
I can add it as an option to gptel but it needs more work to support url-retrieve
.
from gptel.
Hi @karthink this is really awesome and seems to work really well.
I have one issue though: if I add the advice before my first query, I get the following error:
seq-some: Symbol’s value as variable is void: gptel-curl--process-alist
So I need to remove the advice, use gptel-send at least once, and only then add the advice back.
Does this make sense? Any reason why?
(Thanks again for all your amazing work!)
from gptel.
Related Issues (20)
- gptel-org-branching-context requires Org 9.7 (unreleased) HOT 6
- Watermarking / inline annotation of LLM generated content vs prompt content HOT 2
- Org mode response formatting HOT 8
- Ollama as default backend HOT 1
- Perplexity: citations HOT 14
- Different results between gptel+ChatGPT and chat.openai.com HOT 2
- Auto Fill mode should be respected HOT 4
- Wrong language in the source block header HOT 4
- Help using local backends HOT 2
- Interacting with privateGPT (specifically for RAG) HOT 10
- Is it possible to interact with LLMs provided by an Open WebUI? HOT 1
- Error with the local LLM scripts in init file HOT 5
- How to disable the highlight after its done generating HOT 9
- How to register additional backends in doom emacs? HOT 4
- Enhance `gptel` to allow selecting from list of existing gptel buffers, when called interactively HOT 1
- [enhancement] Provide information about the different models HOT 1
- Updating `DoomEmacs`/`gptel` and chaing lightly configuration => only garbage generated now... HOT 8
- (gptel-menu) Truncated width of system message is wrong
- Better prefix-arg behavior for M-x gptel
- gptel-request wrong type argument HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gptel.