Replies: 3 comments 3 replies
-
@daedsidog thanks for the detailed questions! Yes, there are plans afoot for better composition. Sorry for the delay, I'm currently held up with some other projects. Will respond in detail soon! |
Beta Was this translation helpful? Give feedback.
-
@daedsidog sorry, I was held up trying to implement #514 -- which you may find interesting. Answering your questions with a detailed plan is the next TODO on my gptel agenda. |
Beta Was this translation helpful? Give feedback.
-
I read your post in full, but will respond to the TL;DR questions as it summarizes the issues well. For reference, here is an export of my notes on the gptel project. The items are sorted in priority order, and the top 3 items are usually what I'm working on. (This could be a github projects page, but I find it much easier to work with Org -- which makes collaboration difficult. I'll keep this page updated though.)
The current level of modularity is not satisfactory! I share your plan and want to turn gptel into a collection of modules you can require as needed. This will also make contributing to gptel easier. Doing this requires figuring out the dependency order, which is tricky. The first step is clear though: place all the That leaves the following:
All of these are UI-focused libraries (except for The problem is that except for For example, All of these also don't have to be part of gptel -- although that makes drawing clear boundaries even more necessary. I'm okay doing things one at a time -- I will split
Hmm, I would start by seeing if you can reuse the underlying data structure -- which in this case is only I'll respond to your other questions (on RAG, replacing parts of gptel's UI etc) soon -- but I just wanted to mention that gptel's directives can be much more general than system message strings now. The entire context feature can be implemented as a single gptel directive. Are you aware of these changes? |
Beta Was this translation helpful? Give feedback.
-
TL;DR at the end.
Some time ago, my Emacs config file contained code which allowed gptel to highlight sections of buffers and conveniently passed them down to the model prompts. With great help from @karthink, this code was improved and refined down to gptel-context.el, to introduce what is now known as the gptel contexts feature.
This addition was not limited to
gptel-contexts.el
alone, but also had to have entries for it in the gptel-transient.el file for the transient menus, the main gptel.el file for custom variables & settings, and the backend files for proper context inclusion.This cemented the contexts feature as an inseparable part of gptel, much like the dedicated chat buffer. At the time, this did not seem to be an issue, because I thought model context was a very crucial system for many workflows.
After this, I've had many ideas on how to expand on the context feature, but they were outside of the scope of the level of simplicity that gptel tried to strive for, so I decided to make them into an extension, and so Evedel was born, which attempted to add improvements and expansions to the contexts idea I originally had in mind.
Evedel, as of right now, is almost completely independent from gptel, because all it uses is
gptel-request
. It does not even use the original contexts feature of gptel. In fact, calling it a gptel extension is dubious, which is something I would like to change.Evedel reached a stage of development where I would like to better integrate it with gptel: adding various gptel dedicated chat buffer integrations, being able to add transient menu entries to it, etc. I am unsure how to best approach this, and what to do with the original contexts of gptel, which--after Evedel is better integrated into gptel--will be made obsolete.
In an ideal world, at least in my opinion, gptel should offer at its core a unified API that is callable from Emacs through
gptel-request
, while everything else should be a modular extension. So, in this world, the chat buffer would be a core extension shipped with gptel. Developers could create these components to gptel which would be loaded independently. The current contexts feature should also be loaded as a default extension, as users are supposedly expect it by now. The core components could still be hosted in the main repository.Recently, a lot of discussions & issues were raised which concern the contexts feature, such as adding RAG (#492, #434, #322, #377, #305) , which is something I planned to eventually tackle in the extension. If those features become core gptel features, it might be harder for me to integrate Evedel in gptel down the road.
TL;DR:
Beta Was this translation helpful? Give feedback.
All reactions