Git Product home page Git Product logo

Comments (7)

karthink avatar karthink commented on May 23, 2024

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.

minad avatar minad commented on May 23, 2024

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.

karthink avatar karthink commented on May 23, 2024

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.

minad avatar minad commented on May 23, 2024

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.

guibor avatar guibor commented on May 23, 2024

@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.

karthink avatar karthink commented on May 23, 2024

@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.

guibor avatar guibor commented on May 23, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.